Leopard의 X11은 Tiger시절의 X11과는 차이가 있다.

내가 이상했던 몇가지 사항은 X11.app 를 단독 실행하면 같이 뜨는 xterm을 마음대로 뜨지 않게 바꾸는게 타이거와 다르다는 사실과 xterm에서 $PATH등의 환경변수가 잘 로딩되지 않는다는 사실이다.

잘 몰랐던 사실이지만 forums.macosxhints.com의 X11관련 게시판을 둘러보면 많은 정보를 얻을 수 있다. 거기 말로는 Leopard에서는 DISPLAY를 체크해서 X윈도우가 필요한 프로그램이 접근시 launchd가 자동으로 X11을 실행한다고 한다. 경로를 제대로 표현하는 경우를 해결해서 사용할 때는 터미널에서 xterm을 커맨드로 쳐서 실행하라고 한다.

처음에 뜨는 xterm을 뜨지 않게 하려면 노을러브님의 글처럼 User agents중 하나인 org.x.X11에서 app_to_run 값을 xterm에서 다른 적절한 것으로 바꾸어주면 된다.

그리고 path_helper: sometimes Apple does kludgy, stupid things와 Mastering the path_helper utility of MacOSX란 글을 보면 레퍼드에서 경로관리를 위한 path_helper란 스크립트를 잘 설명하고 있다.

그런데 Tom 의 사이트에 가 보면 MANPATH의 문제에 대해 언급이 되어 있다. 무엇이냐 하면 MANPATH가 선언되어 있을 경우 man.conf의 설정을 무시하게 되는 것이다. 그런데 이게 왜 문제가 되는가 하면 path_helper의 경우 PATH처럼 /etc/manpath 와 /etc/manpath.d의 파일들을 기준으로 MANPATH를 만들어 버리기 때문에 man.conf의 설정이 완전 무시된다. 그래서 man.conf의 조금 지능적인 MANPATH 설정과는 거리가 있는 MANPATH가 생성되게 된다. 해결책은 한 방향으로 쭉 사용하는 것이고 man.conf를 살리기 위해서는 initial 스크립트에서 MANPATH를 해제 하도록 넣어주면 된다.
신고
Posted by trip2me

Add a comment

TCP/IP over IEEE1394

Mac_life 2008.07.26 00:18
KLDP의 ashuaria님의 글을 참고해서 맥을 사용하는 노트북의 IEEE 1394a 포트를 리눅스 데스크탑과 연결해 보았다. 글에서처럼 이상하게도 modeprobe.conf에 alias를 줘서는 IEEE1394가 ehternet장치로 등록이 되지 않았다. 이유는 eth1394모듈이 커널에 올라오지 않기 때문이었다. 그래서 결국 insmod를 이용해 글에 있는것처럼 수동으로 모듈을 올려주면 IP over IEEE 1394 가 가능했다. 리눅스 2.6.x 커널 구현때문에 DHCP를 이용할 수 없다고 하지만 이건 다른 해결책을 강구해 보아야겠다 지금 상황에서는 윈도우처럼 편하게 연결해서 쓰기는 힘들듯 하다.
속도는 대략 스펙보다는 조금 떨어지는 270MBPS정도가 나온다. 노트북이란 상황과 아무래도 속도에 최적화 되지않은 커널 모듈사용에 기인할 수도 있다.
신고
Posted by trip2me

Add a comment

우연히 어쩌다가 지인을 통해서 조판업체에 CentOS를 설치하고 Netatalk를 설치를 하게 되었다.

개인적으로 타이거에서 CentOS에 설치한 AFP over TCP/IP로 접속하는 것은 별 문제가 없어서 원래 Netatalk 포스팅에서는 그리 설정과 참고사항에 대한 언급이 적었다. 하지만 이번에 Mac OS 9과 Mac OS X를 섞어쓰는 환경에서 하루 수십기가의 대량 자료 전송과 동시 작업자들이 작업을 하는 파일서버를 다루면서 이런저런 당황스런 경우를 겪어서 해결을 위해 이리저리 알아본 바를 여기에 포스팅한다.
다시 말하지만 지금의 포스팅은 약 20여대의 맥들이 동시에 동일한 아이디로 연결되서 여러 파일을 읽고 쓰는 Netatalk local network서버에서 설정하고 겪은 경우를 기술한다. 두서가 없는 글이라도 양해를 구한다.

일단 한국 출판업계의 숙적인 쿽3.3K 때문에 아직도 클래식맥을 사용하는 곳이 많다는 것을 새삼 느끼게 되었다. 이런 말을 하는 이유는 이 OS9와 OS X의 동시 접속 사용때문에 많은 일들이 일어나기 때문이다. 그리고 원래 netatalk 패키지는 동양언어 인코딩을 고려하고 있지 않았기 때문에 일본인이신 HAT님의 cjk패치를 해 주어야 한다. 그리고 한글사용 때문에 또 몇가지 다른 문제가 일어나게 된다.

일단 세팅을 하기 위해서는 환결설정화일이 있는 디렉토리에 있는 파일들을 살펴 보아야 한다. 설정을 하는 파일의 자세한 설명은 개인적으로 살펴 본 바 man page가 가장 충실했다. 그래도 기본 메뉴얼을 훑어보는 것은 도움이 되며 FAQ를 보면 DB를 복구하는 cnid_index라는 유틸의 사용법과 결과가 어디에 나오는지 설명이 그나마 자세히 나온다.

설정할 파일들이 몇가지 있는데
netatalk.conf - Netatalk 전체적인 설정을 해 주는 파일
afpd.conf - 파일공유를 위한 데몬을 위한 설정을 하는 파일
atalkd.conf - AppleTalk연결을 위한 설정 파일
papd.conf - 프린트공유를 하기 위한 설정파일
AppleVolumes.default - 공유를 할 마운트 포인트를 설정하는 화일
AppleVolumes.system - 화일별 특성을 지정하는 파일. 수정이 그리 필요하지는 않다.


