Red Hat Linux 1

소개와 rpm 사용법

이만용 /알짜 리눅스 제작팀

 

레드햇사에 대하여
레드햇 리눅스에 대하여
RPM패키지 기술이란
리눅스 패키지 관리자 RPM
쉬운설치 멀티플렛폼등 기타





레드햇 리눅스 2

여러분은 이미 리눅스 세계에서 배포판이 얼마나 중요한 유치를 갖고지 알고 있을것이다. 사실 리눅스는 리누스와 수많은 해커들이 만들고 있는 커널을 가리키는 말이지만 우리와같은 일반인에게 있어서 리눅스는 현실적으로 슬랙웨어 , 레드햇,데비안등의 배포판(Distribution)형식으로 인식된다. 리눅스 커널을 중심으로 실제로 운영 가능한 하나의 시스템을 미리 셋업해두는 일은 관심을 갖는 개인 또는 단체에 의해 배포판이라는 형식으로 열매를 맺어왔다. 개인적인 노력의 예는 바로 패트릭 볼커딩씨의 슬랙웨어가 있으며 같은 단체라 할지라도 레드햇 배포판의 경우에는 영리를 목적으로 하는 레드햇사의 성원들에 의해 만들어지고 있는 반면, 데비안 배포판은 리눅스 처럼 '완전히 자유로운' 배포판을 만들겠다고 다짐하는 이안 머독씨와 수많은 패키징 자원자들에 의해 만들어지고 있어 그 특색이 분명하다. 이 외에도 칼데라 ,오픈 리눅스 ,익드실라의 배포판,S.u.S.E 배포판등 우리가 알고 있는것보다도 훨씬 많은 배포판이 존재한다는 사실을 잠깐 애기해두어야 할것 같다. 배포판은 각 개인/단체의 성격을 달리하는 것은 물론 , 결론적으로 시스템의 미묘한 또는 중요한 부분의 차이를 가져온다. 초보자들에게는 그것이 어떤 배포판이던지 리눅스라는 점에서 는 차이가 없다고 말할 수는 있으나 시스템의 기본운영 스타일의 차이는 비호환성으로 비춰질 가능성도 있다. 슬랙웨어, 레드햇, 데비안 배포본을 오래동안 사용하는 사람은 보통 다른 배포판을 접하면 매우 곤혹스러워 하기 일쑤이다. 특히 상당수 리눅스 사용자들은 슬랙웨어 를 처음으로 리눅스를 배워 온 상태여서 비교적 최근에 두각을 나타내고 있는 레드햇,데비안, 등의 새로운 배포판에 익숙해지기 힘들어하곤 한다. 필자는 이 공간을 이용하여 레드햇 사(Red Hat Software Inc.)의 배포판, 레드햇을 여러분에게 조금은 자세히 소개하고자 한다. 이미 알짜 레드햇 이라는 이름으로 반쪽 한글화된 한국적 배포판을 잡지사를 통해 몇번 배포한적이 있기 때문에 상당수의 사람들이 레드햇 배포판이 어떤것인가 약간의 경험을 해보았을것이다. 또한 적지 않은 사람들이 어떤 배포판보다 도 쉽다 는 통념과는 반대로 새로운 레드햇 리눅스 시스템에 익숙해지지 못하고 있다는 사실은 알고 있다. 이에 레드햇 리눅스 시스템에 대한 충분한 이해를 목적으로 글을 몇회 연재하고자 한다.

레드햇 사에 대하여                                                                                            top

레드햇 리눅스는 미국 노스케롤라이나 더럼(Durham)이라는 교육/연구 도시에 위치하고 있는 레드햇 소프트웨어사에서 만들어 배포하고 있느 배포판으로서 수많은 리눅스 와 관계된 제품을 만들어내고자 하는 컴퓨터 소프트 웨어 개발 회사 이다. 그들의 웹페이지에 있는 회사 소개에 의하자면 그들의 목적은 '컴퓨터 전문가들에게 최신의 전문도구를 제공하는일 "이라 한다. 보통영어로 "Cutting Edge"라고 하는 최신의 흐름을 손수 따라갈수 없는 많은 전문가들에게 리눅스 기반의 최신도구를 제공한다는 것인데 사실 배포판이라고 하는것이 갖는 성격이 모두 이런것 아니겠는가 .? 마음만 먹는다면 일단 하나의 배포판으로 시스템을 가동시킨후에 새로운 배포판 설치 작업이나 배포판 업그레이드를 하지 않고도 하루에 몇개씩 쏟아져 나오는 모든 소프트 웨어를 종일 리눅스 박스 앞에 앉아 설치할수는 있다. 하지만 이는 그렇게 유괘한 일도 아니며 현실적이지 않아 우리는 암암리에 리눅스 배포판 제작자들에게 우리의 일상 업무중의 일부를 의뢰하고 있다고 본다. 리누스를 위시한 커널 개발자들, 자유소프트웨어 제작자들은 그것을 유기적으로 작동하도록 만들어내고 배포판 제작자들은 그것을 유기적으로 작동하도록 하나의 운영 가능한 시스템을 구축하고 일반 사용자들은 그 성과를 즐기거나 그 위에서 새로운 창조작업을 수행해나간다. 이것이 현재 리눅스세계가 굴러가고 있는 모습이 아닐까 ? 이외에도 리눅스 관련 출판사업과 지원사업을 해 나가고 있다. 나중에 언급할 그들의 RPM패키징 기술이나 기타 소프트 웨어를 GPL로 다시금 자유소프트 웨어 세계에 기여하고 있으며 리눅스 관련 프로젝트와 GNU프로젝트에 일부 금전적지원을 하고 있다. 무엇보다고 리눅스를 컴퓨터 역사에 있어서의 눈부신 혁명적 사건이라고 보며 리눅스를 믿는다면 점에서는 우리와 다를바가 없다고 본다.

