다음 이전 차례

2. 이 문서에서 쓰이는 관례

2.1 $LFS에 대해서

다음을 주의깊게 읽기 바란다: 이 문서 전체에 걸쳐서 여러분은 $LFS 라는 변수를 자주 보게 될 것이다. $LFS는 항상 LFS 시스템을 포함하는 파티션이 마운트되는 디렉토리로 대체되어야 한다. 파티션을 만드는 방법과 마운트할 곳에 대해선 후의 4장에서 자세히 설명될 것이다. 내 경우 LFS 파티션은 /mnt/hda5에 마운트된다. 만약 내가 이 문서를 읽다가 어딘가에서 $LFS를 본다면 /mnt/hda5라고 읽은 것으로 간주할 것이다. 만약 cp inittab $LFS/etc 라는 명령을 실행해야 한다는 것을 읽는다면 나는 실제로는 cp inittab /mnt/hda5/etc 라고 실행할 것이다.

중요한 것은 여러분이 프롬프트 상에서 실행하는 명령이던 편집하거나 새로 만드는 파일 안이던 여러분이 읽는 모든 곳에서 이 일을 해야 한다는 것이다.

여러분이 원한다면 LFS 라는 환경 변수를 선언할 수 있다. 이런 방식으로 /mnt/hda5 같은 것으로 대체하는 대신 $LFS를 직접 쓸 수 있다. 다음과 같이 하면 된다: export LFS=/mnt/hda5

만약 cp inittab $LFS/etc 라는 문장을 읽는다면 cp inittab $LFS/etc 라고 직접 칠 수 있으며 쉘이 이 명령을 cp inittab /mnt/hda5/etc 로 자동으로 변환해 줄 것이다.

항상 LFS 변수가 설정되어 있도록 하는 것을 잊으면 안된다. 만약 이 변수를 설정하지 않고 명령문 안에서 이를 사용한다면 $LFS는 무시되고 나머지만 실행될 것이다. LFS 변수가 설정되지 않은 상태의 cp inittab $LFS/etc 명령은 inittab 파일을 /etc 디렉토리로 복사하여 여러분의 기존의 시스템의 inittab 을 덮어씌울 것이다. inittab같은 파일은 쉽게 복구될 수 있기 때문에 큰 문제는 아니지만 C 라이브러리의 설치 도중에 실수를 한다면 여러분의 시스템을 심각하게 손상을 입힐 수 있으며 복구하는 방법을 모를 경우 다시 설치해야할 것이다. 따라서 나는 LFS 변수를 사용하지 말것을 강력히 권유한다. 여러분 스스로가 $LFS를 직접 /mnt/hda5 등으로 대체하는 것이 바람직하다. /mnt/hda5를 입력하는 동안 오타를 입력했을 경우 생길 수 있는 최악의 경우는 "no such file or directory" 라는 에러가 발생하는 것일 뿐 여러분의 시스템을 해치진 않을 것이다. 내가 여러분에게 경고를 하지 않았다고는 말하지 말길 바란다 ;)

2.2 소프트웨어를 받는 방법

이 문서 전반에 걸쳐서 나는 여러분이 다운 받은 모든 패키지들을 $LFS/usr/src 의 서브디렉토리 아래에 저장하고 있다고 가정할 것이다.

나 스스로는 $LFS/usr/src/sources 디렉토리를 사용하였다. sources 안에서 여러분은 0에서 9까지의 디렉토리와 a에서 z까지의 디렉토리를 발견할 것이다. sysvinit-2.78.tar.gz 같은 패키지는 $LFS/usr/src/sources/s/ 아래에 저장된다. bash-3.02.tar.gz 같은 패키지는 $LFS/usr/src/sources/b/ 아래에 저장되며 나머지도 이와 같다. 물로 여러분이 이런 방식을 따를 필요는 없으며 나는 단지 예제를 주었을 뿐이다. 패키지들을 $LFS/usr/src 밖에 보관하고 서브디렉토리로 이동하는 것이 좋다. 이렇게 하면 우리가 패키지를 풀어서 작업을 하는 $LFS/usr/src 디렉토리를 깨끗이 유지할 수 있다.

