LazarusCompleteGuide:2.4

From 흡혈양파의 번역工房
Jump to: navigation, search

FreeBSD에서 설치

라자루스는 현재 프리 파스칼 컴파일러를 실행시킬 모든 유사 유닉스 플랫폼에 설치할 수 있다. Linux/I386 과 Linux/AMD64 이외에는 FreeBSD가 주로 해당할 것이다 (Marco Van De Voort의 작업 덕분이다). 프리 파스칼 버전 2.4.2부터는 FreeBSD에 안정 컴파일러를 이용 가능하며, I386 버전뿐만 아니라 64 비트 플랫폼 AMD64 또는 X86_64에서도 가능하다.


본 글을 쓰게 된 저자는 Toolbox의 2010년 2월호에 AMD64 상의 FreeBSD 7, 8, 9와 i386 상에 FreeBSD 8, 9에 대해 외부적으로 설치 가능한 배포판을 발표하였다. 프리 파스칼과 라자루스를 FreeBSD/amd64 플랫폼에 컴파일하는 절차는 2.4.3 절에서 설명된다. 배포판 아카이브의 생성에 관해서는 논하지 않을 것인데, 이유는 라자루스 문제라기보다는 프리 파스칼과 관련되기 때문이고, Toolbox(독일)의 2010년 2월호에 상세하게 설명되어 있기 때문이다. 하지만 머지않아 FreeBSD/amd 용 공식 포트를 이용할 수 있을 것이라고 추정할 수는 있다. 가장 빠른 기회는 아마도 컴파일러 버전 2.2.4에서 2.4.0으로의 배포판 업그레이드가 되겠는데, 이는 컴파일러 이전 버전들이 FreeBSD/amd64 를 지원하지 않기 때문이다.


포트로부터 설치하기

라자루스 프로젝트는 리눅스, 윈도우, MacOS용으로 설치할 준비가 된 패키지를 생성한다. 하지만 FreeBSD의 경우 주요 및 권장 설치 루트가 포트 시스템을 사용한다. 이론적으로는 최신 포트 디렉터리가 설치되도록 확보하고 (예: portsnap fetch extract ), 디렉터리를 /usr/ports/editors/lazarus 로 변경한 후 아래 명령을 실행하는 것이 가장 간단한 방법이다:

# make install


운이 좋다면 준비한 포트가 인터넷 상에 존재하여 다음 명령으로 직접 설치할 수 있다:

# pkg add –r lazarus


라자루스를 컴파일 한다는 것은 프리 파스칼을 컴파일 할 수 있다는 의미이며, 수많은 패키지에 (20개 이상) FreeBSD를 나눌 수 있음을 의미한다. 또한 기본 설정을 이용해 데이터베이스 개발을 원치 않을 때조차 엄청난 수의 잠재적 데이터베이스 클라이언트들이 컴파일된다.


불행히도 포트 시스템은 (2011년 2월 이후) 사용자가 필요로 하는 모든 의존성을 설치하지는 않는다. pkg_add –r 를 사용하는 라자루스 0.9.28.3의 시험(test) 설치가 끝나도 설치된 IDE는 실행할 준비가 되지 않는데, 이는 프리 파스칼 컴파일러와 GNU make가 누락되었기 때문이다. 포트의 의 정의는 불완전하므로 gmakefpc 패키지는 수동으로 설치되어야 한다.


유감스럽게도 위에서 끝나지 않는다. 라자루스를 재컴파일하기 위해서는 (패키지가 정적으로 연결되어 있으므로 재컴파일이 필요) 포트 패키지 fpc-fcl-res (프리 파스칼 리소스 컴파일러를 포함)와 라이브러리 gdk-pixbuf-2 가 필요하다. 포트 시스템의 장점은 어떠한 GUI 툴킷(toolkit)을 라자루스 설치의 기반으로 사용해야 하는지 묻는다는 점이다. 대화창은 GTK2 또는 QT4를 옵션으로 제시한다 (그림 2.1 참고). 사용자는 한 가지 (한 가지만) 옵션을 선택해야 한다. 두 가지 옵션을 선택할 수는 있지만 만일 둘을 선택 시 포트가 작동하지 않을 것이며 make config를 이용해 재구성해야 할 것이다.