이 중에 맥들이 공유 이름으로 AppleTalk연결을 하고 파일 서비스를 하기 위해서 AppleTalk서비스와 AFP서비스를 이용해야 하므로 수정한 파일은 netatalk.conf, atalkd.conf, afpd.conf, AppleVolumes.default, 이다.


먼저 netatalk.conf 파일을 보면
AFPD_MAX_CLIENTS=64 #동시 접속자 수를 정한다.
ATALK_NAME=`echo ${HOSTNAME}|cut -d. -f1` # AppleTalk 서비스시 보일 이름을 지정한다.

#-------- 클라이언트(맥)과 서버측 OS 인코딩처리 형식을 지정한다.
ATALK_MAC_CHARSET='MAC_KOREAN'
ATALK_UNIX_CHARSET='utf8'

# 파일서비스 접속시 인증받을 방식을 정한다.
AFPD_UAMLIST="-U uams_dhx.so"

# Netatalk 서비스 시작시 실행해 줄 서비스들을 선택한다.
ATALKD_RUN=yes
PAPD_RUN=no # 프린터 공유를 위한 서비스
CNID_METAD_RUN=yes # DBD 방식으로 db를 접근 할 때 필요하다.
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

# 백그라운드로 돌아가게 할지 설정
ATALK_BGROUND=no

# 파일공유 게스트 사용자ID 설정
AFPD_GUEST=nobody

# 환경변수 등록.
export ATALK_MAC_CHARSET
export ATALK_UNIX_CHARSET



afpd.conf의 경우는
- -transall -uamlist uams_dhx.so -nosavepassword -maccodepage MAC_KOREAN -unixcodepage UTF8
# 하나의 가상 서버에 AFP over TCP, AFP over AppleTalk를 접근가능하게 하고 PAM을 이용한 인증을 하며, 암호를 저장하지 않고, 맥과 유닉스쪽 인코딩방식을 지정한다.


AppleVolumes.default
/data "share" maccharset:MAC_KOREAN volcharset:UTF8 adouble:v2 cnidscheme:cdb veto:/lost+found/
#/data 디렉토리를 share란 이름으로 공유를 하고 각각의 문자셋을 정하고 리소스 포크 처리방식을 v2로 하고 CNID처리를 CDB라는 방식으로 하며, lost+found란 이름이 들어간 디렉토리는 숨긴다



매뉴얼을 읽어보면 기본으로 netatalk는 UTF-8을 기본 인코딩으로 지원하고 있다고 하는데 문제는 Mac OS 9의 경우 한국에서는 MAC_KOREAN을 기본 인코딩으로 사용되므로 이를 고려해야 한다. 다행히도 클래식 클라이언트에서 netatalk에 연결을 할 때 AFP2.2 이하 프로토콜을 쓰게 되므로 인코딩을 지정하라는 메시지를 보게 되므로 문제는 없다. 그리고 위 설정 화일에 화일 인코딩을 잘 설정해 놓으면 자동으로 한글 이름을 UTF-8로 바꾸어 주게 된다. 그런데 클래식과 OS X의 파일시스템에 차이가 있기 때문에 파일명 길이 제한도 다르고 특수문자의 코드도 다르기 때문에 동시에 사용하는 환경이라면 가급적 키보드에 없는 특수문자를 사용하지 않는게 바람직하다. 아니면 netatalk를 빌드할 때 --disable-afp3를 지정해서 애초에 모든 클라이언트가 AFP2.x로 접속하게 강제를 하는 방법도 있다.

또한 한가지 문제가 클래식 맥에서 사용하는 리소스 포크라는 개념이다. 이것 때문에 실제 클래식 맥을 사용하는 출판업계에서 어쩔 수 없이 netatalk를 공유 서버로 사용해야한 이유가 있다. 그런데 문제는 netatalk가 완전하지 않기 때문에 얘기치 않은 일로 인해서 저장된 데이터베이스가 오염되는 경우가 발생할 수 있다. 최악의 경우 리소스쪽 연결이 모두 깨어지고 AFP연결이 클라이언트에서 되지 않는 경우가 생긴다.
이 때 해결책을 여기저기 검색해 본 결과 체크 및 복구툴인 cnid_index란 툴을 써 보고 그래도 되지 않을 경우, 딱히 명쾌한 방법은 없지만 일단 연결이 되지 않던 공유를 연결하기 위해서 .AppleDB라는 CNID데이터베이스가 저장된 곳을 삭제해 주면 된다. 이렇게 하면 리소스 포크가 망가지게 되는데 이때는 resedit등을 이용해서 기존의 데이터 파일을 가지고 복구를 하면 된다고 한다. 나의 경우도 이런 경우가 발생해서 결국 자료를 날리는 일이 있었기는 했다. 그리고 이렇게 오염을 막기 위해서는 CNID 데이터베이스에 접근하는 방식을 지정하면 되는데 기본이 동시에 여러 사용자가 락을 걸고 쓰는 CDB에서 하나의 데몬을 통해서만 데이터베이스에 접근하는 DBD방식으로 바꾸면 되는데 속도의 감소가 있다고 한다. 그리고 데이터베이스가 망가지지 않게 하기 위해 절대 SIGKILL로 데몬을 죽이지 말고 서비스 명령을 통해서 서비스를 올리고 내리기 바란다.

