LazarusCompleteGuide:2.1
버전 관리 시스템에서 다운로드하기
대부분 오픈 소스 프로젝트와 마찬가지로 라자루스용 (그리고 프리 파스칼용) 소스 코드를 얻는 데에는 몇 가지 방법이 있다. 가장 간단한 방법은 릴리즈 소스 또는 current daily 버전을 인터넷으로부터 아카이브로서 다운로드하는 방법이다. 안정 배포판은 다음 주소의 SourceForge에서 찾을 수 있다.
http://sourceforge.net/projects/lazarus/files.
Current daily 소스는
http://www.hu.freepascal.org/lazarus/ 주소에서 얻거나,
프랑스의 http://snapshots.lazarus.shikami.org/ 또는
독일의 미러 사이트, http://michael-ep3.physik.uni-halle.de/lazarus/ 에서 찾을 수 있다.
주요 다운로드 소스의 링크는 다음과 같다.
http://www.lazarus.freepascal.org.
라자루스와 프리 파스칼은 프리 파스칼 프로젝트의 FTP 서버에서도 찾을 수 있다.
ftp://ftp.freepascal.org/pub/lazarus/.
배포판의 소스 코드는 releases/Lazarus%20Zip%20_%20GZip 에서 이용 가능하며, current daily 파일의 스냅숏은 하위디렉터리 snapshots/ 에 위치한다.
단순히 스냅숏이 필요한 경우, 예를 들어 소스로부터 라자루스를 직접 컴파일하고자 하는 경우에는 소스 아카이브를 다운로드하면 된다. 소스를 다운로드하는 또 다른 이유는 프리 파스칼이 모두 설치되어 있는데 두 번 설치하고 싶지 않은 경우, 또는 바이너리(binary) 버전을 이용할 수 없는 FreeBSD로 작업하는 경우에 필요하기 때문이다.
소스를 다운로드하는 데 있어 단점은 새로운 소스 파일이 필요할 때마다 (몇 일 후가 될지도 모른다) 다시 모든 것을 다운로드해야 한다는 점에 있다.
뿐만 아니라 프로젝트에 참여하길 원하거나 변경 내용을 추적하길 원하는 경우, 버전 관리 시스템에서 파일을 얻어야 한다. 이 방법을 이용하면 이전 버전 이후에 변경된 파일만 다운로드 된다. 프리 파스칼과 라자루스의 소스 저장소는 Subversion을 기반으로 한다. 파일로의 읽기 접근은 매우 쉬우며, 유닉스보다 윈도우에서 오히려 더 간편하다.
TortoiseSVN 설치하기
윈도우에서 선호하는 SVN 클라이언트는 TortoiseSVN으로, 다음 주소에서 받을 수 있다.
진행 중인 제품 개발의 일부로 클라이언트의 새로운 출시가 계속해서 발표되고 있다.
하지만 설치된 윈도우 버전과 관련해 TortoisesSVN을 매우 주의해야 한다. 최근 버전은 (1.6x) 윈도우 2000을 최소사양으로 한다. 설치자는 윈도우 XP 또는 그 이상에서 결함 없이 실행되지만 윈도우 2000에서는 TortoiseSVN을 설치하기 전에 gdiplus 라이브러리가 (마이크로소프트에서 이용 가능) 설치되어야 한다.
윈도우 9x와 윈도우 ME의 지원은 버전 1.2에서 중단되었다. TortoiseSVN은 윈도우 셸 확장으로 다국어를 지원한다.
기본 설치는 영어를 지원하며, 추가 언어팩을 설치하여 다른 언어들을 제공한다. 모든 셸 확장 시와 같이 설치 이후에는 운영체제를 재시작 해야 한다.
구분된 코어 파일과 언어 파일의 설치는 윈도우 32과 윈도우 64에서 모두 이용 가능하다.
두 버전은 윈도우 64에서 동시에 설치할 수 있는데 사실 동시 설치를 권하는 이유는 설치 후에 확장이 32비트 프로그램에도 유효하기 때문이다. 이러한 경우 총 4개 파일을 (기본 설치 파일 2개와 언어 설치 파일 2개) 다운로드하여 구성할 수 있다. 시스템은 최종 설치 이후 한 번만 재시작하면 된다.
설치는 매우 쉽다: 다운로드한 .msi 파일을 실행하여 설치 프로그램을 시작하여 Custom Setup(일반 설치)를 선택한 후 기본 패키지만 선택하고 나머지는 선택 해제한다 (그림 2.1 참고). 기본 설치 경로를 수락해야 한다. 다음으로 언어 파일을 선택하라. 여기서는 어떠한 옵션도 구성할 필요가 없다. 여기까지 완료했다면 시스템을 재시작하라.
서브버전 패키지
명령 행 프로그램 svn은 Linux, BSD, MacOS X, Windows에서 이용할 수 있다. Unix 파생제품(derivative)에서는 시스템의 패키지 관리 유틸리티를 이용해 subversion 프로그램 패키지의 일부로 설치된다. 해당 패키지는 매우 많은 프로그램을 포함하는데 그 중 대부분은 저장소로부터 추출(extract)을 익명으로 다운로드 하는 데 불필요하다.
사실상 이러한 목적에 필요한 유일한 프로그램은 svn 프로그램이다.
소스 아카이브는 subversion.apache.org (이전에는 http://subversion.tigris.org)에서도 다운받을 수 있지만 사실상 소스로부터 프로그램을 컴파일할 필요가 없다. 그림 2.2에 표시된 FreeBSD 포트(port)의 info 파일에 설명되어 있듯이 의존성을 해결할 필요가 있겠다.
윈도우에서 TortoiseSVN을 작업하길 원하지 않거나 작업할 수 없는 경우 Cygwin 환경에서 명령 행 패키지를 설치하는 방법이 있는데 (http://cygwin.com/ 참고), 이용 가능한 윈도우 컴파일도 몇 가지 있다. 이는 아래 주소에서 찾을 수 있다.
http://subversion.apache.org/packages.html#windows.
위의 컴파일들은 유닉스 버전과 동일한 사용자 인터페이스를 가진다. 다른 운영체제에 해당하는 다운로드 주소도 해당 페이지에서 이용 가능하다.
Cygwin 옵션을 선택 시 이 환경은 프리 파스칼 컴파일러가 윈도우 검색 패스에 포함되어 있지 않을 경우에만 프리 파스칼로 (라자루스로) 작업이 가능한데, 그 이유는 패키지에 포함되고 GNU binutils에서 필요로 하는 cygwinl.dll 파일이 다른 Cygwin 프로그램과 호환되지 않기 때문이다. 하지만 윈도우에서 라자루스가 프로그램을 컴파일러할 수 있도록 만들기 위해 컴파일러가 윈도우 검색 경로에 있을 필요는 없다. 프리 파스칼에 포함되어 있고 컴파일러와 동일한 디렉터리에 위치한 make.exe 파일이 컴파일러와 다른 프로그램들을 실행시키는데, 디렉터리가 시스템 변수 PATH에 포함되지 않은 경우에도 마찬가지이다. Makefile 파일이 현재 디렉터리에 위치한 경우, make를 호출할 때 완전한 경로를 명시하는 것으로 충분하다. 예를 들어, 컴파일러 버전 2.2.4에서 호출문은 다음과 같다:
C:\lazarus\fpc\2.2.4\bin\i386-win32\make
Debian이나 Ubuntu에서 패키지를 설치하는 가장 수월한 방법은 synaptic을 이용하는 것이다. 'subversion'을 검색하면 설치 시 필요하고 선택해야 하는 기본 패키지 (그림 2.4 참고) 약 75개의 패키지를 표시한다.
다른 몇 가지 특정 라이브러리 모듈도 추가로 의존성으로 설치된다.
SVN 클라이언트가 설치되고 나면 원하는 이것은 SVN 디렉터리를 확인하는 데 이용할 수 있다. 이러한 경우 관련된 기본 경로의 이름만 알면 된다.
SVN 디렉터리는 웹 브라우저로 볼 수도 있기 때문에 항시 HTTP 서버에 위치한다.
하지만 브라우저에서는 개별 파일의 보기와 다운로드만 가능할 뿐 .SVN 이름으로 된 숨은 디렉터리(hidden directory)에 위치한 전체 히스토리는 보거나 다운로드할 수 없다.
라자루스와 FPC
SVN 저장소로 작업하기 전에는 저장소가 우선 어떻게 구성되는지, CVS나 SVN과 같은 버전 관리 시스템에서 파일이 어떻게 처리되는지에 대한 기본적 측면들을 먼저 이해할 필요가 있다.
모든 버전 관리 시스템은 트리 구조(tree structure)로 구조화된다. 몸통이 있으면 배포판들은 태그(tag)를 이용해 몸통에 추가된다. 각 배포판에는 고유의 서브버전들로 구성된 가지가 앞의 태그들 중 하나에서 갈라진다. 파일의 각 버전은 .SVN 이란 이름의 하위디렉터리에 백업된다. 이의 장점은 어딘가 오류가 생기더라도 오류가 나타난 버전을 검색하여 오류를 수정하거나 복귀(rollback)를 실행해 잘못된 가지를 제거할 수 있다. 간략한 설명에서도 알 수 있듯이 버전 관리 시스템은 데이터베이스 시스템과 비슷하다. 이론상으로 버전 관리 시스템은 소프트웨어 프로젝트에 대한 모든 파일, 그리고 파일과 프로젝트에 일어난 모든 변경내용을 포함하는 데이터베이스이다. 프리 파스칼과 라자루스는 여러 개의 SVN 기본 디렉터리들을(base directories) 제공하는데, 여기서 SVN 클라이언트를 이용해 프로젝트의 컴포넌트를 다운로드할 수 있다. 일반적인 다운로딩이 허용되므로 사용자 계정이나 비밀번호는 필요가 없다. 단 시스템에서 파일을 검사할 때에만 승인을 필요로 한다. 이러한 타입의 다운로딩을 'anonymous SVN' 이라 부르는데 anonumous FTP와 유사하다.
표 2.1: 프리 파스칼 SVN 디렉터리
매크로 | 대상 | 엔트리 |
http://svn.freepascal.org/svn/fpc/ | ||
...branches/ | ||
...patches/ | ||
...tags/ | ||
...trunk/ | ||
http://svn.freepascal.org/svn/fpcbuild | ||
...binaries/ | ||
...branches/ | ||
...patches/ | ||
...tags/ | ||
...trunk/ | ||
http://svn.freepascal.org/svn/lazarus/ | ||
...binaries/ | ||
...branches/ | ||
...fixes_0_9_24/ | ||
...fixes_0_9_26/ | ||
...fixes_0_9_28/ | ||
...(etc) | ||
...tags/ | ||
…binaries_0_0_26/ | ||
…binaries_0_0_26/ | ||
…binaries_0_0_26/ | ||
...Lazarus_0_9_4/ | ||
... | ||
...Lazarus_0_9_4/ | ||
...trunk/ |
프리 파스칼 SVN으로 기본 접근은 다음을 통해 가능하다.
http://svn.freepascal.org/svn/fpc 또는
http://svn.freepascal.org/svn/fpcbuild/.
라자루스 SVN은 아래를 통해 접근할 수 있다.
http://svn.freepascal.org/svn/lazarus/ (표 2.1 참고).
프리 파스칼에서 두 개의 기본 디렉터리는 두 개의 아카이브와 동등하다.
fpc-<version_number>.source.tar.gz (또는 .zip) 그리고
fpcbuild-<version_number>.tar.gz (또는 .zip).
첫 번째 디렉터리 또는 첫 번째 소스 아카이브는 fpcbuild 에서 컴파일러 묶음(suite)을 컴파일 하는 데 필요한 모든 것과 함께 실제 컴파일러 데이터를 포함한다. 하지만 자신만의 프리 파스칼 배포판을 빌드하기엔 충분하지 않다. SVN에서 파일을 check out 한 후에만 가능하다.
앞서 언급하였듯 버전 관리 시스템은 몸통, 태그, 가지를 가진다. 표 2.1은 여러 다른 디렉터리를 열거한다: binaries, patches, scripts. 이것들은 추가 디렉터리로서 소스 파일을 가져올 때 주로 간과된다. 디렉터리에 무엇이 위치하는지, 다른 디렉터리의 내용을 다운로드할 가치가 있는지에 대한 정보는 자신의 웹 브라우저로 검색을 통해 찾을 수 있다. SVN에서 파일의 일부를 다운로드하고자 할 경우 원하는 저장소에서 경로를 소스로 입력할 수 있다. 예를 들어, 라자루스에 대한 모든 파일을 다운로드하고자 할 경우 (기존 버전이 모두 포함되므로 매우 많은 시간이 소요될 것으로 예상), 소스 필드에 아래에 있는 http://svn.freepascal.org/svn lazarus/ 를 입력한다. 그리고 최근 개발자 버전을 다운로드하고자 할 경우에는 소스 필드에 다음을 입력한다: http://svn.freepascal.org/svn lazarus/trunk/. 0.9.28 버전의 가지에 달린 잎에 해당하는 서브버전 0.9.28.2는 http://svn.freepascal.org/svn/lazarus/tags/lazarus_0_9_28_2/ 에서 찾을 수 있다. 파일을 확인하는 방법은 자신이 사용하는 SVN 클라이언트에 따라 좌우된다.
기본 명령 행 동작
명령 행 지시어는 svn 프로그램을 이용해 저장소에서 데이터를 다운로드하는 데 사용된다. 해당 프로그램으로 세 가지 파라미터가 전달된다: 첫 번째는 어떤 일을 해야 하는지를 알려주는 명령, 두 번째는 소스 경로, 마지막은 목표 디렉터리이다. svn 으로 이용할 수 있는 많은 명령들 중 여기서 설명하는 익명 체크아웃 프로시저에 필요한 것은 단 두개이다. 먼저 SVN 저장소의 로컬 미러(local mirror)가 생성된 후 데이터가 그로부터 내보내진다. 아래 지시어는 라자루스의 개발자 버전을 로컬 SVN 디렉터리인 /pub/svn 으로 복사한다:
# svn co http://svn.freepascal.org/svn/lazarus/trunk/ /pub/svn/lazarus
여기서 co란 'checkout' 을 줄인 말이다. 절대 경로 대신 상대 경로가 svn 으로 전달되는 경우 데이터는 해당하는 하위디렉터리로 복사된다. 검사가 끝나면 로컬 저장소에서 데이터를 내보내야 한다:
# cd /usr/local
# svn export /pub/svn/lazarus lazarus
위의 명령은 로컬 저장소에서 현재 라자루스 하위디렉터리로 전체 구조를 복사한다. 그러나 최근 버전만 내보내며 버전 히스토리와 .svn 디렉터리는 파기된다.
SVN 복사본에서 모든 데이터를 처리 가능한 형태로 이용할 수 있기 때문에 이러한 내보내기(export)가 완전히 필요한 것은 아니지만, 원본 데이터로 작업할 경우 두 가지 결점이 있다:
- 데이터의 아카이브를 생성 시 SVN 아카이브는 내보내기 과정에서 제거되는 전체 버전 트리를 포함하기 때문에 내보내진 트리에서 얻는 것보다 상당히 규모가 커질 것이다.
- SVN 미러에서 파일을 변경하거나 파일을 삭제하는 경우 이러한 파일들은 미러를 적절하게 동기화시키기 위해 다음 체크아웃 시 교체되거나 수정되어야 한다.
SVN 저장소에서 데이터를 검사만 하고 싶다면 다른 svn 명령은 불필요하다. 그 외에 무엇이 가능한지 알고 싶다면 다음을 입력하라:
# svn help
하지만 출력 페이지와 관련해 표시하고 싶다면 more 또는 less 를 사용해야 한다. 현재를 유지하고 싶다면 명령을 업데이트해야 한다 (up 으로 축약 가능). SVN은 영리하기 때문에 로컬 SVN 디렉터리를 변경하고 아래 명령을 입력하기만 하면 된다.
# svn up
프로그램은 해당 디렉터리에서 이용 가능한 버전 데이터로부터 소스 경로를 결정한다. 이미 최신인 디렉터리를 업데이트하는 경우 다음 형태를 취한다 (프리 파스칼의 빌드 소스에 대한 언어 특정적 로컬 정의가 없는 시스템의 경우).
# svn up
Fetching external item into 'fpcsrc'
External at revision 14918.
Fetching external item into 'fpcdocs'
U fpcdocs/prog.tex
U fpcdocs/db.xml
Updated external to resivision 636.
Fetching external item into 'logs'
U logs/fpcdocs-trunk.log
U logs/lazarus-all.log
U logs/fpcprojests-all.log
U logs/fpc-trunk.log
U logs/fpcbuild-trunk.log
U logs/fpc-all.log
U logs/fpcbuild-all.log
Updated external to resivion 22353.
Updated to revision 753.
TortoiseSVN을 이용한 체크아웃
윈도우에서 TortoiseSVN으로 체크아웃(checkout)을 시작하는 방법에는 두 가지가 있다. 가장 단순한 방법은 SVN 트리를 훑어본 후 프로토콜을 변경하는 방법이다. TortoiseSVN을 설치하면 URL 필드에 프로토콜로 http:를 입력하는 대신 (예: tsvn: http://svn.freepascal.org/svn/fpc/trunk ) tsvn: 을 명시함으로써 체크아웃을 시작할 수 있다. 그리고 나면 해당 프로토콜에 사용될 프로그램을 명시하는 창이 열린다 (그림 2.5 참고). 이번 경우 당연히 SVN 클라이언트를 선택해야 한다.
TortoiseSVN을 선택하면 자동으로 구성 창이 표시된다. 여기서는 소스 주소가 올바른지 확인한 후 차후에 검색하게 될 적절한 목표 폴더를 선택해야 한다. 내 문서(My Documents)에 위치한 폴더 또는 드라이브 루트 내 디렉터리를 (예: C:\SVN) 권장한다.
Revision 에서 HEAD Revision 버튼을 선택하면 최근 버전이 (head) 다운로드 될 것이다. 아니면 버전 번호를 입력하여 구 버전을 다운로드 할 수도 있다.
데이터를 입력하고 나면 OK를 클릭하여 엔트리를 승인하고 체크아웃을 시작한다.
또 다른 방법으로는 서버 대신 로컬 디렉터리에서 체크아웃을 시작하는 방법이 있다. 이는 윈도우 익스플로러의 팝업 메뉴에서 셸 확장으로서 TortoiseSVN에 동등하게 접근할 수 있기 때문에 가능하다. 먼저 C:\SVN과 같은 빈 디렉터리를 생성한 후 해당 디렉터리에서 윈도우 익스플로러 메뉴를 열고 SVN Checkout…을 선택하라.
그러면 TortoiseSVN를 브라우저로부터 호출했을 때 열리는 창과 동일한 대화창이 열리지만 이번 경우 소스 경로가 비어 있고 목표 디렉터리 필드에 현재 디렉터리가 입력되어 있을 것이다. 라자루스 개발자 버전에 대한 소스 파일을 확인하려면 빈 URL 필드에 http://svn.freepascal.org/svn/lazarus/trunk/ 를 입력하고 OK 또는 [Enter] 키를 눌러 체크아웃을 시작한다.
프로젝트는 크기가 꽤 크기 때문에 로컬 트리가 완성되기까지 시간이 꽤 소요될 것이다. 하지만 진행 창에서는 특정 디렉터리에 새로운 하위디렉터리가 어떻게 생성되는지 볼 수 있다. 폴더에는 특수 표시가 있다: 눈금이 (tick mark) 있는 초록색 표시는 양호하지만 적색 X 표시는 손상된 폴더이다. 이는 또 다른 체크아웃으로 복구할 수 있다.
성공적으로 체크아웃이 완료되면 SVN 디렉터리에서 두 개의 새로운 메뉴 명령을 이용할 수 있다: SVN Update는 작업 디렉터리를 최신 버전으로 업데이트하고, SVN Commit... 은 이를 다시 서버로 복사한다.
후자의 동작은 저장소에 대해 쓰기가 허용된 사용자 계정이 (사용자 이름과 비밀번호) 없는 한 불가능하다.
그림 2.9는 그림 2.7보다 TortoisesSVN에 대한 하위메뉴 항목 수가 훨씬 더 많다. 프로젝트의 외부 관찰자에게 사실상 중요한 유일한 명령은 Export 이다. 이 명령은 다른 디렉터리로 미러 데이터를 복사하고 버전 데이터를 삭제한다. 하지만 디렉터리와 파일은 일반적인 드래그&드롭 동작으로 하드 디스크 상의 원하는 빈 디렉터리로 복사도 가능하다.