레드햇 리눅스에 대하여                                                                                           top

레드햇 리눅스의 특징은 다음과 같다.
1. 레드햇 사에서 개발중인 새로운 패키징 시스템인 RPM(Redhat Package Management) 기술에 의거하고 있다.
2. 레드햇 배포판은 무엇보다도' 쉬운 설치' , '쉬운 관리'를 목표로 하고 있다. .X 윈도우 제어판(control-penel) 등 사용자편리를 위한 시스템설정도구를 제공하고 잇다.
3. 대부분의 배포판이 인텔 시스템만 지원하고 있는 반면 , 레드햇 리눅스는 인텔/ 알파/스팍시스템에 대하여 항상 같은 속도로 동일한 리눅스 시스템을 지원하는데 앞장서고 있다.
4. 공식 (official) 박스 배포판과 FTP 다운로드 가능한 공개 배포판 두버전으로 나누어 배포하고 있다. 공식 배포판의 가격은 미국 달러화로 49.95달러인데 한국에서 해외주문하는경우 운송비 또한 만만치 않다. 공개부분은 ftp,redhat.com과 미러사이트 를 통해서 구할수 있다. 또는 몇몇 시디제작자들이 공개부분만을 시디에 담아 아주 저렴한 가격에 판매하기도 한다.

RPM 패키지 기술이란.?                                                                                           top

레드햇 배포판이 다른 배포판과 달리 레드햇 배포판이라고 부를 수 있는 근거는 무엇보다도 레드햇사에서 개발하고 제시하고 있는 RPM패키징 기술이라할수 있다. 정의식으로 말하자면 레드햇 배포판은 RPM패키징 기술에 의거하여 리눅스를 패키징하여 제시하고 있는 배포판이라고 말하면될것이다. 그럼 RPM패키징 기술이 다른 기술과 어떻게 다른것이며 개발동기가 무엇인지 알아보겠다. 100% 모두가 인정할수 있는 사실은 아니겠지만 레드햇, 데비안등의 최신 배포판이 나오기 전에 전세계 리눅서 들에게 가장 사랑받았으며 독보적인 배포판은 역시 슬랙웨어 (Slackware) 라는 이름의 배포판이 었다. 우리나라의 경우 특히 더욱 그러했는지도 모른다. 그간 잡지사를 통해서 배포된 배포판도 모두 슬랙웨어였다는 사실도 한몫 하지않을까 ? ( 요즘 은 레드햇만 배포한다는 비난도 있지만...) 슬랙웨어는 배포판을 만들때 아주 간단한 기술에 의거하고 있다. GNU/리눅스 시스템을 사용하는 사람이라면 누구든 표준적으로 갖고 있는 tar과 gzip를 사용하여 패키지를 묶고 압축한다. 도스시스템 사용자를 충분히 의식하여 확장자도 3 자제안을 고려한 .tgz로 하였다. 묶고 압축하는 것과 마찬가지로 tar과 gzip만으로 쉽게 풀어 설치한다. 단 슬랙웨어 리눅스 시스템에서는 아주 간단한 수준의 패키지 관리를 위해 setup.pkgtool등의 몇가지 관리 프로그램을

[young@moon tmp]$ tar xzvf bash,tgz 
 
drwxr-xr-x root/root 0 Sep 11 00:53 1996./ 
 
drwxr-xr-x root/bin 0 Sep 11 00:51 1996 bin/ 
 
-rwxr-xr-x root/bin 279352 Apr 1 02:50 1997 bin/bash.new 
 
drwxr-xr-x root/root 0 Apr 1 02:50 1997 usr/ 
 
drwxr-xr-x root/root 0 Jan 6 22:44 1995 usr/doc 
 
drwxr-xr-x root/root 0 Dec 22 06:17 1995 usr/doc/bash 
 
-rw-r--r-- root/root 1908 Jul 8 19:51 1994 usr/doc/bash/README 
 
-rw-r--r-- root/root 9829 Agu 18 22:39 1994 usr/doc/bash/RELESE 
 
-rw-r--r-- root/root 342 Agu 27 00:52 1994 usr/doc/bash/NEWS 
 
-rw-r--r-- root/root 47970 Jul 19 03:36 1994 usr/doc/bash/articlae.txt 
 
-rw-r--r-- root/root 13934 Jun 21 06:04 1991 usr/doc/bash/COPYING 
 
drwxr-xr-x root/root 0 Agu 7 04:49 1995 usr/doc/man 
 
drwxr-xr-x root/root 0 Agu 1 02:50 1997 usr/doc/man/man1 
 
-rw-r--r-- root/root 41733 Apr 1 02:50 1997 usr/doc/man/man1/bash.1.gz 
 
-rw-r--r-- root/root 442 Apr 1 02:50 1997 usr/doc/man/man1/builtins1.gz 
 
drwxr-xr-x root/root 0 Apr 1 02:50 1997 usr/doc/man/man3 
 
-rw-r--r-- root/root 10022 Apr 1 02:50 1997 usr/doc/man/man3/readline.3.gz 
 
drwxr-xr-x root/root 0 Apr 1 02:50 1997 usr/info 
 
-rw--r--r-- root/root 31603 Apr 1 02:50 1997 usr/info/features.info.gz 
 
drwxr-xr-x root/root 0 Sep 11 00:53 1996 install 
 
-rw-r--r-- root/root 71 Sep 11 00:53 1996 install/doinst.sh 

제공하고 tar.gz 형식의 패키지 안에 슬랙웨어만의 규칙을 세워두었다 . 일반적으로 자유소프트웨어 프로그래머 들이 소스를 배포하는 .tar.gz 와 다른바는 하나 패키지 안에 install이라는 디렉토리를 만들고 그안에 doinst.sh라는 설치과정에 필요한 행위를 담은 스크립트를 넣어두고있다. 따라서 슬랙웨어 패키지 이름이 그냥 .tgz라고해서 아무렇게나 tar와 gzip으로 풀어 설치해서는 안된다. 슬랙웨어에서 제공하는 pkztool을 사용하여 설치후 적절하게 install 디렉토리의 doinst.sh 스크립트를 실행시켜야한다 전형적적인 스랙웨어 패키지 하나를 살펴보자 . 다음은 bash패키지 이다.