그림 2.14: FreeBSD 포트에서 라자루스에 관한 구성 창. 제시되는 옵션 중 하나를 선택한다. 시스템에 의존하는 옵션을 선택한다. KDE4를 사용하는 사람들은 Qt4를 선택하고, XFCE4 또는 Gnome을 선호하는 이들은 GTK2를 선택해야 한다.


이는 프리 파스칼과 라자루스-포트의 관리자로 잘 해결해왔다. 이보다 효과는 덜하지만 라자루스를 /usr/local/share/lazarus 로 복사하는 데 사용하는 경로도 사용되어 왔으나 /ser/local/share/doc/lazarus/ 로 복사된 후 symlink되는 문서와 예제는 복사되지 않는다. 포트를 통해 라자루스를 빌드 시 또 다른 장애물은 라자루스와 프리 파스칼의 소스를 필요로 한다는 점이다. 프리 파스칼 소스는 포트로 설치되지 않으며, 이로 인해 IDE의 적절한 기능을 저해한다 (이 모든 준비 작업이 끝난 후에도). 두 개의 소스 아카이브는 포트에서 빌드 후에 이용 가능하기 때문에 미비한 문제에 불과하다. 사용자는 IDE 디렉터리를 변경하고 프리 파스칼 소스 아카이브를 추출할 필요가 있다.


두 개의 소스 아카이브는 서로 구분되기 때문에 프리 파스칼에 주의를 기울여야 한다. 작은(smaller) 아카이브로도 라자루스에 충분하며 fpc-<VersionNumber>source.tar.gz 라고 명명되므로 2.4.2 버전에서는 fpc-2.4.2.source.tar.gz 가 될 것이다. 컴파일러 스스로를 컴파일 하는 데 사용되는 컴파일러 소스도 이용할 수 있다. 아카이브 파일은 fpcbuild-<VersionNumber>.tar.gz라고 명명된다. 2.4.2 컴파일러 버전이 포트로부터 설치되면 작은 파일(smaller file)을 추출하거나 (이미 삭제되지 않았다면) 큰 파일(large file)을 추출할 수 있다.

# cd/user/local/share/lazarus
# tar – xvzf /usr/ports/distfiles/freepascal/fpcbuild-2.4.2.tar.gz


라자루스 하위디렉터리, 즉 fpc-<Version> 또는 fpcbuild-<Version>이라 불리는 하위디렉터리에서 추출이 완료된다. fpcbuild 를 사용한 경우 아래 명령을 이용해 일부 디스크 공간을 확보할 수 있다:

# cd fpcbuild-2.4.2 && rm –r demo fpcdocs install


fpcsrc 디렉터리만 사용되는데 이 디렉터리는 FPC 소스를 묻는 대화창에서 라자루스를 처음 시작할 때 선택되어야 한다. 프리 파스칼과 라자루스가 pkg_add 를 이용해 바이너리 형태로 설치되었는데 설치에 FPC 소스가 필요하지 않은 경우 사용자는 FTP 서버에서 둘을 구분하여 다운로드해야 하는데, 예를 들어 다음과 같은 명령을 이용할 수 있겠다:

# wget ftp://ftp.freepascal.org/pub/fpc/dist/2.4.2/source/fpc-2.4.2.source.tar.gz
# tar -xvzf fpc-2.4.2.source.tar.gz -C /usr/local/share/lazarus


작은 아카이브 fpc-<VersionNumber>.source.tar.gz 에서 소스는 fpc-<VersionNumber>에 위치한다.


이제 라자루스 IDE를 KDE의 (또는 Gnome이나 XFCE4) 메뉴로 추가하기 위해서는 약간의 변경을 요한다. 이러한 변경은 수동 설치 시에도 필요하다. lazarus.desktop 파일의 복사가 타당하다 (이는 후에 더 논하겠다). 포함된 파일이 FreeBSD 방식으로 패치(patch)되지 않은 경우, 수정된 버전을 포트의 files 디렉터리에 만든 후 post-install 로 복사되어야 한다.


post-install:

