카테고리 보관물: Tools & Tips

저장공간 문제로 XCode 재 설치가 실패 할 때

XCode를 재설치 할 때 가능한 저장공간이 25GB이상 있음에도 저장공간이 부족해서 설치할 수 없다는 에러가 나온다면 제대로 삭제되지 않은 이전의 정보 때문일 수도 있다.

Uninstall xcode 10에 있는 내용을 참고해서 ~/Library/안에 있는 관련한 파일들을 삭제해주고 나니 저장공간에 대한 에러메세지 없이 잘 설치 되었다. /System/Library/안에 있는 파일들은 SIP 관련으로 그냥 삭제할 수 없고 복구모드로 부팅해서 csrutil을 실행해 주어야 한다는데 그냥 안해도 문제 없이 잘 되었다.

다음의 파일을 지우고 한번 시도해보자.

/Applications/Xcode.app 
~/Library/Caches/com.apple.dt.Xcode
~/Library/Developer
~/Library/MobileDevice
~/Library/Preferences/com.apple.dt.Xcode.plist
/Library/Preferences/com.apple.dt.Xcode.plist

macOS terminal로 Emacs 사용 할 때 meta key 변경

서버에 있는 원격 파일을 편집 할 때 대부분은 Mac용 Emacs에서 Tramp mode로 할 수 있지만, 가끔씩 서버에 접속한 터미널에서 직접 Emacs를 띄우는 경우가 있는데 이 때는 ESC key가 meta로 할당 되어서 도무지 적응 하기가 힘들다. 이 때는 terminal의 Profiles -> Keyboard에서 아랫 쪽에 있는 “Use Option as Meta key”를 설정하면 ESC 대신 Option key를 Meta key로 사용할 수 있다.

OpenGrok 최신버전 설치하기

한 때 갑자기 배포하던 서버가 없어져서 혹시나 하는 걱정에 배포파일을 다운로드 받아 두기까지 했던 OpenGrok project가 다행히 Oracle의 GitHub 내에 자리를 잡고 잘 꾸준히 업데이트 되고 있다.

예전에 작성했던 OpenGrok 설치를 위한 글들은 너무 오래되어서 잘 맞지 않는 것도 있고 해서 최근 버전과 환경을 기준으로 다시 설치 과정을 정리했다. 이 포스팅은 잘 작성된 프로젝트의 문서인 ‘How to setup OpenGrok’을 기준으로 한 나름의 정리이다.

환경과 필요한 것들

– Ubuntu 18.4 LTS
– OpenJDK 11
– Tomcat 9
– Universal-ctags
– 최신 버전의 release file: https://github.com/oracle/opengrok/releases

설치

이 후로는 OpenGrok이 설치 되는 위치를 OPENGROK_DIR로 정의 하고 다음과 같이 환경 변수로 설정 했다고 가정한다.

export OPENGROK_DIR=/var/opt/opengrok

설치할 디렉토리와 하위 디렉토리를 만들어 주고 소유자 권한을 $USER, 그룹 권한을 tomcat으로 설정한 다음, 배포 파일의 압축을 풀어준다. (<version> 부분은 알맞은 값으로 대체)

mkdir -p $OPENGROK_DIR/{src, data, dist, etc, log}
sudo chown $USER:tomcat -R $OPENGROK_DIR
tar -C $OPENGROK_DIR/dist --strip-components=1 -xzf opengrok-<version>.tar.gz

Deployment

Tomcat9을 실행한 상태에서 http://localhost:8080/manager/html로 접근해서 deploy -> WAR file to deploy -> Choose File 버튼을 선택하고 $OPENGROK_DIR/dist/lib/source.war 경로를 찾은 다음 Deploy 버튼을 누른다.

Indexing

분석 할 source code를 $OPENGROK_DIR/src에 받아 둔 후 다음의 커맨드로 indexing을 완료하면 모든 준비가 완료된다.

java \
    -Djava.util.logging.config.file=$OPENGROK_DIR/etc/logging.properties \
    -jar $OPENGROK_DIR/dist/lib/opengrok.jar \
    -c /usr/local/bin/ctags \
    -s $OPENGROK_DIR/src -d $OPENGROK_DIR/data -H -P -S -G \
    -W $OPENGROK_DIR/etc/configuration.xml -U http://localhost:8080/source

Source code가 업데이트 될 때 마다 indexing을 해 주어야 하는데 커맨드가 너무 길어서 복잡하니까 bin directory를 만들고 여기에 index.sh라는 이름으로 shell script를 만들어서 넣어 주었다.

mkdir $OPENGROK_DIR/bin
chmod +x index.sh
$OPENGROK_DIR/bin/index.sh

Access

indexing 까지 다 되었으면 http://localhost:8080/source에 접근하여 source code를 browsing 할 수 있다. Localhost가 아닌 외부에서 접근을 허용 하려면 tomcat의 환경을 변경해 주면 된다. (관련 내용은 인터넷에서 어렵지 않게 찾을 수 있다)

참고: universal-ctags

Ubuntu에서 apt로 설치 할 수 있는 ctags는 Exuberant ctags이지만 OpenGrok은 Universla-ctags를 요구한다. 다음의 방법으로 코드를 컴파일 하고 /usr/local/bin에 설치해서 기존의 /usr/bin/ctags 경로와 충돌하지 않도록 해준다.

git clone git@github.com:universal-ctags/ctags.git
cd ctags
autogen.sh
./configure --prefix=/usr/local
make
sudo make install
/usr/local/bin/ctgas --version