if [-r bin/bash]: then 
 
mv bin/bash tmp 
 
fi
 
mv bin/bash.new bin/bash 

패키지내용은 루트(/) 디렉토리를 기준으로패키지 구성물이 묶여져 들어있다. 따라서 Tar로 풀때는 시스템 루트 디렉토리에 서 풀거나 - C 옵션을 사용해야 한다. 이제 install 디렉토리에 들어있는 doinst.sh 내용을 한벌 살펴보자 스크립트 의 내용은 전형적인 본쉘스크립트이다. 만약 bin/bash파일이 존재한다면 tmp디렉토리로 옮겨둔다. 그 다음패키지 설치에 풀려나오는 bin/bash.new 파일의 이름은 bin/bash로 변경한다. 슬랙웨어의 패키지 관리는 아주 간단한 개념에 기초가혹 있다 우선 리눅스 시스템은 유닉스 시스템에 기반하고 있기 때문에 소유자와 허가권을 잘 보존해주는 tar를 사용하여 묶기로 결심했을것이다. 그 다음 패키지의배포크기를 줄이기 위하여 압축률이좋고 무엇보다도 GNU 소프트 를 사용하였다. 여기에서 최소한의 배포판 패키지 관리를 위하여 doinst.sh 와같은 설치 뒷 마무리 스크립트를 추가한 형태이다.

문제점)

문제점은 간단하고. 슬랙웨어 리눅스 시스템의 업그레이드는 거의불가능하기 까지하며 새롭게 설치하는것이 더 나을 정도이다. 이는 볼커딩씨 스스로의 답변 속에서도 나온다.

In my opinion upgrading through this method is probably more trouble than if's worth <중략> The *corrent* and best way to upgrade to a new distribution version is to back up everything you want saved and then reinstasll from scratch.

-슬랙웨어 upgrade.txt에서 인용

단적으로 슬랙웨어 패키지 에는 '패키지 버전 번호" 라는 것자체가 없다. 슬랙웨어 3.2 버전의 bash 패키지의 이름이 bash.tgz인데 슬랙웨어 3.3 버전도 마찬가지로 bash.tgz라는 이름을 갖는다. 따라서 어느날 문득 패키지만 하나 달랑 갖고 있는 경우 그 패키지가 버전 몇의 bash를 포함하고 있는지는 대충 짐작하거나 (tar등으로 패키지 내용물을 보다보면 버젼에 대한 힌트를 얻을수 있는 문서화일들이 들어있는 경우가 있다. ) 설치해보는 수 밖에 없다. 또한 실제 사용자들로부터 제일 많은 지적 중 그동안 '공들여 만들어둔 '자신의 설정화일을 여지없이 잃어버리고 처음부터 다시(From scratch!) 시작해야한다는 끔찍한 사실은 얘기하는 경우가 많다. 세상에 어느 리눅스 시스템과도 다른 자신의고유한 시스템이망가지는 순간이다. 이는 슬랙웨어의 문제점이라고 보기는 힘들다. 앞서 애기했듯 아주 간단한 개념과 간단한기술에 의거 하였기 때문에 처음부터 한계를 가질수 밖에 없는 숙제 였다고분다. 좀더 뛰어난 배포판 기술을 위해 바로 RPM. 데비안 패키징 기술이 나오게 된배경이다.

목표)

1.시스템을 완전히 갈아엎지 않고도 안전하고 효율적으로 버전관리를 할수 있는 편리한 패키징 시스템을 만들어야한다. 새로운 배포판이 나와도 백업하고 시스템을 지우고다시 백업한 내요을 복원하는 절차를줄여야한다.

2. 사용자가 만들어둔 설정파일 등을 안전하게 보관해주고 자동으로 백업해주는등 좀더 지능적인 방식의 패키징 시스템이여야 한다.

3. 버젼관리 설정파일 보관이외에도 패키지 검색 점검,등 시스템의 완전 무결성을 점검할 다양한 기능이 추가로 제공되어야 한다. 레드햇 패키지 시스뎀에 대하여 간략히 알아보자 . 우선 전형적 레드햇 패키지 파일명은 다음과 같다.

id.so-1.7,14-5.I386.rpm

<패키지 이름 >-<버전>-<패키지 릴리즈 번호>.<아키택처>.rpm

위의 예에서 패키지 이릉은 동적 링커/로더인 id.so 이다 1.7.14는 id.so의 버전을 의미한다. 그 다음 붙는 5는 id.so와는 관련없이 배포판 패키지에 관련된 숫자이다. 어떤이유에서 든 같은 id.so버전 1.7.14 를 패키지로 만들어 배포하는데 이번에는 다섯번째임을 나타낸다. 보통 배포판 제작자들도 인간이므로 실수를 하기 마련이다 그들이 이번에도 실수를했다고 생각하여다음 패키지를 내 놓는다면 6이라는 숫자가 붙을것이다. 이 숫자에 정확한 규칙이 있는것은 아니고 엿장수 마음이다.
레드햇의 경우에는 <아키텍처>부분에도 신경을 쓰고 있다. 리눅스는 인텔에서만 돌아가는 운영체제가 아니라는 사실을 알고 있을것이다. 우리가 지겹도록 사용하고 있는 인텔머신은 i386 디지탈 알파 머신에 대해서는 alpha그리고 선 스팍용은 spacr이라고 표기한다.
맨 뒤의 rpm은 RPM 패키지임을 알려준다.
슬랙웨어 패키지와는 달리 버전번호 .릴리즈번호 채크를 하도록 되어있다.
RPM 화일은 보통의 tar gzip으로 볼수 없는 자신만의 고유파일형식을가지고 있다. 사실 RPM파일의 패키지명,버전번호,릴리즈번호,그리고 기타중요한 정보들은 파일명에 존재하는것이 아니라 파일헤더부분에 별로저장되어 있다 따라서 파일명을 변경하여도 상관없다. 파일 내부형식은 다음과 같다.