@${MKDIR} ${LOCALBASE}/share/applications
@${CP} ${PORTDIR}/${PORTNAME}/files/lazarus.desktop \
   					${LOCALBASE}/share/application
@${CAT} ${PKGMESSAGE}


마지막으로, lazarus-mime.xml 파일이 누락되면 이 파일 또한 하위디렉터리 설치로부터 /usr/local/share/mime/application 으로 복사되어야 한다. 라자루스 포트는 여러 면에서 완벽하지 않다!


포트가 변경되면 PORTREVISION 을 설정하거나 증가시켜야 한다:

PORTNAME	 = lazarus
PORTVERSION	 = 0.9.28.3
PORTREVISION	 = 1
CATEGORIES	 = editors devel


수동 설치

프리 파스칼과 라자루스를 수동으로 컴파일하고 설치하기 위해서는 보통 포트 시스템이 책임지는 (라자루스의 경우 완전하진 않지만) 몇 가지 조건들을 충족시켜야 할 필요가 있다. 약간의 내용만 변경하면 이러한 세부 내용은 리눅스와 윈도우에서 유효하다. GNU make는 리눅스에서와 달리 FreeBSD에서 기본적으로 설치되지 않는다. 또한 GTK2를 설치해야 하는데, 라자루스 0.98.2 버전 이후부터 GTK2를 기본 위젯 셋으로 사용하기 때문이다. graphics/gdk-pixbuf2 포트를 이용해 간편히 설치할 수 있는 Gdk-Pixbuf-2 라이브러리도 필요하다. 여기까지 완료되면 Gtk2와 같은 의존성을 올바로 해결할 수 있을 것이다. 프리 파스칼의 컴파일에 가장 중요한 요구사항은 GNU make를 포트 /usr/ports/devel/gmake 로부터 설치하는 것이다. 해당 디렉터리로 변경한 후 다음 명령을 이용 시:

# make install clean


GNU make가 설치된다. 아니면 pkg_add -r gmake 를 이용해 FreeBSD의 FTP-저장소로부터 GNU make의 바이너리 버전을 설치할 수 있다. 다음 단계는 인터넷에서 아래 패키지를 다운로드하는 것이다:

  • FreeBSD용 프리 파스칼의 최신 바이너리 배포판.
    자신의 플랫폼에 올바른 배포판, 즉 i386 또는 x86_64 중 하나가 되도록 한다.
  • 프리 파스칼 소스 아카이브 (FreeBSD7과 8에는 작은 버전으로 충분하다).
    FreeBSD의 구 버전이나 9-CURRENT의 경우 FPC를 수동으로 컴파일할 필요가 있으며, 이를 빌드하는 데 큰 소스 아카이브가 필요할 것이다.
  • 라자루스 소스 배포판, 가급적이면 개발 버전, 포트에서 발견되는 0.98.3 버전은 제외 (2011년 2월 이후) - FreeBSD에서 안정적이지 않다.


첫 두 개의 파일은 아래에서 직접 다운로드 할 수 있다:

ftp://ftp.freepascal.org/pub/fpc/dist


최신 안정 버전에 맞는 올바른 파일을 다운로드 하는 것이 중요하다.


컴파일러 버전 2.4.2의 경우 다운로드한 파일은 각각 아래에 위치한다.

ftp://ftp.freepascal.org/pub/fpc/dist/2.4.2/i386-freebsd

ftp://ftp.freepascal.org/pub/fpc/dist/2.4.2/x86_64-freebsd


프리 파스칼 소스 아카이브는 아래에 위치한다:

ftp://ftp.freepascal.org/pub/fpc/source


바이너리 파일의 경우ㅡ해당 시ㅡ올바른 커널 버전에 맞는 버전을 다운로드하는 것이 중요하다. 프리 파스칼 2.4.2 버전부터는 두 개의 파일을 이용할 수 있다: *freebsd7.tar와 *freebsd8.tar*.

현재 운영체제에 올바른 컴파일러를 발견하면 올바로 기능하는지 확인만 하되 재컴파일 할 필요는 없다. 컴파일러를 다운로드 하고 싶다면 FTP 서버의 소스 디렉터리에서 fpcbuild-<Version>.tar.gz 파일을 다운로드 해야 한다. 컴파일 버전 2.4.2의 경우 파일명은 다음이 될 것이다.