다음 장은 여러분이 다운받아야 할 모든 패키지들의 목록을 담고 있다. 그러나 아직 우리의 LFS 시스템을 담을 파티션을 만들지 않았으므로 임시로 여러분이 원하는 다른 곳에 보관해야 하며 4장이 끝나면 이것들을 $LFS/usr/src/<somesubdirectory>로 복사하는 것을 잊으면 안된다.

2.3 소프트웨어를 설치하는 방법

패키지를 가지고 실제로 무언가를 하기 전에 그것을 먼저 풀어야(unpack) 한다. 흔히 패키지 파일이 tar로 묶이고 gzip으로 압축된 것을 볼 것이다 (이는 .tar.gz나 .tgz의 확장자로부터 알 수 있다). 나는 ungzip과 untar 방법에 대해 매번 설명하지는 않겠다. 이 단락에서 그 방법에 대해 한 번만 얘기를 할 것이다. 여러분은 .tar.bz2 파일을 받을 수도 있다. 이 파일은 tar로 묶인 후 bzip2 프로그램으로 압축된 것이다. bzip2는 흔히 쓰이는 gzip보다 더 좋은 압축 성능을 가지고 있다. bz2 파일을 사용하기 위해선 bzip2 프로그램이 설치되어 있어야 한다. 전부는 아니지만 대부분의 배포본이 이 프로그램을 포함하고 있으며 따라서 이미 여러분의 시스템에 설치되엉 있을 가능성이 높다. 만약 그렇지 않다면 여러분의 배포본의 설치 툴을 사용하여 설치한다.

여러분이 파일을 풀고 바로 그 파일이 더이상 필요없기 때문에 지웠다는 것을 주의하라. 이것이 그 파일을 이동이 아닌 복사를 해야 하는 이유다. 만약 이동을 시키고 지워버렸다면 이 패키지가 또 필요할 경우 다시 다운로드를 해야 할 것이다.

패키지 압축파일이 풀리면 현재 디렉토리 아래에 새로운 디렉토리가 만들어질 것이다 (그리고 이 문서는 여러분이 파일을 $LFS/usr/src 디렉토리 아래에서 풀었다고 가정한다). 설치 과정을 계속하기 전에 새 디렉토리로 이동해야 한다. 위의 모든 과정은 'xxx 압축파일을 푼다' 로 요약된다. 따라서 이러한 것을 읽게 되면 패키지를 $LFS/usr/src로 복사하고 tar 프로그램과 gzip/bzip2를 사용하여 압축을 푼 후 새로 만들어진 디렉토리로 이동한 후에 다음 설치 과정을 읽어야 한다.

패키지를 설치한 후 이를 가지고 두 가지 일을 할 수 있다. 소스가 들어있는 디렉토리를 지우거나 그냥 둘 수 있다. 그냥 두기로 했다면 내겐 좋다. 그러나 이후의 장에서 같은 패키지가 필요하게 된다면 (7.2장 까지의 모든 소프트웨어는 7.3장에서 재설치될 것이다) 이를 다시 쓰기 전에 디렉토리를 먼저 지워야 한다. 그렇지 않으면 이전 설정값들 (여러분의 기존의 리눅스 시스템에는 적용되지만 LFS 시스템으로 컴퓨터를 재시작한 후엔 더이상 적용되지 않는 설정값들) 이 쓰여서 문제가 될 수 있다.단순히 make clean을 하는 것이 소스 트리를 완벽히 깨끗하게 한다고 보장할 순 없다. 설정 스크립트는 make clean 과정에 의해 제거되지 않는 다양한 서브디렉토리 안에도 파일을 생성한다.


다음 이전 차례