RPM헤더 cpio.gzip으로 묶은 설치자료 

슬랙웨어와 달리 tar를 쓰지않고 cpio를 썼다는 점에서 조금 다르다. 필자는레드햇사에서 tar대신 cpio를 사용했는지에 대해서는아직도 모른다. RPM패키징 기술이 오로지 리눅스만을 타켓으로 하지 않고 PSSIX시스템이면 어디서든 채용할수 있는 범용 기술이될수 있도록 하기 위해 선택하다 cpio에 정착했는지는 모르겠으나 이에 대해서는 의견이많다.
rpm2cpio르를 레드햇 리눅스에 포함된 실행파일을 사용하면 RPM파일의 앞부부 헤더를 잘라내어 순수하게 cpio로 묶인 바이너리를 추출해낼수 있다.

rpm2cpio < id.so-1.7.14-5.i386.rpm > id.so-1.7.14.cpio 

file 명령으로 확인하면 ASCII cpio archive (svr4 with CRC)형식이라고 말해준다

레드햇 패키지 관리자 rpm                                                                                           top

슬랙웨어의 패키지 관리자에서는 pkgtool이라는 패키지 관리자를 사용하는 반면 레드햇 시스템에서는 rpm이라는 명령을 사용한다. 이 prm명령 또한 여러분에게 새롭게 익혀야할 하나의부담으로 다가오기는 하지만 조금나 시간을 내어 알아두면레드햇 리눅스 시스템을 효율적으로 다룰수 있다.어떤 대상이든 자신의 힘으로 능수 능란하게 다룰수 있는 시스템이 개인적으로 좋은것 아닐까 생각한다. rpm명령에 익숙해지지 않으면 아마도 레드햇 리눅스 시스템은 생각보다 여러분에게 그렇게 매력적으로 보이지 않을 것이다.

rpm명령의 기본을 살펴보자
rpm은 매우 복잡한 프로그램임에 틀림없다. 레드햇 시스템에 필요한 모든일이 바로 rpm명령에 의해 수행되기 때문이다. rpm명령은 기본적으로 다음과 같은 수행모드를 갖고 있다.
1. 설치모드 : rpm-i [설치옵션]<패키지화일명>+
2. 제거모드 : rpm-e<패키지 파일명>+
3. 검증모드 : rpm-V|-y [검증옵션]
4. 질문모드 : rpm-q [질문옵션]
5. 확인모드 : rpm-K <패키지 파일명>+
6. 제작모드 : rpm-b [제작옵션]<패키지스택>+

이글에서 우리는 일단 설치제거 검증 질문 확인에 대해 서만 알아보겠다. rpm명령으로 패키지를 제작하는 방법에 대해서는 한번 연재 분량을 모두 할애해도 모자를 만한 중요한 주제이므로 나중으로 미룬다.

이미 필자가 rpm명령에 대한 맨 페이지를 한글화해둔것이 있으므로 알짜 레드햇 배포판도는 인터넷에서 구하여 설치하면다음 명령으로 간단한 rpm옵션을 확인할수 있다.

rpm-help

rpm은 GNU식의 긴 옵셥을 사용할수 있도록 되어 있다. 그리고 엄청나게 많은 옵션을 가지고 있기 때문에 사람을 질리게 할 요소가 다분하다. 그러나 이것도 사람이 만든것인 이상 개념만 잘 잡고 들어가면 하나도 어렵지 않다. 일단 패키지 관리는 rpm명령 이것 하나만으로 된다는 사실이 중요하다.

설치하기 옵션(-i)

rpm-i xmemory-3.7-2.i386.rpm 


설치는 매우간단하다 설치(isntall)을 의미하는 -i 다음에 설치할패키지 명을 원하는 만큼 적어준다. 패키지설치에 확신이 있는 사람은 다음처럼 해버리기도한다. :)

rpm -i * 

현재 디랙토리에 들어있는 prm패키지 파일을 모두 설치한다. 하지만 언제나 이것이 성공하리라는 보장은 없다. ! 바로 레드햇,데비안등의 향상된 패키지 시스템을 사용하는 사람들에게 축복이면서 저주이기도한 '의존성(Dependency)' 문제때문이다. 초기 레드햇 패키징 시스템에서는패키지들 간의 의존성이라는 개념이 없었다. 그러나 기술적 경쟁자라고 할 수 있는 데비안 패키징에서는 매우 휼륭한 의존성개념이 있었고 그것을 빠른 시간내에 흡수하였다 필자의 생각으로는의존성 개념이 RPM으로 들어오고 나서야 RPM기술이 각광을 받지 않았는가 본다.
설치에 실패하는경우는 일반적으로 다음과 같다.

1. 설치하려는 패키지가 이미 설치되어있다
2. 설치하려는 패키지의 버전이 이미 설치되어 있는 패키지 보다 버전이 낮다.
3. 설치하려는 패키지의 내용물이 다른 패키지의 내용물과 중복되거나 덮어쓸 위험이 있다.
4. 설치하려는 패키지가 우선 다른 패키지를 설치한 다음에 야 설치할 수 있는 의존성에 결려있다 따라서 의존성에 우선 하는 패키지를 먼저 설치해야한다.