ftp://ftp.freepascal.org/pub/fpc/dist/2.4.2/source/fpcbuild-2.4.2.tar.gz


해당 파일은 wget과 함께 다운로드 할 수 있다. 이는 올바른 운영체제를 이용할 수 없는 경우, 특히 라자루스를 FreeBSD 9-CURRENT 상에 설치해야 할 때 특히 필요하다. 두 아카이브는 집(zip) 파일로도 이용 가능하지만 이러한 파일들은 누락된 파일 속성 때문에 덜 적합하며 .tar.gz 파일보다 크기가 크다.


아카이브 파일들은 /usr/ports/distfiles/freepascal 와 같이 다운로드 된 다른 소스 파일이 위치한 적절한 디렉터리로 다운로드하거나 /usr/tmp로 다운로드해야 한다.


다음 단계는 프리 파스칼의 바이너리 패키지를 추출해야 한다. 이를 위해 /usr/local/src 디렉터리를 생성하고 아카이브를 추출하면 되는데, 이는 아래와 같이 실행할 수 있다:

# mkdir /usr/local/src
# cd /usr/local/src
# tar -xvf /usr/ports/distfiles/freepascal/fpc-2.4.2.i386-freebsd8.tar


tar 파일은 install.sh, binary.i386-freebsd.tar, demo.tar.gz, doc-pdf.tar.gz의 이름으로 된 파일들을 포함한다. 이는 현재 디렉터리로 추출되며, 바이너리 패키지의 설치가 끝나면 삭제 가능하다. 설치 스크립트는 다음 명령으로 시작할 수 있다:

# sh install.sh


실행 가능한 flag가 설정되어 있지 않기 때문에 직접 시작할 수는 없다. 설치 중에 모든 것은 기본 위치로 설치되며 /usr/local 접두사와 같은 일반 FreeBSd 설정들은 수락되어야 한다. 설치가 끝나면 fpc 명령어를 이용해 컴파일러의 기능 여부를 검사한다. 마지막 단계는 아래 명령을 이용해 /usr/local/lib 의 소유권을 수정할 필요가 있겠다:

# chown root:wheel /usr/local/*


위의 실행이 실패하면 FreeBSd를 다음 재시작 시 부팅하지 못하도록 막을 가능성이 높다. FreeBSD에서 라이브러리 디렉터리의 소유권은 프리 파스칼의 설치에 오랜 시간 발생한 오류이며, 치명적인 결과를 초래한다! 시스템 시작 시 FreeBSD 시스템 링커 /libexec/ld-elf.so.1 은 보안을 이유로 root 가 소유하는 디렉터리만 사용한다. /usr/local/lib 내의 중요한 라이브러리가 필요 시 (예: bash가 셸로 사용되는 경우) 위에 열거한 소유권을 변경하지 않고는 어떠한 것도 기능하지 않는다.


매우 중요: 인스톨러를 이용해 프리 파스칼 설치가 끝나면 ls –la /usr/local 을 이용해 /usr/local 내의 소유권 디렉터리를 확인하고 아래 코드를 이용해 설치 루틴으로 인해 변경된 디렉터리를 수정하라.

# chown root:wheel /usr/local*


다음 단계에서는 컴파일러를 재컴파일 가능하거나 재컴파일을 해야 한다 (위를 참조해 상황에 따라). 예를 들어, 어떠한 컴파일러도 이용할 수 없는 경우 혹은 9-CURRENT 버전을 이용하고 FreeBSD 7 또는 8이 설치된 경우, 모든 내용은 /usr/local/src 디렉터리에 추출되어야 한다:

# tar –xvzf /usr/ports/distfiles/fpcbild-2.4.2.tar.gz
# cd fpcbuild-2.4.2


여기서 해당 디렉터리에서 컴파일러를 재컴파일 하더라도 생성되는 것은 없다. 먼저 사용자는 fpcsrc/rtl/freebsd/i386 디렉터리로 변경하고,

