manywaypark's Blog
개발, 검색, 함수

[UTIL] scponly - 설치

tips & tricks/Linux/Unix 2008. 9. 21. 23:44 by manywaypark
환경 : ubuntu(64bit), x86-84
ssh 프로토콜만을 사용해서 sftp만 독립적(?)으로 실행하는, 안전한 scponly를 설치하는 방법을 설명한다.[각주:1]
ubuntu package를 설치하는 것만으로는 좀 미진한 부분이 있어 추가 설정에 관해서 알아본다. 
  1. root 권한으로 로그인후에,
  2. scponly package를 설치한다
    # apt-get install scponly
  3. 설정 스크립트 압축 풀기
    # cd /usr/share/doc/scponly/setup_chroot/
    # gzip -d setup_chroot.sh.gz
  4. 설정 스크립트(setup_chroot.sh) 편집 (64bit 시스템만 해당)
    다음과 비슷한 라인을 찾아서,
    LDSO_LIST="/lib/ld.so /libexec/ld-elf.so /libexec/ld-elf.so.1 /usr/libexec/ld.so /lib/ld-linux.so.2 /usr/libexec/ld-elf.so.1"
    다음과 같이 변경(ld-linux-x86-64.so.2 추가)
    LDSO_LIST="/lib/ld.so /libexec/ld-elf.so /libexec/ld-elf.so.1 /usr/libexec/ld.so /lib64/ld-linux-x86-64.so.2 /lib/ld-linux.so.2 /usr/libexec/ld-elf.so.1"
  5. 설정 스크립트 실행
    # sh ./setup_chroot.sh
    username, user_home_dir,  user_working_dir(요건 user_home_dir 밑에 위치하게 설정) 입력.
  6. /etc/shells에 scponlyc 추가
    which scponlyc >> /etc/shells
  7. SUID-Bit 설정
    chmod u+s `which scponlyc`
  8. dev 만들기
    # cd /home/username
    # mkdir dev
    # cd dev
    # mknod -m 666 null c 1 3
  9. sftp로 접속해서 파일 upload, download 테스트하기. 잘 안되면 다음 명령어로 debug message 확인해보기
    echo 2 /etc/scponly/debuglevel

참고: 

happy hackin'
  1. 참고 사이트 정리에 불과하다. :) 우분투 x86-64에 설치할 때를 기준으로 좀 편리하게 정리했다. [본문으로]

댓글을 달아 주세요

일단 잡담부터...
서버쪽에서는 하드웨어 문제나 안정성 때문에 웬만하면 그냥 Dapper LTS를 쓰려고했는데, sbcl이 0.9.8에서 더이상 버전이 안올라 가는 듯보였다. 내가 필요한 thread 및 timer기능이 온전하게 돌아가는 버전이 아니었다.

그래서 손쉬운 방법으로 서버 한대를 Edgy로 업그레이드를 해버렸다. 그런데, 이놈이 자주 죽는거 같더니 마지막으로는 부트파티션이 깨졌다. Orz.
아무래도 SATA RAID랑 궁합이 잘 안맞는다는 추측만 했다. 결론은 역시 LTS 버전이 안정적이라는 것.

이제 여기부터 backport이야기...
그래서 SBCL을 backport해보기로 했다.
날로 먹어버리겠다는 일념으로(좀 얍삽한가?) IDC에 있는 서버중에 동일 아키텍쳐(AMD64)에 Feisty가 깔려있는 곳에서 sbcl의 버전을 확인했더니 1.0이다. 충분하다! 그래서 그 머신에서 "apt-get source"로 소스를 받은 다음 통째로 Dapper LTS가 깔린 곳에 옮겨서 debian package를 만들었다.