1) 2)의 상황은 별도의 설명이 필요없으리라고 본다. 이미 설치된 패키지를 다시 설치하거나 낮은 버전을 설치하는것은 보통 무의미한 일이다. 3)번의 경우에는 일반적으로 레드햇 사에서 내 놓은 패키지 만을 설치하는 경우에는 만나지 않을뜻한 에러이다. 레드햇 사가 RPM패키지를 내 놓기는 하지만 오로지 그들만이 RPM 패키지를 만들수 있는것은 아니다 일례로알짜 레드햇 배포판초기에서는한글 패키지와 영문패키지의 충돌때문에 이런 에러를 많이 경험했을것이다. 레드햇 사에서 나오는 공식 패키지 말고도 레드햇 리눅스 사용자들이 자발적으로 만들어서 배포하는 패키지 들이 있기 마련이다. 이 패키지를 설치 할때에는 약간의주의가 필요하긴하지만 사소한 패키지내용의 충돌을 무시하고 사용하는것도 좋다.
제일 어려운 상황은 바로 '의존성검사 " 에 걸린 경우이다. 가장간단한 예로 X 어플리케이션들은 일단 X 윈도우가 설치되어 있다는것을 전재로해야한다. 우선 X윈도우 패키지를 설치하여 X 윈도우가 실행될수있는 환경이 되어야 X 어플리게이션을 쓸수 있으므로 RPM패키지 시스템에서 친절하게 경고해주는것이다. 어떤 패키지를 설치해야하는지에 대하여 메세지를 보여준다.

