이전 글에 이어서
빌드 작업을
진행한다.
Prepare seafile source code
Seafile의 소스코드를
준비한다.
아래 서브 프로젝트들이
필요하다.
- libsearpc
- ccnet-server
- seafile-server
- seahub
- seafobj
- seafdav
먼저
PKG_CONFIG_PATH 환경변수를
설정한다.
사용자 홈디렉토리를
주의해서
설정한다.
$ export PKG_CONFIG_PATH=/사용자/홈디렉토리/dev/seafile-server/lib:$PKG_CONFIG_PATH
$ export PKG_CONFIG_PATH=/사용자/홈디렉토리/dev/libsearpc:$PKG_CONFIG_PATH
$ export PKG_CONFIG_PATH=/사용자/홈디렉토리/dev/ccnet-server:$PKG_CONFIG_PATH
ccnet-server와
seafile-server는
공홈에는
ccnet, seafile로
되어있으나,
소스코드 컴파일 시
ccnet-server,
seafile-server로
바뀌기 때문에
환경변수도
ccnet-server,
seafile-server
로 바꿨다.
이제 소스코드들을
준비한다.
소스코드들은
버전(tag)이 업데이트
되기 때문에
최신 버전을 확인
해야한다.
포스팅일 기준으로
libsearpc를 제외하고
최신 버전은
v7.1.5 이다.
이놈들은
배포용 Git을
따로 안두는 지
배포용 commit으로
이동해서
컴파일하라고 한다.
...어이가 없다
libsearpc
$ cd ~/dev
$ git clone https://github.com/haiwen/libsearpc.git
$ cd libsearpc
$ git reset --hard v3.1-latest
$ ./autogen.sh
$ ./configure
$ make dist
ccnet-server
$ cd ~/dev
$ git clone https://github.com/haiwen/ccnet-server.gi
$ cd ccnet-server
$ git reset --hard v7.1.5-server
$ ./autogen.sh
$ ./configure
$ make dist
여기서 나는
아래 오류가 나왔다.
configure: error: *** Unable to find openssl crypto library
라즈베리파이 OS는
데비안 기반이기 때문에
아래 라이브러리를
설치한다.
$ sudo apt-get install -y libssl-dev
seafile-server
$ cd ~/dev
$ git clone https://github.com/haiwen/seafile-server.git
$ cd seafile-server
$ git reset --hard v7.1.5-server
$ ./autogen.sh
$ ./configure
$ make dist
seahub
$ cd ~/dev
$ git clone https://github.com/haiwen/seahub.git
$ cd seahub
$ git reset --hard v7.1.5-server
$ python3 ./tools/gen-tarball.py --version=7.1.5 --branch=HEAD
만약,
아래 오류가
나타난다면,
[ERROR] django-admin scripts not found in PATH
환경변수 PATH에
django-admin의 위치가
없어서 발생한
오류이기 때문에
아래 명령어로
링크 파일을 생성한 후,
다시 진행한다.
(* django-admin은
이미 설치했다.)
$ sudo ln -s ~/dev/seahub_thirdpart/bin/django-admin /usr/local/bin/django-admin
$ sudo ln -s ~/dev/seahub_thirdpart/bin/django-admin.py /usr/local/bin/django-admin.py
seafobj
$ cd ~/dev
$ git clone https://github.com/haiwen/seafobj.git
$ cd seafobj
$ git reset --hard v7.1.5-server
$ make dist
seafdav
$ cd ~/dev
$ git clone https://github.com/haiwen/seafdav.git
$ cd seafdav
$ git reset --hard v7.1.5-server
$ make
Copy the source tar balls to the same folder
이제 컴파일되어
압축된
소스코드들을
한 곳에 모아야 한다.
$ mkdir ~/seafile-sources
$ cp ~/dev/libsearpc/libsearpc-<version>-tar.gz ~/seafile-sources
$ cp ~/dev/ccnet/ccnet-<version>-tar.gz ~/seafile-sources
$ cp ~/dev/seafile/seafile-<version>-tar.gz ~/seafile-sources
$ cp ~/dev/seahub/seahub-<version>-tar.gz ~/seafile-sources
$ cp ~/dev/seafobj/seafobj.tar.gz ~/seafile-sources
$ cp ~/dev/seafdav/seafdav.tar.gz ~/seafile-sources
아마 버전이 6.0.1로
되어있을 텐데
정상이다.
seafile 측에서
컴파일 스크립트를
저렇게 만들어서 그렇다.
Run the packaging script
이제 서버 스크립트를 생성하는
패키징 스크립트를
동작시킨다.
$ mkdir ~/seafile-server-pkgs
$ python3 ~/dev/seafile-server/scripts/build/build-server.py --libsearpc_version=<libsearpc_version> --ccnet_version=<ccnet_version> --seafile_version=<seafile_version> --thirdpartdir=/사용자/홈디렉토리/dev/seahub_thirdpart --srcdir=/사용자/홈디렉토리/seafile-sources --outputdir=/사용자/홈디렉토리/seafile-server-pkgs --version=7.1.5
나는 아래와 같이 입력했다.
$ python3 ~/dev/seafile-server/scripts/build/build-server.py --libsearpc_version=3.1.0 --ccnet_version=6.0.1 --seafile_version=6.0.1 --thirdpartdir=/home/rudin/dev/seahub_thirdpart --srcdir=/home/rudin/seafile-sources --outputdir=/home/rudin/seafile-server-pkgs --version=7.1.5
아래는
발생할 수 있는
오류들과
대처 방안이다.
LDAP 오류
서버 스크립트 생성 중
아래와 같이
오류가 발생하면
ldap 패키지가
없어서 발생하는 오류이다.
checking for ldap_init in -lldap... no
configure: error: *** Unable to find ldap client library
[ERROR] error when running command:
./configure --prefix=/tmp/seafile-server-build/seafile-server/seafile --enable-ldap
다음과 같이
LDAP 라이브러리를
설치하여
해결한다.
$ sudo apt-get install libldap2-dev
완료
스크립트가 끝나면,
~/seafile-server-pkgs 디렉토리에
seafile-server_7.1.5_pi.tar.gz 파일이
생성된다.
이 파일을 구동시키기만 하면 된다.