"dpkg -i"".deb"파일을 설치하면 끝
이라고 생각했는데, 그게 아니였다. common-lisp-controller의 버전이 너무 낮다고 불평을 했다.
살짝 좌절했다. '이거 common-lisp-controller 하나만 더 가지고 온다고 될까? 그 놈을 설치하려면 또 다른 놈(들)에게 의존성이 걸려있는거 아닐까? 결국에는 시스템 전체 업그레이드?' 불안이 밀려왔다. 그래도 해보는데까지는 해보기로 했다. 어차피 내 잘못으로 빚어진 일이니 내 손으로 끝장을 봐야했다(데스크탑(edgy)에서 열심히 개발하고 서버(dapper)에 올리니 안돌아갔다. Orz).

비장한 각오로 common-lisp-controller를 위의 과정과 똑같이 backport했더니 그냥 해결됐다.
잠시 비장했던 마음가짐이 아까웠다.

잡설끝.

설치에 관한 간략한 설명:
  1. 먼저 dapper 박스에 sbcl이 안깔려 있다면 일단 깐다.
    ~$ sudo apt-get install sbcl
  2. 첨부파일을 다운로드 후에 적당한 곳에 압축을 풀고 패키지 두 개를 설치한다 (md5sum 체크도 한번 해주면 좋다).
    ~$ tar xvzf sbcl_1.0.0.0-1~dapper1_amd64.tgz
    ~$ sudo dpkg -i common-lisp-controller_6.1~dapper1_all.deb
    ~$ sudo dpkg -i sbcl_1.0.0.0-1~dapper1_amd64.deb
  3. 실행해보고 버전 확인한다.
    ~$ sbcl --version
    SBCL 1.0

대충 package cache 디렉토리 뒤져서 눈짐작으로 버전과 아키텍쳐사이에 ~dapper1을 넣는 것이 backport한 패키지의 명명법이란 것을 추측했는데 정확한 건지는 잘 모르겠다.
하고 나서 보니 backport라기보다는 build가 아닐까 하는 생각도 좀 든다. ^^;

happy hackin'

댓글을 달아 주세요

cl-sql 사용하기