다음은 설치시 알아두면 좋은 옵션이다.
-U : 이 옵션은 -i 대신 사용할수 있다. 그리고 필자의 경험으로는거의 모든경우 -i 는 쓰지 않는것이 좋다고 말하고 싶다 -u는 업그레이드(UPGRADE)를 의미한다. -I는 단지 패키지설치만 할 뿐 버전 관리를 해주지 않는다. 따라서 같은 패키지 에 대하여 버전이 높을것을 그냥 -I로 설치하려 둘때는 패키지 내용물이 충동한다는 결코 유쾌하지않은 메세지를 보여줄것이다. 이 와는 달리 -u는 높은 버전을 설치할경우 구버전을 삭제하는 과정을 대신해준다. 사실 어떤 패키지를 처음 설치할 때에도 -U를 사용할수 있다 삭제할 구버전이 없으므로 그과정은 생략된다 필자는 -i 옵션을 사용하는 경우가 거의 없다.
-v : 이 옵션은 진행괒어을 좀더 자세히 출력 하도록 지시한다 - vv 이렇게하나더 붙이면 더 자세히 보여준다.
-h ,--hash : 이 옵션은 여러분이 ftp에서 hash명령을 주고 get/put 할때 의 광경처럼 진행과정을 샵(#)표시로 보여준다. 일반적으로 rpm -ivh보다는 rpm -Uvh라고 하면 좋다.

--test : 매사에 꼼꼼한 사람들을 위한 옵션이다. 패키지를 설치하지 않고 횽내만 내보면서 충돌사항이 있는지 점검한다.

다음 옵션은 여러분의 책임하에서 사용해야한다.RPM패키지의 똑똑한 의존성 점검등이 오히려 부담스럽거나 멍청하게 작동하는 경우가 있을수있다.패키지 제작을 잘못한 경우도 포함된다. 여러분이 어떤 패키지의 구성물이무엇을 하는데 사용하며 충돌부분이 어떤 의미를 갖는지를 알고 있으며 강제로 설치하고자 할때는 다음의 위험한 옵션을 사용할수 있다.

--oldpakage: 일반적으로 높은 버전으로 업그레이드 하지만 어떤때는 하위버전으로 다운 그레이드 해야 할 필요도 있다. 항상 신버전이라고 해서 좋은것은 아니다. 여러분이 원하는 기능이 개선된 신버전 또는 정말 로 업그레이드 해야할 필요가 있는 신버전이 중요한것이 아닐런지...구 버전으로 다운 그레이드 할때 사용한다.

--replacefiles : 패키지 내용물 간의 충돌이 있다 하더라도 무시하고 설치하게 만든다.

--replacepkgs : 이미 설치되어 있는 똑같은 패키지를 교체하여 다시 깨끗하게 설치할때 사용한다. 보통 용도는 실수로 패키지의 중요한 파일을 지워서 재대로 작동하지 않는 다는것 을 알았을때 다시 원 상태대로 설치하려는 경우에 자주 사용된다.

--force : 이 옵션은 '강제로 그냥'; 설치 하라는 지시인데 위에서 설명한 -replacepk --replacefiles, --oldpackage을 사용한 것과 같다. 따라서 보통의 경우 위에서 얘기옵션보다는 그냥 단순하게 --force라고 적는다.

--nodeps: 매우 중요한 옵션인데 RPM 패키지 라고 해서 완전 무결한 것이 아니기 때문에 어쪄다 한 번씩 사용할 때가 있다. 패키지 의존성을 무시하고 설치하는 경우에 사용한다. 훌륭한 패키징 시스템을 지향하는 레드햇이지만 아이러니 하게도 --force와 --nodeps를 잘 사용할 줄 알아야 편하다.
이외의 옵션은 맨 페이지(rpm(3))를 참고하기 바란다.

제거하기 옵션 (-e)

제거옵션은 erase 의 앞자들 따서 -e 이다. 제거는 간단하다 단지 패키지 이름만 적어주면된다.

rpm -e TheNextLevel
 
rpm -e Xfree86-3.3.1

패키지 이름 ,버전번호,릴리즈번호까지 적을수 있는데 일반적으로 패키지 이름만 적는다. 여러분에게 그럴 듯한 이유가 있어 그냥 강제로 지워야 할 필요성이 있다면 --nodeps즉 의존성 무시 옵션을 사용할 수 있다.

현재 여러분의 시스템이 설치된 패키지 목록 알아보기는 바로 다음에 설명할 질문옵션에서 알아보겠다.
이미 아는 사람 들도 있겠지만 제거에 관한 한 레드햇제어판의 glint를 사용하면 마우스클릭 몇 번만으로 간단히 삭제가 가능하다. 문제는 아직(레드햇 4.2 버전까지도 ) 의존성에 걸려 제거하지 못하거나 설치하지 못하는 것에 대해서 glint가 제대로처리하지 못하거나 거부해 버린다는 것이다.
어찌 되었든 "깨끗하게" 지울수 있다는 것은 장점이다.

질문하기옵션(-p)

레드햇 패키징 시스템의 진수는 바로 질문하기/검증하기 가 아닐까 생각한다. 레드햇 패키징시스템에서는 패키지 데이터 베이스를 관리하고 있기 때문에 RPM 패키지로 설치한 퐈일에 대해서는아주 훌륭한 패키지 관리를 할수 있다. 여러분이 처할수 있는 몇가지 조건을 나열해보겠다.

1. 복잡한 리눅스 디렉토리를 돌아다니다 여러분이 이해 할수 없는 어떤 파일을 발견하였다. 도대체 이 파일이 어떤 패키지에 속해 있는지 알고 싶다.

2. 도대체 시스템에 몇 개의 패키지가 설치,등록되어있는 지 한눈에 알고 싶다.

3.인터넷을 돌아다니다 어떤 RPM 패키지를 발견했는데 그 에 대한 어떤 설명파일도 찾을수 없었다. 간단한 패키지 설명과 그 내용물을 보고 싶다.

질문하기에 관련된 옵션은 약간 많은 편이다. 반복되는 이야기지만 복잡한 옵션이긴해도 알아두면 매우 유용한 옵션이고 아는 만큼 여러분의 레드햇 리눅스에 대한 경험이 즐거운 경험이 될 것이다.

알고 싶은 내용 선택하기 옵션

일단 몇가지 에를 들어보겠다.

1. rpm -q -a

의 명령은 질의 (query) 하되 모든 패키지에 대하여 (-a) 수행토록 지시한다.

결과는 다음과 같이 현재시스템에 설치된 패키지명-버전-릴리즈 번호의 목록이다 제대로 정렬되어 표시되지 않으므로 sort를 사용하면 좋으리라. 이렇게 일단 설치된 패키지가 무엇인지 패키지 이름을 확인할수 있고 몇 개인지 알수 있을 것이다.

flex-2.5.4-1
 
reshat-release-4.2-1
 
filesysetm-1.2-1
 
celvis-1.3-1
 
ssh-1.2.17-3i
 
xinitrc-1.2-1
 
intimed-1.10-3
 
grep-2.0-5
 
smbfs-0.8-1
2,rpm -q -i ssh

위 패키지 이름을 확인한후 패키지에 대하여 간단한 정보를 볼수 있다 패키지 이름 버전 릴리즈 번호는 물론 간단한 요약문을 볼수 있다.패키지 에대한 정보(infornation)을 알아보겠다는 옵션이 바로 -i 이다.

3.rpm -q-i -l ssh

-i 와-I 의 옵션을 모두 사용하면 먼저 패키지 정보를 보여주고 연이어 파일 목록을 보여준다.
이렇게-q 다음에 알고 싶은 내용별로 옵션을 여러 가지 사용할수 있는 데 간략히 다음과 같다.
-i :패키지 정보를 보여준다.
-l :패키지가 포함하고 있는 파일 목록을 보여준다.
-s:이는 패키지 검증에 매우 중요한 옵션인데 패키지 파일내용이 설치된 상태를 보여준다. 파일 목록앞에 normal.net installed. replaced라는 단어가 표시되는데 각각 정상, 설치되지 않았음(중간에 여러분이나 프로그램에 의해 실수로지워졌을 가능성 ) 파일은 있는데 내용이 다르다는 것을 의미한다. 특히 파일리 처음 설치당시와 같은지 아닌지를 알수 있는 좋은 옵션으로서 보안점검에도 중요한 역할을 한다. 이런 용도로는 나중에 소개할 검증 옵션이 더 좋다.
-d: 문서로 분류되어 있는 맨페이지또는 texinfo 페이지를 보여준다
-c: 설정파일로 분류되어 있는 파일을 보여준다.
--scripts: 설치 제거 과정에서사용하는 스크립트를 보여준다.

위에서 보면 설치전 실행스크립트(preintsall) 설치후 실행스크립트(postinstall) 제거직전실행 스크립트(preuninstall)제거후 실행 스크립트(postuninstall) 그리고 검증 스크립트(verify) 라는 분류를 볼수 있다. 오로지 설치후 한번 스크립트를 실행하는 슬랙웨어 방식과는 달리 매우 정교하고복잡한 과정이라는 것을 알 수 있을 것이다 위의 예에서 Id.so 패키지는 설치후 /sbin/ldconfig를 실행시킴을 알수 있다.

-R, --requires : 이 옵션은 어떤 패키지가 의존하고 있는 파일또는 패키지 목록을 보여준다.레드햇 패키징시스템에서 의존성은 매우 중요한 요소이므로 이것을 알아두면 좋을 것이다.

[root@moon/root]# rpm -q -requires NetKit-B
 
libtermcap.so.2
 
libpam_misc.so.0
 
libpam.so.0
 
libncurses.so.3.0
 
libdl.so.1
 
libc.so.5
 
tcp_wrappers
 
pam > =0.56

위의 예에서 보면 NetKit-B 라는 패키지는 libtermcap.so.2 등의 파일을 필요로하며 패키지로는 tcp_wrappers.pam을 필요로한다. 당연히 이 패키지를 우선적으로 설치해야 한다. 마지막 줄에 보면 pam패키지라 할지라도0.56 버전이상이 어야 한다는 표시가 있다.

알고하는 대상 선택하기 옵션

지금까지 우리는 현재 시스템에 설치된 패키지명을 안 상태에 서 패키지에 대하여 무엇을 알고 싶은지 rpm에게 옵션으로 전달하는 방법을 알아보았다. 이제는 시스템에 설치된 패키지명을 모르거나 새로운 패키지 파일을 가져와서 점검하는 방법에 대하여 알아보겠다.

1.rpm -q -f /usr/bin/telnet
[root@moon RPMS]# rpm -q -f ./usr/bin/telnet
 
Netkit-B-0.09-7]