이전의 설정에 맥쪽 한글 인코딩을 클래식 맥을 위해 MAC_KOREAN이라고 했는데 이것이 OS X와 같이 있는 환경에서 사소한 에러 메시지를 내는 원인이 되기도 한다. afpd는 접속한 쪽 인코딩을 인식하지 못하기 때문에 설정한 대로 인코딩을 변환하려 하기 때문에 가령 로그 메시지에서 afpd[29663]: Conversion failed ( UTF8-MAC to CH_UCS2 ) 혹은 afpd[29498]: Conversion failed ( MAC_KOREAN to CH_UCS2 ) 과 같은 에러를 볼 수 있다. 물론 둘 다 사용에 지장을 주지는 않겠지만(인코딩이 실패하면 그대로 저장한다.) 로그가 쭉쭉 쌓이게 될 수도 있다. 나의 경우 하루에 100메가 가량의 에러로그가 쌓이고 있다. 그렇다고 EUC-KR등의 다른 인코딩을 쓴다고 해서 해결된 문제도 아니다. 그래서 위에서 언급한 --disable-afp3 를 통한 강제 AFP 2.2연결을 시도해 보는 것이 짧은 파일명의 제한이 있지만 괜찮은 솔루션이 아닐까 한다. 하지만 역시나 바로 파일 시스템에 접근해 쓰기를 시도하면 역시나 에러를 낼 수 있다.

그리고 레퍼드에서 사용하는 타임머신의 경우 개발버전인 netatalk 2.1dev에서 구현중이지만 아직 제대로 서비스에 대한 구현이 되어 있지 않아서 작동이 원활히 되는지는 잘 모른다. 하지만 굳이 OS X 부터 리소스 포크를 하지 않는 이상 AFP를 이용해서 공유를 고집하지 않아도 될 듯 하다. 또한 기본적으로 .등의 문자는 hex translation이라는 방식을 통해 :2e 의 형식으로 바뀌게 되는데( 클래식맥에서 이렇게 CAP인코딩을 한다고 한다) 이를 해제하기 위해서는 AppleVolumes.default 메뉴얼을 보기 바란다. 거기에 몇가지 더 유용한 옵션들이 있다.

다른 문제가 있을 경우 netatalk홈페이지에 있는 메일링 리스트를 검색해 보는 것이 제일 빠를 듯 하다.
신고
Posted by trip2me