# sh identpatch.sh


위의 명령으로 운영체제 버전 번호를 패치해야 하는데, 이는 32 비트 버전에서만 가능하다! FreeBSD/AMD64 (x86_64)용 디렉터리에서는 해당 스크립트를 이용할 수 없으므로 번호를 수동으로 변경해야 한다.


Rtl/freebsd/i386/cprt0.as 파일 내 엔트리는 아래와 같은 모양을 띤다 (2.2.4, 2.2.0, 2.4.2 버전에서 모두 동일하다):

# ...Comments in the file
#
# freebsd 5.4 504000
# freebsd 6.3 (prelease): 603100
# freebsd 7.0 700055
#

	.file	"cprt0.as"
	.ident	"FreePascal 2.2.x series dynlinked to libc"
.section	.note.ABI-tag,"a"@progbits
	.p2align 2
	.type	 abitag, @object
	.size	 abitag, 24
abitag:
	.long	8
	.long	4
	.long	1
	.string	"FreeBSD"
	.long	504000


목록의 마지막 행이 중요하다. 이는 기본 값으로 (by default) 운영체제 버전 FreeBSD 5.4가 선택되었음을 보여준다. 해당 엔트리는 변경되어야 하는데, 비교를 위해 몇 가지 버전 번호를 제시하겠다:

FreeBSD 6.4 STABLE	= 604100
FreeBSD 7.4 RELEASE	= 704100
FreeBSD 8.0 RELEASE	= 800107
FreeBSD 8.2 STABLE	= 800500
FreeBSD 9.0 CURRENT	= 900009 (Early 2010), 900032 (Early 2011)


마지막 3자리 숫자는-예제에서 분명히 확인 가능-중요하지 않으며 배포 시 변경된다. 프리 파스칼 포트는 Makefile에 아래 패치와 함께 현재 버전 번호를 입력한다.

post-patch:
# patch fpc rtl
  	@${REINPLACE CMD) -i "" -e 's|504000|${OSVERSION}|g' \
	 ${WRKDIR}/${FPCSRCDIR}/rtl/freebsd/${ARCH}/cprt0.as


사용자는 올바른 버전인지 아닌지 알지 못하지만 /bin 디렉터리로부터 동적으로 연결된 프로그램을 대상으로 file 프로그램을 실행시키면 알 수 있으며, 여기서는 FreeBSd 8.2-RC가 해당된다:

#file /bin/sh
/bin/sh ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD),
dynamicaly linked (uses shared libs), for FreeBSD 8.2 (802500),
stripped


파일을 수정하면 아래 명령이 컴파일러를 빌드할 것이다:

# gmake all


이에 GNU make가 필요하며, FreeBSD make 명령은 (make) 오류 메시지만 생성한다. 하지만 이 문제를 다루기엔 아직 이르다!


아래와 같은 오류 메시지가 생성된다:

Makefile:2264: *** No libgda.a found, supply NOGDB=1 to diable debugger support. End.


메시지는 무엇을 해야 하는지 보여주는데, 다시 말해 모든 gmake 명령 다음에는 NOGDB=1 옵션이 따라야 한다:

# gmake NOGDB=1 all


여기에는 시간이 어느 정도 소요될 것이다. 작업이 성공적으로 실행되고 나면 아래 명령으로 FPC를 설치할 수 있다.

# gmake NOGDB=1 install


위의 명령은 이전에 설치된 버전을 덮어쓸 것이다. 컴파일러의 재컴파일을 원하지 않을 경우 작은 아카이브만 압축해제(unpack)하면 된다.

# tar -xvzf fpc-2.4.2.source.tar.gz


이는 라자루스를 포트에서 설치하더라도 꼭 해야 하는 일인데, 라자루스가 올바로 작동하기 위해서는 IDE CodeTools를 위한 소스를 필요로 하기 때문이다. 디스크 공간이 문제가 된다면 큰 아카이브를 제거하고 작은 아카이브만 추출할 수도 있다-작은 아카이브에도 필요한 파일은 모두 포함되어 있다. 그리고 나면 두 번의 다운로드만 실행하면 된다.