만약 /usr/bin/telnet 이라는 파일이 어떤 패키지에 속한 것인지 알고 싶을 때는 위처럼 명령한다. -f는 파일(file)지정의 의미이다
여기서 좀더 응용을 해보도록하자. 다음 실행문은 어떤 결과를 보여줄 것인지 예측해보고 시험해보기바란다.

rpm -q -i -f /usr/bin/telnet
 
rpm -q -l -f /usr/bin/telnet
 
rpm -q -R -f /usr/bin/telnet
2.rpm -q -i -p db-1.85-11.i386.rpm

db-1.85-11.i386.rpm 이라는 패키지를 하나 받아왔다고 하자 이 패키지에 대한 정보를 알고 싶을 때는 -p db-1 85-11.i386.rpm 라고 명시한다. 알고자하는 내용 지정옵션은 동일하다 . 여기서 -p 는 패키지 (package)를 의미한다.
패키지 질문하기는 약간 어려운 주제이긴 하다 , 하지만1) 알고자 하는 내용 2) 알고자 하는 대상 옵션을마치 레고블럭쌓기 처럼 각옵션을 조합하여 패키지 관리 에 관한 한 못할 것이 없다.

조금은 힘든주제 : 출력형식 결정하기

이부분은 이해가 되지 않는다 할지라도 그냥넘어가기 바란다. rpm -q 모드에서는 -queryformat 이라는 옵션을 지원하는데 다음과 같은 문법으로 사용가능하다.

예) rpm -q -a --queryformat"The name is %{name}.\n"

--queryformat 다음에  나오는 문자열은 printf문의 포맷문자열을 연상하면된다. 질의 태그 (TAG) 라고부르는 NAME등은 rpm프로그램에서 특수한의미를 갖는다. 퍼센트(%)문자를 쓴 것에 주의하라 다음이 출력 결관이다.

The name is groff.
 
The name is zoneinfo.
 
The name is netpbm.
 
The name is initscripts.
 
The name is sendmail.
 
The name is expect.
 
The name is xview-clients.
 
The name is xview-devel-examples
 
The name is python
 
The name is apache

 

몇가지 예를 더 들어보자

rpm -q -a queryformat "The name is %30{NAME}.\n"
 
rpm -q -a queryformat "The name is %-30{NAME}.\n"

위 의 두 명령과 앞선 예의 차리를 살펴보고 출력형태를 비교해보라

rpm에서 지원하는 태그에는 어떤 것이 있는지 알아보려면 다음명령을 입력한다.

rpm --querrytags

RPMTAG_NAME
 
RPMTAG_VERSION
 
RPMTAG_RELEASE
 
RPMTAG_SERIAL
 
RPMTAG_SUMMART
 
RPMTAG_DESCRIPTION
 
RPMTAG_BUILDTIME
 
< 생략>

나열되는 문자열에서 앞에 붙은 RPMTAG_를 제외한 나머지 이름을 사용한다.
다음은 마지막 예이다.
rpm -q -a --queryformat "%-30{NAME} %-30{GROUP}\n"

충분히 실험해보기 바란다.

zlib Libraries
 
zlib-devel Develpment/LIBRARIES
 
wu-ftpd Newworking/Daemons
 
hanterm_fonts Extension/Korea
 
hanyang Extensions/Korea
 
hanterm Extensions/Korea

 

검증하기 옵션(-V -y)

검증(Verify)을 의미하는 옵션은 -V 또는 -y 이다. 여러분이 힘들여 질문하기 (query)부분에서 옵션을 익혀두었다면 여기서는 그렇게 어려움을 느기지 않을 것이다 검증하고자 하는 대상을 선정하는 방법에는 그냥 설치된 패키지명을 알아서적어주는 방법, 시스템에 설치된 파일 하나를 지정하는 방법(-f) 패키지 파일을 지정하는 벙법(-p) 이 있다.

1.rpm -V id.so
.M..L....   /lib/id-inux.so.1
 
S.5....T   /lib.so
 
S.5....T   /sbin/idconfig
 
S.5....T  /usr/bin/ldd
 
S.5....T   /usr/man/man1/ldd.1
 
S.5....T   /usr/man/man8/id.so.8
 
S.5....T   /usr/man/man8/ldconfig.8

 

검증결과 아무런 행도 출력되지 않으면 처음 패키지를 설치한당시와 비교하여 아무런 변화도 없고 정상임을 나타낸다. 하지만 위의 예처럼 몇줄 출력되면 그것은 무엇인가 설치 당시와 비교하여 변화가 있음을 알려준다.
파일명 앞에 8개의문자공간이 차례대로 출력되는데 그 의미는 다음과 같다.
만약 어떤 이상이 발견되었다면 그 이유를 추적해보기바란다 여러분이 다른 프로그램소스를 컴파일하면서 덮어셨을 가능성 같은 것을 추론하라
패키지 중 설정파일에대해서는 C 라고 별도표시된다.

조금 무식한 방법이긴 하지만 rpm-Va라고하면 시스템에 설치된모든 패키지에 대하여 검증 작업을 실시한다. 다음처럼 실행하면 그것은 무엇을 의미할까 생각해보라

rpm-Va|grep ^..5'

5

MD5체크섬 점검 결과 파일의 내용물이 원래와 다르다.

S

파일의 크기가 패키지 설치시와 다르다.

L

심볼릭 링크에 이상

T

갱신일 이상

D

장치파일 이상

U

사용자 설정이상

G

그룹설정이상

M

