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

VirtualBox 4.2.x에서 Ubuntu 12.10을 guest os로 쓸때 아예 WM이 제대로 올라오지 않거나

비정상적으로 느린 경우가 발생한다 (Compiz가 죽었다는 메시지가 나오는 경우도 있다).


3D 가속 관련 문제인듯하다. 자세한건 링크 참조.


내가 해결한 방법만 간추림:

$ sudo apt-get install linux-headers-$(uname -r) build-essential

$ cd /path/to/cd     # 아마도 /media/[login_id]/VBOXADDITIONS_...

$ sudo ./VBoxLinuxAdditions.run

$ sudo bash -c 'echo vboxvideo >> /etc/modules'

$ sudo reboot


refs:

http://askubuntu.com/questions/219655/ubuntu-12-10-on-virtualbox-compiz-error

http://askubuntu.com/questions/207813/why-does-an-ubuntu-12-10-guest-in-virtualbox-run-very-very-slowly/214968#214968


happy hackin'

간만에 방치(?)되어있던 테스트 박스에서 뭔가 작업을 하려고 했는데 버전이 좀 오래되어서 신경쓰였다.
버릇처럼 apt-get upgrade 했으나 필요한 파일들을 가지고 오지 못했다.
지원이 중단된 것이다. Orz.

해결은 배포판을 업그레이드 해야했다.
sudo do-release-upgrade

ref: http://www.ubuntu.com/desktop/get-ubuntu/upgrade

happy hackin'

가끔 필요할 때가 있다.
deb을 찾아서 깔면 된다.
직전 버전인 Jaunty에 있는 것을 깔자.

http://packages.ubuntu.com/jaunty/devel/gcc-3.4

같은 페이지에 있는 gcc-3.4-base와 cpp-3.4를 먼저 깔아야하는 의존성이 있다.

happy hackin'
djbdns를 설치하려했는데, 의존성이 걸린 daemontools-run이 제대로 설치 되지 않는 문제가 발생했다.
환경: ubuntu intrepid

에러 메시지:

[...]
Adding SV inittab entry...
cp: cannot stat `/etc/inittab': No such file or directory

dpkg: error processing daemontools-run (--install):
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
 daemontools-run

해결:

다음을 /etc/apt/sources.list에 추가해서 patch된 버전을 인스톨(apt-get update후 apt-get install)한다.
deb http://ppa.launchpad.net/amoog/amoog-devel/ubuntu jaunty main
deb-src http://ppa.launchpad.net/amoog/amoog-devel/ubuntu jaunty main

인증 관련해서 apt-get update가 실패하면
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com E6090F843576F6EDB9FB63DE24BDD6095AFE82CE

참고:

happy hackin'

[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에 설치할 때를 기준으로 좀 편리하게 정리했다. [본문으로]

[TIP] 내지는 잡담

tips & tricks/Linux/Unix 2008. 6. 21. 04:23 by manywaypark
집에서 좀 볼일이 있어서 회사 서버로 접속을 했다가 Ubuntu 서버들을 간만에 upgrade하려했더니 업데이트 서버에서 파일이 없다는 식의 에러가 나면서 안됐다.
살펴보니 edgy였다. http://(kr|us).archive.ubuntu.com/ubuntu/dists/ 에 직접 브라우저로 들어가서 살펴보니 egdy는 아예 디렉토리도 없다. Orz.
가만히 생각해보니 모든 서버를 Dapper (LTS)로 했다가, 한놈만 갑자기 죽는 현상이 있어서 egdy로 올렸던 것이 떠올랐다.

표준적인(?) 방법으로,
/etc/apt/sources.list에서 edgy를 몽땅 feisty로 바꾸고
apt-get update
apt-get upgrade
apt-get dist-upgrade
를 했는데,

다음과 같은 무시무시한 경고 메시지가 나왔다.
W: mdadm: unchecked configuration file: /etc/mdadm/mdadm.conf
W: mdadm: please read /usr/share/doc/mdadm/README.upgrading-2.5.3.gz .
W: mdadm: no arrays defined in configuration file.
W: mdadm: falling back to emergency procedure in initramfs.

'이거 잘못되면 주말에 회사 나가게 생겼구나. 3T짜리 레이드가 인식이 안될 수도 있겠다'

구글링을 해서 자료를 찾고, reboot을 하는 중에 계속 ping을 날리는데 ping
"Destination Host Unreachable"에서 "64 bytes from boxname (xxx.xxx.xxx.xxx)"으로 바뀔때 어찌나 기쁘던지...

해결법(google and copy and paste):
sudo apt-get remove mdadm
sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf # Press space to "uncheck" each item on the mdadm and mdadm-radi lines)
sudo apt-get remove grub
sudo apt-get install grub
sudo update-grub
sudo dpkg --configure -a

참고:https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/98911
일단 잡담부터...
서버쪽에서는 하드웨어 문제나 안정성 때문에 웬만하면 그냥 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'

invalid-file

package 압축파일

invalid-file

md5sum

"apt-get install devscripts build-essential fakeroot" 으로 대충 build에 필요한 기본 패키지들을 깔고,
만약 less를 빌드한다면 다음과 같이 해서 소스 받고 build에 필요한(의존성이 있는) 패키지들을 깔고

~$ apt-get source less
~$ apt-get build-dep less
빌드한다.
~$ cd less-###/
~$ fakeroot ./debian/rules binary

"../less_###_XXX.deb"가 생성된다.

"dpkg -i less_###_XXX.deb" 로 시스템에 설치할 수 있다.

"dpkg-deb -c less_###_XXX.deb" 로 .deb 파일의 내용을 확인할 수도 있다 (다른 사람이 만들어 놓은 .deb 파일을 구했을 때는 한번 해보는 것이 좋을 듯).

참고: http://www.debian-administration.org/articles/20 (약간 오래된 글이라 ./debian/rules를 사용하지 않는 듯하다.)

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

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

04-20 18:28