Add a comment

  1. Favicon of http://www003.upp.so-net.ne.jp/hat/netatalk/ HAT 2008.07.18 22:44 신고  Comment address  Modify/Delete  Add comment

    I do not think that dbd is slow.
    The dbd should be used for stability.

    • Favicon of http://trip2me.tistory.com trip2me 2008.07.21 00:16 신고  Comment address  Modify/Delete

      I just read about Netatalk's manunal of official homepage.

      It said dbd scheme is slower than cdb. Because cnid_metad of dbd is the only way to access databse.

      http://netatalk.sourceforge.net/2.0/htmldocs/AppleVolumes.default.5.html


      But I never tested it practically. So I think you have more experience and internal code knowledge than I.

      And I changed some company's netatalk db backend to use dbd scheme. And they will report one week later.
      They want to stability first, and affordable speed too.

  2. Favicon of http://www003.upp.so-net.ne.jp/hat/netatalk/ HAT 2008.07.18 22:54 신고  Comment address  Modify/Delete  Add comment

    Which character is used when this error output?
    THis error doesn't output usually.

    • Favicon of http://trip2me.tistory.com trip2me 2008.07.21 00:31 신고  Comment address  Modify/Delete

      Um... I checked the error by replaying the situation.
      It turns out that they were using old quack v3.3 in Mac OS X. Quark 3.3 is a OS 9's application. and it's essential for them to make some work. I think some operation of it is the cause of error. It's not your cjk patch's fault.
      Path in error messages, it ends always illegal character, not UTF-8-MAC. It is all that I know.

      I always appreciate you for your consideration. ;-)

  3. Favicon of http://www003.upp.so-net.ne.jp/hat/netatalk/ HAT 2008.07.21 00:37 신고  Comment address  Modify/Delete  Add comment

    Unstable operation is fatal for business.
    When using by a lot of users, cdb becomes unstable.
    If dbd is slow, hardware is ability shortage.

  4. Favicon of http://www003.upp.so-net.ne.jp/hat/netatalk/ HAT 2008.07.21 00:53 신고  Comment address  Modify/Delete  Add comment

    Maybe, MacRoman character is used from Korean Mac OS9.
    Is my imagination correct?

  5. Favicon of http://www003.upp.so-net.ne.jp/hat/netatalk/ HAT 2008.07.24 02:35 신고  Comment address  Modify/Delete  Add comment

    maybe, similar to http://www.linuxsir.org/bbs/showthread.php?t=274909

  6. Favicon of http://www003.upp.so-net.ne.jp/hat/netatalk/cjk.html HAT 2009.01.16 02:13 신고  Comment address  Modify/Delete  Add comment

    2.0.4 will support CJK.

  7. Favicon of http://www003.upp.so-net.ne.jp/hat/netatalk/cjk.html HAT 2009.04.26 23:52 신고  Comment address  Modify/Delete  Add comment

    2.0.4rc1 support CJK.

  8. 은지pa 2009.05.29 11:51 신고  Comment address  Modify/Delete  Add comment

    네이버카페서 링크따라 왔습니다.
    그나저나 이곳도 NAS에 질문 올리전에 봤었는데..
    설명을 잘 읽어보고 다시 시도해봐야겠군요.
    감사합니다.

  9. Favicon of http://www003.upp.so-net.ne.jp/hat/netatalk/cjk.html HAT 2009.05.30 23:55 신고  Comment address  Modify/Delete  Add comment

    2.0.4 released.

  10. Favicon of http://windrei.tistory.com 꿀빠는게 내인생 목표 2010.01.27 11:50 신고  Comment address  Modify/Delete  Add comment

    # 파일서비스 접속시 인증받을 방식을 정한다.
    AFPD_UAMLIST="-U uams_dhx.so"

    uams_dhx.so 이 파일이 어디에서도 보이지 않네요 ;;

    Jan 27 10:35:25 afpd[24456][auth.c:1032]: D5:AFPDaemon: uam: loading (/usr/local/etc/netatalk/uams/uams_dhx.so)
    Jan 27 10:35:25 afpd[24456][auth.c:1044]: I:AFPDaemon: uam: uam not found (status=-1)

    현재 상태는 일단 구동은 됩니다!! 구동은...

    10.5 이하 버전에서는 로그인도 됩니다.
    타이거에서는 로그인은 되는데 AppleVolumes.default 에 지정해놓은
    사용자설정이 되지가 않네요
    /home/test "test" allow;test,@test
    레오파드 부터는 인증이 안되는지 로그인이 안된다는 메세지만
    뿌려주네요... 구글을 뒤져봐서 이것저것 세팅해봤지만 잘안됩니다.

    도움좀 요청하겠습니다.

    아 그리고 사용자별로 들어갈수있는 폴더지정을 AppleVolumes.default 에 넣어야 만 되나요?

    그냥 로그인하면 사용자 정보에의해 로그인사용자의 홈디렉토리로
    사용할수 없는가요? 버전은 2.0.5로 사용하였습니다.

    도움좀 요청합니다.

    ps
    아 그리고 게스트 모드는 어디에서도 접속이 됩니다!! =ㅅ=);;;

    왜이럴까요 ㅠㅠ

    • Favicon of http://trip2me.tistory.com trip2me 2010.01.27 13:52 신고  Comment address  Modify/Delete

      안녕하세요.

      글을 쓸 때 즈음에 설치해 준 이후로 써 본적이 없어서 잘 알려드릴 수는 없지만 일단 제가 알고있는 선에서 답변드립니다

      일단 uams_dhx.so 파일은 제가 설치한 곳을 살펴보니
      /etc/netatalk/uams/uams_dhx.so
      에 위치하고 있네요. 제가 컴파일할 때 설정화일 저장 위치를 /etc로 해 두어서 그런듯 합니다. 그리고 혹시 전체 파일 시스템을 find / -name uams_dhx.so 해서 뒤졌으나 찾지 못했다면 혹시나 netatalk 상위 버전 혹은 설치한 리눅스 배포본의 상황에 따라서 다를수도 있지 않을까 생각됩니다. 그것은 정확하게 제가 살펴보지 않았으니 뭐라 답을 드리기 어렵습니다.

      AppleVolumes.default 설정에서 인증이 안된다는 메시지는 위 uams_dhx.so 인증모듈이 로딩되지 않아서 아닐까 하는 생각이 듭니다. 게스트 모드는 uams_guest.so 모듈을 써야하는것이간 한데 인증이 되지 않아도 가능하기에 연결이 되는게 아닐까요?

      그리고 홈디렉토리 설정은 저도 메뉴얼을 살펴보지 않아서 관련 설정이 있는지 없는지 잘 모르겠네요. : ) 일단 메뉴얼을 살펴 보시고 그래도 모르시겠다면 Netatalk 메일링 리스트 검색을 한 후 없다면 질문을 한번 올려보시는 것도 좋을듯 합니다.

  11. Favicon of http://windrei.tistory.com 꿀빠는게 내인생 목표 2010.01.29 14:17 신고  Comment address  Modify/Delete  Add comment

    아 2일만에 겨우 끝냈네요

    pam 인증 문제더군요 ^^

    제가 CentOS라서 yum install 로 간단하게 끝냈습니다

    yum install pma-devel*
    설치후

    configure 에 다음의 옵션을 넣어주니 레오파드에서도 인증이 잘되네요 ^^

    --with-pam --with-shadow

    감사합니다 많은 도움이 되었습니다 ^^*

  12. 끝없는도전의연속 2011.06.08 13:28 신고  Comment address  Modify/Delete  Add comment

    님의 글이 완전 많은 도움이 되었습니다. 초보인 저로써는 너무 감사할 따름입니다. ^^

리눅스에서 습관적으로 pkill을 사용하다가 맥에서도 당연히 있으리라고 pkill을 했지만 되지 않았다.

알고보니 pkill은 기본 유틸리티가 아니었다. 그래서 pgrep, pfind, pkill을 사용하려면 스크립트를 사용하거나 BSD계열을 위해 만든 proctools라는 유틸들을 받아서 빌드하여 사용하면 된다. proctools는 이미 macport에 포팅되어 있는 간단한 프로그램들이므로 macport를 이용해도 된다.

또 몰랐던 나의 실수는 사실 BSD계열에 killall 이란 명령이 있다는 것이다. 이 녀셕이 대략 pkill과 같은 부류의 명령이다. pgrep, pfind는 ??? 글쎄.... 아마 killall에 옵션을 주거나 다른 명령을 조합하면 될지도~
신고
Posted by trip2me

Add a comment

scheme을 사용하기 위해 이런저런 scheme구현을 빌드하고 있다. 그중 SICP책에서 사용하는 scheme구현인 MIT-Scheme을 빌드하기 위해 최근 스냅샷을 받아서 빌드하려고 안간힘을 썼다. 처음에는 바이너리를 받아서 설치하니까 .dylib가 있는데도 이미지가 없다고 에러를 내기에 아마도 레퍼드의 동적라이브러리를 사용하기 때문이라고 판단하고 소스 빌드를 시도했다.

그런데 또 하나의 문제가 소스를 빌드할때도 역시나 sbcl처럼 자기자신의 컴파일러가 필요했다. 이런.... 쳇.

