10.1. 레드햇 패지지 관리자 (RPM) 사용하기

리눅스의 레드햇 배포판은 커널을 포함하여 라이브러리, 응용 프로그램이 모두 RPM 파일로 제공된다. RPM 파일은 "패키지" 라고 부르기도 하는데 소프트웨어를 쉽게 설치, 업그레이드, 조회, 제거할 수 있도록 소프트웨어를 배포하는 방법이다. RPM 파일은 패키지의 이름, 버전, (필요한 경우) 다른 파일의 의존성 정보, (인텔버전인지 알파버전인지 등을 나타내는) 플랫폼, 파일을 설치하는 디폴트 위치 등의 정보를 포함하고 있다.

RPM 유틸리티는 레드햇에 의하여 처음 개발되었으며 리눅스 커뮤니티 전체에 오픈 소스 제품으로 제공되었다. 다른 개발자들이 이를 이용하여 추가의 기능을 넣기도 하였다. 파일을 RPM 방식으로 패키징하는 것은 아주 널리 퍼졌으며 이제는 레드햇뿐 만 아니라 다른 배포판에서 사용하기도 한다.

인기있는 리눅스 응용 프로그램은 거의 항상 곧바로 RPM 파일로 공개된다. 하지만 유닉스 세계에서 패키지 배포의 사실상 표준은 여전히 소위 "타르볼(tarball)" 이다. 타르볼은 ``tar'' 유틸리티로 읽을 수 있는 단순한 파일이다. 타르를 이용하여 프로그램을 설치하는 것은 대개의 경우 RPM 을 이용하는 것보더 훨씬 더 지겹다. 그렇다면 왜 사람들은 그렇게들 하고 있는가? 불행히도 최신판의 패키지를 RPM 으로 변환하는데 몇주씩 걸리는 경우가 있다 (많은 개발자들은 최초의 배포판은 타르볼로 내놓는 경우가 많다).

만약 타르를 이용하여 시스템이나 응용 프로그램을 설치하거나 업그레이드하기 시작하면 당신의 RPM 데이터베이스는 낡은 것이 되고 일관성을 잃게 된다. 이게 뭐 엄청난 일은 아니지만 (내가 슬랙웨어를 쓸 당시에는 -- 다른 선택의 여지도 없었지만 -- 대단한 불편없이 타르만을 사용하였다) 가능한한 나는 RPM 이 나올 때까지 인내심을 갖고 기다리거나 패키지의 개발자에게 아주 정중하게 요청을 한다. (당신이 스스로 RPM 파일을 만들어 다른 사람들에게 배포할 수도 있다. 이는 그런 파일을 만들 능력이 없거나 시간이 없는 개발자들에게 도움이 될 수 있다.)

어떤 소프트웨어가 RPM 형태로 있는지를 확인하는 정말로 좋은 장소는 http://rufus.w3.org/linux/RPM/ 에 있는 RPM 창고이다. 이 창고에는 어떤 RPM 파일을 찾는데 도움이 되도록 색인으로 꾸며진 범주를 제공하며 수천가지의 파일에 대한 링크를 갖고 있다.

어떤 패키지를 조회하려면, ``rpm -q 패키지이름'' (예. ``rpm -q pine'') 을 사용하면 된다. RPM 은 현재 어떤 버전이 설치되어 있는지 아니면 설치되지 않았는지를 알려준다.

그 패키지가 이미 설치되어 있고 이전 버전이라서 새로 다운로드 받은 (꼭 미리 받아두어야 함) 패키지로 갱신하고 싶다면 ``rpm -Uvh 패키지이름'' 이라고 하여 갱신을 적용할 수 있다. 모든 것이 순조롭게 실행되면 패키지는 자동으로 설치되고 곧바로 사용할 수 있는 상태가 된다. 만약 문제가 있다면 RPM 은 꽤 상세한 이유를 알려줄 것이다 (예를 들어, 다른 지원 패키지를 먼저 설치하여야 한다든가 하는 식으로). 이런 경우 아주 조금이나마 생각을 해보아야 하겠지만 문제를 알아내는 과정은 아주 단순하다.

한편으로 패키지가 한번도 설치되지 않았고 그래서 설치하기로 했다면 ``rpm -ivh 패키지이름'' 이라고 타이핑하면 된다. 만약 다른 지원 패키지가 필요하다면 RPM 이 알려줄 것이다.

가끔 소스 포맷으로만 구할 수 있는 패키지를 설치하여야 하는 경우가 있다. 사실 믿을만한 곳 (예컨대 레드햇 FTP 사이트) 에서 가져온 패키지를 설치하는 것이 아닌한 바이너리 프로그램은 트로이의 목마나 고약한 것이 들어있을 수 있으므로 (물론 소스 파일에도 그런 것이 들어있을 수도 있지만 다른 개발자에 의하여 곧바로 들통이 나기 때문에 그렇게 하지 않을 것이라고 봐야 한다) 반드시 소스 프로그램으로부터 설치를 하여야 한다.

소스로부터 패키지를 설치하는 방법은 RPM 유틸리티에 ``다시 만들기(rebuild)'' 스위치를 지정하는 것이다. 예를 들어:

rpm -ivh --rebuild foo.src.rpm

위의 명령은 ``foo'' 패키지를 설정하여 컴파일하여 (인텔 플랫폼에서 리눅스를 쓰는 경우에는) ``/usr/src/redhat/RPMS/i386/'' 디렉토리에 바이너리 RPM 파일을 만들어낸다. 그런 다음 보통의 패키지를 설치하듯이 설치하면 된다.

마지막으로, 만약 소스 패키지를 컴파일하는데 문제가 발생한다면 (아마도 makefile 을 수정하거나 설정 옵션을 바꾸거나 한다면) 소스를 컴파일하고 새로운 바이너리 패키지를 만들고 바이너리 패키지로부터 설치하기 위하여 다음과 같은 과정을 밟아야 한다 (다시 한번 상상의 ``foo'' 패키지를 예로 들었다):

rpm -ivh foo.src.rpm
cd /usr/src/redhat/SPECS
pico -w foo.spec

무엇이든 간에 ``.spec'' 파일에 수정할 것이 있으면 수정한 뒤 다음과 같이 타이핑한다:

rpm -ba foo.spec

이 명령은 ``.spec'' 에 수정한 내용에 따라 패키지를 다시 만든다. 위에서와 마찬가지로 결과로서 만들어지는 바이너리 RPM 파일은 ``/usr/src/redhat/RPMS/i386/'' 에 들어 있게 되고 나머지 설치과정은 정상적인 RPM 파일처럼 하면 된다.

RPM 에 대한 더 자세한 정보는 레드햇의 문서를 참조하여야 한다. 이 도구는 자세하게 배워둘만한 가치가 있는 극도로 강력한 도구이다. RPM 에 대한 정보의 최고의 원천은 ``Maximum RPM'' 인데 이는 포스트스크립트 포맷으로 http://www.rpm.org/maximum-rpm.ps.gz 에서 구할 수 있다. (만약 이 파일을 인쇄하기로 결정했다면 많은 종이가 필요할 것이라는 점을 명심하라!) 좀 간단한 안내서로는 http://www.rpm.org/support/RPM-HOWTO.html 에 있는 ``RPM-HOWTO'' 가 있다.