다음은 라자루스를 컴파일하는 단계이다. 이 단계에서는 어떤 버전을 사용할 것인지 결정하는 것이 중요하다. 안정 버전-SourceForge에서 이용 가능-의 소스와 개발 버전의 소스 중 하나를 다운로드할 수 있다. 후자는 스냅숏 서버 또는 그것의 미러 서버, 아니면 서브버전 서버에서 다운로드 할 수 있다. 이상적으로는 개발 버전 또는 fixes의 .tar.bz2 파일이 다운로드 되어야 한다. 파일을 lazarus 디렉터리에 추출하라. 이러한 실행은 9.2.2011 일자로 된 lazarus-0.9.31-29426-20110209-src.zip 이라는 파일이 동일한 길이의 이름으로 된 하위디렉터리로 추출되는 문제를 피하게 해준다. 파일은 /usr/local/src 에 추출되는데, 이에 사용하는 명령은 아래를 예로 들 수 있다:

# cd /usr
# tar -xvjf /usr/ports/distfiles/lazarus-0.9.31-29426-20110209-src.tar.bz2
# cd lazarus
# gmake all
# strip lazarus startlazarus lazbuild


여기까지 완료되더라도 작업이 완전하지는 않지만 포트를 이용한 설치와 동일한-훨씬 짧은-시점에 도달했으며, 본장의 앞부분에 설명한 추가 단계만 실행하면 되겠다.


라자루스 설치 후 단계

라자루스의 설치가 끝나면 윈도우 환경에 (Gnome 2, KDE, XFCE 4 중 어느 것이든) 이를 알려야 한다. 필수 단계는 아니지만 MIME 데이터베이스를 완성시키는 편이 낫다.


이를 위해선 두 개의 파일을 복사해야 한다: 라자루스 install 디렉터리에서 lazarus-mime.xml 파일을 /usr/local/share/mime/application 에 복사하고, lazarus.desktop 파일을 /usr/local/share/applications/ 로 복사해야 한다.


lazarus.desktop 파일에서 실행 가능한 프로그램에 대한 엔트리는 수정되어야 한다. 설치 디렉터리에 따라 (FreeBSD 포트를 이용한 설치 시 /usr/local/share/lazarus 가 된다) 파일에서 경로를 수정해야 하며, 아래와 같은 모습을 띨 것이다.

Exec=/usr/loca/share/lazarus/startlazarus %f


따라서 라자루스는 윈도우 환경에 아이콘 없이 나타날 것이다. 누락된 아이콘을 복원하려면 파일 내 두 번째 엔트리를 수정해야 한다. 아이콘의 위치는 Icon=lazarus.png 에서 Icon=/usr/local/share/lazarus/images/icons/lazarus.ico 로 수정되어야 한다.


물론 엔트리를 수정한다고 해서 라자루스 자체의 기능성에 영향을 미치지는 않을 것이다. X-Windows에서 처음 라자루스를 시작하는 것이 다음 단계이다. 이를 실행 시 프리 파스칼 소스의 경로가 올바르지 않다는 메시지 상자가 나타날 것이다.


프리 파스칼 소스와 gmake 에 대한 경로는 Environment 페이지의 Environment ⇒ Options 설정 창에서 설정되어야 한다. (라자루스 일부 최신 버전에서는 Environment 메뉴가 Tools 메뉴로 통합되었음을 기억한다.)


원칙상 사용자는 라자루스를 FreeBSD 뿐만 아니라 모든 설치 시 실행가능하게 축소(shrink)시켜야 한다. 이는 gmake로 설치할 때와 라자루스가 스스로 재컴파일할 때 실행할 수 있다.

# strip lazarus startlazarus lazbuild


위의 명령은 디스크 공간을 절약할 뿐 아니라 시스템 시동(start-up) 시간을 급격하게 향상시킨다. 라자루스의 실행 가능한 크기는 처음에 90MB부터 시작해 10MB로 감소한다. 디버그 심볼(Debug symbol)은 사용자가 실제로 디버깅하고자 할 때 실행 가능하도록 남겨져야 한다.

그림 2.15: FreeBSD와 KDE4에서 Qt4 위젯과 라자루스