결국 한참 삽질을 하다가 이전 스냅샷 릴리즈중에 mit-scheme-20070909-ix86-apple-darwin.tar.gz 바이너리를 일단 받아서 /usr/local 아래에 모두 설치한 후 다시 최신 소스 스냅샷을 받아 빌드했다. 소스 버전이 몇가지 되는데 바이너리가 작동 된다면 그냥 Source (.tar.gz) 버전을 받아서 설치하면 된다. 굳이 portable-c버전을 받을 필요는 없다. 어차피 두 소스 다 바이너리가 설치되어 있지 않으면 빌드가 불가능하다. ㅡㅅㅡ;

레퍼드라면 이런 삽질을 하지는 않았을텐데... 왜 미리 레퍼드라고 사이트에 알려놓지 않은건지... 어제 설치한 gambit-c도 자기 마음대로 버전넘버를 prefix에 집어 넣어서 짜증나게 만들더니...
신고
Posted by trip2me

Add a comment

몇몇 GNU유틸을 빌드하다가 /usr/local/man의 man page들이 man으로 볼 수 없다는 사실을 알았다. 그래서 구글링을 해 보니 MacOSFix missing man pages for self-installed utilities - macosxhints.com에서 언급을 하고 있더라. 알고보니 /usr/share/misc/man.conf의 설정에 원인이 있었다.

그리고 /usr/share/man/whatis 는 간단히 유틸들의 설명을 하는 whatis의 인덱싱파일인데 이게 /usr/local/share/man/whatis 에 또 있었다. 이 화일들이 몇몇 유틸들을 설치 후 업데이트가 안되는 듯 했다. Rebuild Mac OS X whatis database에서 Mac OS는 주마다 이 파일을 업데이트 하는 makewhatis가 /etc/periodic/weekly에 있는 실행이 된다고 한다. 그래서 강제로 한번 실행을 해 주고 확인을 해보니 /usr/local/share/man/whatis는 업데이트가 되지 않았다. 그래서 /etc/periodic/weekly에 있는 파일을 열어 보았더니 makewhatis를 실행하는 부분이 아래와 같았다.
if [ -x /usr/libexec/makewhatis.local ]; then
echo ""
echo "Rebuilding whatis database:"
if [ -d /usr/X11R6/man ]; then
MANPATH=${MANPATH:-/usr/share/man:/usr/X11R6/man:/usr/local/man}
else
MANPATH=${MANPATH:-/usr/share/man:/usr/local/man}
fi
makewhatis.local "${MANPATH}"
fi

결국 /usr/local/share/man 디렉토리가 빠져 있었던 것이다. 아마도 원래 Mac이 설치되면 /usr/local/share아래는 없어서 그런가 보다. 그래서 /usr/local/share/man를 두 부분에 추가하고 다시 스크립트를 어드민권한으로 시작해 주니 잘 된다.

ps. 맥에서 find대신 쓸만한 검색 툴이 두가지 있는데 하나는 locate란 녀석이고 하나는 spotlight이다. 둘 다 커맨드라인에서 사용이 가능하다. 단지 locate는 무지 빠르긴 한데 미리 인덱스 파일에서 찾는 것이라 인덱스파일의 업데이트가 주마다 되서 조금 사용시 잘 안될수도 있다.(The locate database). 그리고 makewhatis는 /usr/libexec에 있다.

또 man이 간략한 정보를 제공한다면 info는 자세한 매뉴얼을 제공하는 하이퍼링크를 지원하는 유틸인데 이것 또한 dir라는 이름의 인덱스파일을 만든다. 이것을 수정하는 유틸이 install-info라는 것인데 이것은 여기저기 /usr/local/info와 /usr/local/share/info 를 모두 검색해서 보여주는 듯 하다.
신고
Posted by trip2me

Add a comment

emacs를 사용하기로 하고 세팅을 했다

먼저 lisp사용을 위해서 http://onlisp.blogspot.com/글들을 참고했다. 이전에 emacs는 GNU emacs 소스를 새로 다운받아서 빌드했었는데 추가로 common lisp구현을 위해서 sbcl도 macport로 설치 후 다시 sbcl소스를 받아 빌드했다. 그리고 slime도 받아서 추가하고 .emacs를 수정했다.

그런데 실행하고 나서 한글 입력이 잘 되지 않았다.

여기저기 구글링을 해 보니 설정을 ~/.emacs에 추가로 해 주어야 했다.
우선 http://emacs.kldp.org/에서