허가권 파일타입등 파일모드 (mode)이상

 

확인하기 옵션(-K)

패키지 자체를 확인하는 옵션으로는 확인옵션(-K)이 있다. 레드햇 사에서 직접 컴파일 하여 패키지한 파일들에는 레드햇사의 PGP 서명이 들어있다. 따라서 이 패키지가 과연 레드햇사에서 나온 것인지 아니면 누군가 레드햇사를 사칭한 것인지 쉽게 확인할수 있다 또는 MD5합계 점검도 한다. PGP 서명까지 확인하려면 여러분은 PGP를 설치해두어야 하며 레드햇배포판 시디에서 RPM-PGP-KEY 내용을 공개 링에 등록해 주어야 한다.

필자의 /etc/rpmrc 파일의 내용이다.

pgp_path:/root/.pgp
 
signature: pop
 
pgp_name:root

사용법은 다음과 같다.

# rpm-K inn-1.5.1 sec2-2.i386.rpm
 
inn-1.5.1sec2-2.i386.rpm:size pgp md5 OK

크기(size),PGP서명, MD5 합계가 모두 맞는다는 의미이다 만약 여러분이PGP를 사용하지 않는다면 --nopgp 옵션을 주어야 한다. --nomd5는 MD5 합계 점검을 하지 않을 때 사용한다.

이 기능이 필요한 이유는 보안을 위해서 이다 만약 어떤 악의를 지닌 사람이 우리에게 필수적인 패키지에다 트로이목마를 심어두고 배포한다고 하자. 사실 우리는 모든 패키지를 그냥 믿어서는 안된다. 적어도 믿을 만하다고 간주되는 레드햇사나 유명한 개인이제작한 RPM 패키지에다 그들의 PGP공개키를 가지고 확인해야한다.

제작하기 옵션 (-b)

많은 사람들이 도대체 RPM 패키지를 어떻게만들수 있는지에 대해 궁금해 하고 있다 이번에는 제작방법을 다루지 않는다. 앞서도말했듯 한회분 이상의 지면 공간이 필요한 중요하고도 재미있는 주제이다. 하지만 제작에 앞서 RPM 패키지 제작자들은 충분히 RPM 자체를 자유자제로 구사할줄 알아야한다고 강조하고 싶다. 창조적인 프로그래머는 그냥 만들기만 하는 것이아니라 이미 있는 것을 충분히 활용할줄 알고 경험을 쌓는 다고 생각한다.

쉬운 설치 멀티플렛폼 기타등등                                                                                            top

레드햇 배포판은 종종 " 가장 설치하기 쉬운 배포판" 이라는 말을 듣는다. 리눅스 설치 자체가 아직도 어렵다고들 말하는데 어떻게 보면 윈도우즈95설치보다 레드햇배포판이 설치하기 쉽고 게다가 설치속도도 빠르다고도 생각한다. 가장 쉬운자의 여부는 여러분의 마음에 달렸다고 본다. 분명한 사실이라고 생각하는 것은 레드햇 배포판이 쉽고 빠르고 친근한 설치방법을 계속적으로 개발해나가고 있다는 점이다. 이부분은 레드햇 패키징보다 뛰어난 패키징 기술과 더 많은 참여자와 결과적으로 상대도 안되게 많은 패키지를 보유하고 있는 데비안의초기설치와 매우 대조적이라고 본다. 결국 리눅스이기 때문에 설치하고 나서도 익숙하지 않은 사용자들에게는 매우 어려운 것이 사실이나 설치부터 좌절시키는 일은 많이 줄어든 배포판이 아닌가 한다.
텍스트형식에서는 slang .newt 라이브러리를 사용하여 기존의 dialog 보다 좀 더 미려한 텍스트 UI를 보여주는 많은 설정프로그램들이있다. mouseconfig , kdbconfig, Xconfigurator등이 그 예이다. X윈도우에서라면 그 유명한 레드햇 제어판(control-panel)을 들수 있다.

레드햇 리눅스를 떠올릴때 많은 사람들이 알파/스팍리눅스를 떠올리고 있다. 레들햇 배포판이 알파/리눅스, 스팍/리눅스 배포판 노력은 다른 배포판 제작자들보다 훨씬앞서 있으며 아직도 가장 노하우를 많이 쌓은 제작자라고 말할수 있다 대부분의 사용자가 이텔/리눅스사용자임에도 불구하고 이 3가지 플랫품에 대하여 항상 같은 버전을 유지해 나간다는데 대해 놀라와할 따름이다.

레드햇 배포판은 엄연히 상업적 이익을 추구하는 기업의 제품으로서의 측면을 지만 공식박스 CD형식과 FTP사이트에 올라와 있는 공개형식으로 나뉜다.공식박스판에는 메트로X와 같은 상용 X 서버와 몇가지 일반인에게는 중요치 않은 상용프로그램이 들어있다. 설치에 필요한 두장의 플로피디스켓과 매뉴얼 그리고한달간 전자우편을 통한 설치지원을 받을 권리가 있다. FTP사이트에 올라와 있는 공개형식과의 차이는 거의 없다고 보면된다. 시디만을 제작하여 저렴한 가격에 판매하는 사람들은 바로 이부분을 실어 판매하는 것이다 알짜 레드햇 리눅스 배포판든 바로 이공개부분에 의거하여 한글화 작업을 진행하고 있으며 "레드햇" 이라는 이름은 RPM 기술에 의거하고 있다는 사실을 강조하기 위함이다. 지금 현재는 레드햇이 레드햇사의 트레이드 마크이므로 시디나 각종제작물에서 TM 이라는 표시를 넣어야 한다는 답변을 레드햇사관계자로부터 받은바있다.앞으로 레드햇이라는 명칭을 알짜 배포판에 사용할 것인지 여부는 조금 더 생각해봐야할 것 같다.

 top

이글은 리눅스 월드 '97년 10월호 기사입니다.