함수형 언어/Lisp 2007. 5. 29. 14:01 by manywaypark
cl-sql은 common lisp에서 여러 종류의 DB backend에 접근하는데 사용할 수 있는 package이다.
간단히 (asdf-install:install 'clsql)로 될줄 았았는데, 잘 안됐다. library 로딩에 실패하고 어쩌구...
혹시나 하는 마음에 ubuntu(debian) packaging system apt를 이용해보기로 했다.
$ apt-cache search clsql
cl-sql - SQL Interface for Common Lisp
cl-sql-aodbc - CLSQL database backend, AODBC
cl-sql-mysql - CLSQL database backend, MySQL
cl-sql-odbc - CLSQL database backend, ODBC
cl-sql-postgresql - CLSQL database backend, PostgreSQL
cl-sql-postgresql-socket - CLSQL database backend, PostgreSQL
cl-sql-sqlite - CLSQL database backend, SQLite
cl-sql-sqlite3 - CLSQL database backend, SQLite3
cl-sql-tests - Testing suite for CLSQL
cl-sql-uffi - Common UFFI functions for CLSQL database backends
cl-sql-oracle - CLSQL database backend, Oracle
오호라, 필요한건 다 있는 거같다.
$ sudo apt-get install cl-sql cl-sql-mysql
......
sbcl을 실행하고 테스트해봤다.
$ sbcl
......
* (require 'clsql)

; loading system definition from /home/USER/.sbcl/systems/uffi.asd into
; #<PACKAGE "ASDF1">
; registering #<SYSTEM UFFI {10028CA001}> as UFFI
NIL
* (require 'clsql-mysql)
......
Couldn't load foreign libraries "libmysqlclient", "libmysql". (searched CLSQL-SYS:*FOREIGN-LIBRARY-SEARCH-PATHS*)
......
엥? 에러 컨디션?
사실 (require 'clsql-mysql)은 직접 호출하지 않아도 connect류 등의 관련 함수를 부르면 자동으로 올라오는데 그것들도 다 실패했다. 시스템에는 libmysql*이 전부 설치되어있었다.
이 문제는 다음 두가지 방법 중 하나를 선택해서 해결할 수 있다.
해결책1: 직접 uffi를 이용해서 library를 로딩. (참고:http://common-lisp.net/pipermail/cl-debian/2006-May/001287.html)
CL-USER> (uffi:load-foreign-library "/usr/lib/libmysqlclient.so.15")
해결책2: symbolic link 생성.
$ sudo ln -s /usr/lib/libmysqlclient.so.15.0.0 /usr/lib/libmysqlclient.so
(library 버전 번호는 필요한 것으로 선택한다.)

테스트:
CL-USER> (require 'clsql)
......
;;; connect params: host, db, user, password.
CL-USER> (clsql:connect '("localhost" "mysql" "root" "") :database-type :mysql)
#<CLSQL-MYSQL:MYSQL-DATABASE localhost/mysql/root OPEN {1003707EF1}>
CL-USER> (clsql:status)
CLSQL STATUS: 2007-05-28 21:21:31,,0
-----------------------------------------
   DATABASE              TYPE   RECORDING 
-----------------------------------------
*  localhost/mysql/root  mysql  nil       
-----------------------------------------
; No value
CL-USER> (clsql:list-databases '("localhost" "mysql" "root" "") :database-type :mysql)
("information_schema" "mysql")
CL-USER> (clsql:query "select * from user")
......
CL-USER> (clsql:disconnect :database (clsql:find-database "localhost/mysql/root"))
T
CL-USER> (clsql:status)
CLSQL STATUS: 2007-05-28 21:48:23,,0
; No value

참고: apt를 이용해서 lisp 모듈을 설치하면, /usr/share/common-lisp/ 아래에 설치된다. 소스 참고시 유용하다.

2008-04-15 :
oracle을 backend로 쓰려면 instant client download 페이지에서 필요한 파일을 다운로드 받아 특정 디렉토리에 압축을 풀어놓고 그 디렉토리를 LD_LIBRARY_PATH 환경변수에 추가하면 된다. 물론 위의 해결책2에서 처럼 symbolic link를 걸어주는 작업(버전 번호를 떼주는...)이 필요하다.

happy hackin'

댓글을 달아 주세요

Ubuntu edgy AMD64에서 eclipse사용하기

java 2007. 2. 3. 15:41 by manywaypark
https://launchpad.net/ubuntu/+source/eclipse/+bug/68053
상기 링크에 여러 해결법들 및 논의들이 나오지만, 현재 기준으로는 거의 맨 아래쪽의 Tobias가 말한 대로 하면 해결되는 듯하다.
내용을 요약하자면, apt source list에 edgy-proposed를 추가한 후에 eclipse 관련 package들을 upgrade한다.

/etc/apt/source.list에 다음 라인 추가:
deb http://archive.ubuntu.com/ubuntu/ edgy-proposed universe main multiverse restricted


upgrade할 패키지 리스트:
eclipse 3.2.1-0ubuntu2
eclipse-jdt 3.2.1-0ubuntu2
eclipse-pde 3.2.1-0ubuntu2
eclipse-platform 3.2.1-0ubuntu2
eclipse-rcp 3.2.1-0ubuntu2
eclipse-source 3.2.1-0ubuntu2

libswt3.2-gtk-java 3.2.1-0ubuntu2
libswt3.2-gtk-jni 3.2.1-0ubuntu2


현재 내 설정:
$ uname -a
Linux desktop 2.6.17-10-generic #2 SMP Tue Dec 5 21:16:35 UTC 2006 x86_64 GNU/Linux
$ java -version
java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_08-b03, mixed mode)


happy hackin'

댓글을 달아 주세요

1 
분류 전체보기 (306)
잡담 (20)
함수형 언어 (65)
emacs (16)
java (18)
tips & tricks (154)
사랑 (1)
가사 (0)
독서 (4)
mobile (6)
비함수형 언어 (2)

공지사항

최근에 받은 트랙백

01-25 23:17