; Korean language support
(require 'cl)
(when enable-multibyte-characters
(set-language-environment "Korean")
(setq-default file-name-coding-system 'utf-8)
;; (setq default-korean-keyboard "3")
;; (setq input-method-verbose-flag nil
;; input-method-highlight-flag nil)
(set-terminal-coding-system 'utf-8 )
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
;(set-file-name-coding-system 'utf-8)
;(set-w32-system-coding-system 'utf-8)
(setq-default file-name-coding-system 'utf-8)
(setq-default buffer-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(unless window-system
(set-terminal-coding-system 'utf-8)
(when (boundp 'encoded-kbd-mode-map)
(define-key encoded-kbd-mode-map [27] nil)))

(set-selection-coding-system 'compound-text-with-extensions)
; Mail setting
(setq-default sendmail-coding-system 'utf-8))
(unless (or enable-multibyte-characters window-system)
(standard-display-european t)
(set-input-mode (car (current-input-mode))
(nth 1 (current-input-mode))
0))

을 집어 넣었다. 현재 맥에서 사용하는 UTF-8 인코딩을 쓰기 위해서인데 뭔가 중복되는 부분을 제거해도 될 듯 하다. 이렇게 설정하면 한글입력은 잘 되고 표시도 잘 된다.

그리고 또한 slime에서도 한글이 잘 되게 하기 위해 kaisyu님의 글을 참고해서 아래를 ~/.emacs에 추가했다.

;; UTF-8 인코딩을 기본으로 사용 --> 한글 symbol 사용을 위해
(setq slime-net-coding-system 'utf-8-unix)

Technorati Tags: , , ,

신고
Posted by trip2me

Add a comment

Unix계열인 맥에서도 screen이란 다중 윈도우를 지원하는 터미널 유틸리티이다.
느린 터미널에서 출력이 많을 경우나 잠시 작업을 터미널에서 떨어뜨려 놓을때 유용한 프로그램이다. iTerm을 사용해서 자주 사용하지 않게 되긴 했지만 여전히 가끔은 유용한 경우가 있다.

그런데 사용을 해 보면 몇가지 팁을 적어둔다.

1. UTF-8 한글 입출력 설정
매뉴얼을 보면 .screenrc 에 defutf8 on 을 하면 된다고 하지만 잘 되지 않더라. 그래서 왜 그런지 이유는 잘 모르겠으나 screen시작시 '-U' 옵션을 주면 된다. 그게 결국 위의 옵션을 지정한 것과 같은것인데 왜 실행인수로는 잘 되고 환경설정파일에서는 안되는지...

2. 상태표시줄 설정.
.screenrc에 몇가지 설정을 하면 상태 표시줄을 표시해서 몇변째 스크린인지 표시되게 하면 편리하다.

defhstatus "<^En-^Et> ^EW [^EM/^Ed(^ED) ^Ec]"
hardstatus lastline

대략 이렇게 하면 된다. ^En 은 현재 창번호를 ^Et는 현재 창 타이틀을 ^EW 는 나머지 창들에 대해서 표시한다.

3. 화면 스크롤 사이즈 조절
.screenrc에 아래 내용을 설정하면 스크롤사이즈를 1000라인으로 설정하게 된다.

defscrollback 1000

스크롤이 무엇이냐 하면 스크린 내용을 마우스를 사용하지 않고 내부 버퍼에 들었던 내용을 스크롤 할 수 있게 하는 것이다. Ctrrl-a [ 을 하면 그때부터 copy mode이다. 이 상태에서 vi식의 단축키로 돌아다닐 수 있다. 그러다가 space를 눌러서 일정 영역을 선택한 후 다시 space를 누르면 내부 버퍼에 복사가 된다. 그 내용을 붙여넣기 하고 싶으면 Ctrl-a ] 하면 된다. 이동중에 빠져나오려면 Esc Esc하면 된다.

4. 스크린의 공유
screen실행시 '-x' 옵션을 이용하면 같은 사용자가 스크린을 두 터미널 창에서 동시에 나타나게 혹은 다른 사용자가 접속해 볼 수 있다.
다른 사용자가 접속해서 보게 하려면 조금 더 설정이 필요하다.
먼저 screen 실행파일에 SetUID 퍼미션을 준 상태이어야 한다.
그리고 접속을 허용할 A사용자의 .screenrc 파일에

multiuser on
addacl B

의 내용을 추가해서 다중사용자 접근이 되게 허용하고, B라는 사용자에게 권한을 주게 한다. 그렇게 설정한 상황에서 접근을 원하는 B 사용자가 'screen -r sessionowner/[[pid.]tty[.host]]'으로 접속을 하면 된다.

5. .profile 설정이 적용되지 않는다.
이전에는 필요한 alias등을 모두 .profile에 해 두고 사용을 했다. 그런데 screen은 새로운 스크린을 만들때 .profile을 읽어들이지 않아서 설정이 적용되지 않았다. 그래서 필요한 내용을 .bashrc에 두고 사용을 하면 된다. 이는 현재 사용하는 쉘이 bash이기 때문에 .bashrc에 필요한 설정을 한 것이다.

더 자세한 내용은 man page와 info
그리고 http://sdnkorea.com/blog/entry/GNU-Screen-설치-및-활용하기 을 참고하자.

Technorati Tags: , ,

신고
Posted by trip2me

Add a comment

새로운 링크 소개 이 게시물 대신 새로 만든 프로그램을 사용하세요. 


맥을 쓰면서 가끔 불편한 구석이 있었을때가 친구는 윈도우를 쓰는데 필요한 자료를 묶어서 보내 줄 때 한글이 포함된 경로명이나 파일이 있으면 죄다 깨어져 보인다는 것이었다.

이걸 해결해 보려고 많은 시도를 해 보았었다. 유니코드를 지원하는 압축 포멧들( 7z, rar )를 써 보았지만 한글이 깨어지지는 않는데 또 첫가끝형식을 사용하는 맥의 한글이 그대로 윈도우에서 나타나버려서 가령 '연습.txt'의 경우 윈도우에서 'ㅇㅕㄴㅅㅡㅂ.txt'처럼 풀려버리는 문제가 있었다. bzip2의 경우는 화일 하나만 저장 가능하지만 글자가 풀리는 문제는 없었다. 하지만 일일이 하나씩 압축 할 수는 없고 디렉토리도 해결할 수 없다.

그래서 애플 포럼의 글도 참고해 보았고 여러 블로그를 검색해 보았는데 zip형식은 파일의 인코딩제한을 하지 않는다는 것과 파이선의 zipfile모듈은 zip으로 압축할때 내부에 저장되는 이름을 바꿔 저장이 가능하다는 것이었다.

그래서 처음에 파이선으로 경로명을 UTF-8에서 EUC-KR로 바꾸어주는 unicode모듈을 이용해서 스크립트를 만들었다. 그런데 만드는 도중에 인코딩 변환이 생각대로 되지 않고 에러를 내기에 알고보니 NFD를 사용하는 맥의 문자열을 내가 그대로 NFC를 사용하는 파이선의 인코딩 변환함수에 적용하였기 때문이었다. 구글링과 파이썬 마을 장혜식님의 답글을 통해 문제를 해결했다. 빠른 답변을 해 주셔서 고마웠다.

만든 스크립트를 사용해 보니 잘 되긴 하지만 아무래도 터미널에서 사용하는게 불편하기도 하고 압축되는 경로 사이에 압축 파일이 있을 때 자신을 제외하는 예외처리를 하지 않은 상황이라 그래도 좀 무리없이 사용하기 위해서 애플 포럼의 패치맨님 워크플로우에서 힌트를 얻어서 오토매이터 버전으로 변경을 해 보았다.

처음에 바꿀때 잘 몰랐던 사실은 오토메이터가 'get selected items'로 선택된 파일을 줄 때 모두 절대경로명이 넘어온다는 것이었다 그래서 짜 놓았던 스크립트를 조금 변경해야 했다. 또한 압축파일 중복시 새로 이름 바꾸어서 저장하는 부분도 추가하고 선택한 파일의 이름을 압축결과의 파일명이 되도록 했다.

아직 예외처리가 없어서 파일읽기 오류나 디스크 가득찰때, 모르는 기타사항에 대해 오류를 보여주지는 않지만 간단히 윈도우로 보낼 것을 압축하는데는 유용하게 사용 가능할 듯 하다.



설치는 간단히 첨부파일의 압축을 풀어서 자신의 맥버전에 맞추어 폴더안에 들어있는 파일만 ~/Library/Workflows/Applications/Finder/ 아래에 넣어 주면 설치끝~
파인더를 열고 Cmd+Shift+G 를 눌러 나온 글상자에 위의 경로를 붙여넣으면 한방에 이동할 수 있다.

사용방법은 압축을 원하는 파일이나 디렉토리를 하나이상 골라서 놓고나서 마우스 오른쪽 버튼을 눌러 컨택스트 메뉴의 Automation -> winzip을 고르면 압축을 해 준다.
winzip



ps. 타이거 유저는 파이썬버전이 낮아서 2.4 이상으로 업그레이드가 필요하다.
1.우선 최신 파이썬 mac용을 다운받아 설치한다
2.터미널을 열고나서 아래 명령을 차례대로 실행한다. 암호를 물을때 사용자암호를 입력하면 된다..
sudo mv /usr/bin/python /usr/bin/python.old
sudo cp /usr/local/bin/python /usr/bin/python


신고
Posted by trip2me

Add a comment

  1. 고공자 2013.02.06 16:21 신고  Comment address  Modify/Delete  Add comment

    이거 라이온에서 작동되나요?? 정확한 방법인지 궁금합니다~ 만약 된다면 정말 유용하게 잘쓰겠습니다! 감사합니다~

지금까지는 윈도우의 원격 데스크탑이나 VNC등을 통해서 VLC를 서버측에 GUI로 띄워서 볼 영화를 서버측에서 설정해 보았는데 원격으로 접속하는게 여간 불편한게 아니었고 일일이 영화 하나하나를 열려고 하니 그것도 불편했다. 그런데 VLC 메뉴얼을 보니 GUI 없이 또는 HTTP를 통해서 조작 할 수 있었다.

HTTP로 띄울 때 커맨드라인 옵션은 --intf http 또는 -I http이다. 자세한 사항은 VLC online manual을 참고하면 된다. 여기에 보면 웹페이지 접속 호스트주소와 포트 번호를 임의로 지정하고 어드민을 정해 관리 할 수 있다.

간단히 -I http옵션을 준 웹브라우져의 vlc인터페이스는 아래처럼 생겼다. 타임슬라이드를 잘 이동할 수 있어서 여기저기 이동이 편리하다.
VLC 웹 인터페이스

또는 아예 인터페이스를 없게 하거나 텔넷으로 접속하게 하는 방법도 있다. -I dummy옵션을 주면 아무런 인터페이스 없이 그냥 콘솔에서 돌아간다. 또는 텔넷접속을 하려면 -I telnet을 주면 된다. 자신의 콘솔창에서 컨트롤을 하게 하려면 -I rc을 쓰면 된다. 앞으로 나올 0.9버전대에서는 이 인터페이스별 프로그램을 별도로 만든다고 한다.Running VLC without interface

그리고 udp또는 rtp스트리밍 옵션을 콘솔에서 더 주거나 파일을 지정하면 바로 영화를 스트리밍해 볼 수 있다.

예를들어 간단히 웹인터페이스로 접속할 수 있고 바로 영화를 UDP로 유니캐스트하는 커맨드라인 옵션은 아래처럼 줄 수 있다.
vlc "영화파일이름" --sout udp:"스트리밍을 받을 클라이언트 IP주소" -I http

ex) vlc I.Am.Sam.2001.DVDrip.XviD.AC3.5.1CH.CD1-WAF.avi -I http --sout udp:59.24.192.126

이렇게 하고 나서 클라이언트쪽에서 vlc를 띄우고 'Open network'메뉴를 선택해서 아무 설정도 없이 바로 open해서 영화를 보았다. 도움말을 참고하면 멀티캐스팅도 가능한데 설정이 좀 더 까다롭고 원거리 네트워크에서 잘 될지 모르겠다. 맥에서는 /Application/VLC.app 디렉토리에 들어 있으므로 실행파일을 소프트링크로 /usr/bin에 하나 만들어 두는것도 괜찮을듯 하다.

물론 위의 설정은 물론 VLC GUI인터페이스의 마법사를 통해서도 할 수도 있다. VLC를 이용해서 동영상 스트리밍, 동영상변환등 많은 것을 할 수 있다. 기능별로 옵션이 너무나 많으므로 기타 자세한 것은 온라인 도움말을 참고하기 바란다.

중요한 것은 이 모든 혜택이 제작자의 헌신으로 이루어지고 있고 linux, Mac, Windows에서 모두 잘 돌아간다는 것이다.!!! 잠재된 VLC플레이어의 기능을 잘 활용해 보자.
신고
Posted by trip2me

Add a comment

  1. 핛생 2008.07.10 18:32 신고  Comment address  Modify/Delete  Add comment

    dummy 인터페이스로 실행했을때 콘솔에서 그냥 돌아간다는 말이 무슨 말씀이신지요?! 일반인의 관점에서 생각했을때; 프롬프트 같은게 콘솔창에 떠서 코맨드를 실행하면 돌아가는 느낌인것 같은데... 혹시 실행 화면 캡쳐를 부탁드려도 될까요 ㅠ_ㅜ

    • Favicon of http://trip2me.tistory.com trip2me 2008.07.10 22:06 신고  Comment address  Modify/Delete

      제가 조금 설명이 모자랐나 봅니다. 댓글을 읽어보면 음... 그러니까 '-I dummy' 옵션의 경우 콘솔쪽으로는 스트리밍 정보만 출력하고 아무런 상호작용이 없습니다. 그래서 이 옵션에다가 vlc를 background로 돌리고 표준출력을 null로 돌리면 아무 인터페이스가 없이 떠 있겠죠.

      이에 반해서 '-I rc' 옵션을 주고 실행을 해 보세요. 그러면 자신의 콘솔에서 vlc제어 명령을 입력받게 터미널 인터페이스가 나옵니다. help를 치면 자세한 설명을 볼 수 있습니다.

      저의 경우 원거리에 있는 서버에서 영화를 다운받은 후 그것을 제 노트북에서 실시간으로 스트리밍해 보기 위해서 이런 옵션을 사용했었습니다.

  2. 핛생 2008.07.11 18:51 신고  Comment address  Modify/Delete  Add comment

    친절한 답변 매우 감사드립니다!
    질문 몇가지만 드릴게요 ^^*

    + 튜토리얼을 봐도 잘 모르겠어서 블로그 이리저리 돌아다니면서 구한 포스팅을 보고 유니캐스트/멀티캐스트로 해보았습니다. GUI화면에서 wizard로 했구요, 서버측에서 avi 파일과 flv 파일 두개를 재생 목록에 넣고 스트리밍을 했습니다. 그런데 어쩐 일이지 클라이언트 측에서는 첫번째 파일인 avi 파일만 재생 되더군요. 게다가 끝까지 되지도 않고 멈춰 버립니다. 서버에서는 계속 재생이 되는것을 확인했습니다. 반복재생을 걸어놓았는데 서버 측에서 다시 첫파일로 돌아오면 클라이언트 에서 다시 재생이 되긴 합니다. 하지만 역시 같은 위치에서 정지 합니다. 이상해요.. ;ㅁ;

    + GUI 말고 다른 인터페이스로도 시도를 해 보았는데요, vlc --intf telnet/http 를 하면 콘솔창에서는 뭔가가 떴다고 인식되는지 프롬프트가 안 찍히는데 실제로는 새 창이 뜨지 않습니다. 이것은 vlc의 문제인지, 아니면 서버 자체의 문제인지 궁금합니다
    >> 이 문제 때문에 결국 다시 깔기로 했습니다 ;ㅁ; 아, 다시 깔면 위에 문제도 해결되려나-

    + 마지막으로 제 궁긍적인 목표가 html 코드에 플레이어를 embed하여 브라우저 안에서 VOD 방식으로 반드시 flv 형식의 동영상을 볼수 있게 하는 것입니다. 저는 일반인이라 개념이 좀 부족하지만 상식적으로 생각해서 이런 동작은 embed 안에서 소스에 서버의 주소/파일경로/파일이름을 넣으면 되야 한다고 생각하는데 이것이 맞는 것인지 잘 모르겠습니다. 그리고 제가 말씀 드리고 있는 것이 vlc로 가능한지 알고 싶고 혹시 성공 하셨다면 알려주시면 감사하겠습니다.

    질문이 너무 많네요 ^^;
    처음 뵙는데 대뜸 물어봐서 죄송합니다.
    다시 한번 감사합니다 ^^*

    • Favicon of http://trip2me.tistory.com trip2me 2008.07.11 20:50 신고  Comment address  Modify/Delete

      vlc 문제인지 네트웍 문제인지 가끔 스트리밍이 끊어지는 현상이 저도 일어나네요. 여기에 대해서는 저도 원인을 잘 모르겠습니다.

      어느 플랫폼에서 vlc를 사용하시는지는 모르겠으나 저는 리눅스(red hat계열)에서 vlc스트림서버 실행을 해 보았고 위 옵션들이 잘 작동했었습니다. 현재 Mac OS X tiger 에서는 dummy,rc등이 잘 작동되지는 않는 듯 합니다. 아마도 컴파일된 바이너리의 문제라 생각됩니다.

      윈도우용 VLC에는 ActiveX로 임베드를 할 수 있는 패키지가 있나 보네요. flv파일이 재생이 된다면 원하시는 대로 스트리밍을 할 수는 있지 않을까 생각됩니다만 해보지 않아서 확답을 드릴 수 없군요.

      저 역시나 VLC를 잘 모르는 초보자라서 좋은 조언을 해 드릴 수가 없을 듯 하네요.

  3. 핛생 2008.07.15 10:13 신고  Comment address  Modify/Delete  Add comment

    아무튼 감사드립니다 ^^*