1580, 74/79 회원가입  로그인  
   부러진분필
   http://minihp.cyworld.com/pims/main/pims_main.asp?tid=60039153
   리눅스 강좌 (레드햇 리눅스)

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1701 [복사]


여러분은 이미 리눅스 세계에서 배포판이 얼마나 중요한 위치를 갖는지 알고 있을 것이다. 사실 리눅스는 리눅스와 수많은 해커들이 만들고 있는 커널을 가리키는 말이지만 우리와 같은 일반인에게 있어서 리눅스는 현실적으로 슬랙웨어, 레드햇, 데비안등의 배포판(Distribution)형식으로 인식된다.


리눅스 커널을 중심으로 실제로 운영 가능한 하나의 시스템을 미리 셋업 해두는 일은 관심을 갖는 개인 또는 단체에 의해 배포판이라는 형식으로 열매를 맺어왔다. 개인적인 노력의 예는 바로 패트릭 볼커딩씨의 슬랙웨어가 있으며 같은 단체라 할지라도 레드햇 배포판의 경우에는 영리를 목적으로 하는 레드햇사의 성원들에 의해 만들어지고 있는 반면, 데비안 배포판은 리눅스 처럼 '완전히 자유로운' 배포판을 만들겠다고 다짐하는 이안 머독씨와 수많은 패키징 자원자들에 의해 만들어지고 있어 그 특색이 분명하다. 이 외에도 칼데라, 오픈 리눅스, 익드라실의 배포판, S.u.S.E 배포판등 우리가 알고 있는 것보다도 훨씬 많은 배포판이 존재한다는 사실을 잠깐 얘기해두어야 할 것 같다.


배포판은 각 개인/단체의 성격을 달리하는 것은 물론, 결론적으로 시스템의 미묘한 또는 중요한 부분의 차이를 가져온다. 초보자들에게는 그것이 어떤 배포판이던지 리눅스라는 점에서는 차이가 없다고 말할 수는 있으나 시스템의 기본운영 스타일의 차이는 비호환성으로 비춰질 가능성도 있다. 슬랙웨어, 레드햇, 데비안 배포본을 오래동안 사용하는 사람은 보통 다른 배포판을 접하면 매우 곤혹스러워 하기 일쑤이다. 특히 상당수 리눅스 사용자들은 슬랙웨어를 처음으로 리눅스를 배워 온 상태여서 비교적 최근에 두각을 나타내고 있는 레드햇, 데비안 등의 새로운 배포판에 익숙해지기 힘들어하곤 한다.


필자는 이 공간을 이용하여 레드햇 사(Red Hat Software Inc.)의 배포판, 레드햇을 여러분에게 조금은 자세히 소개하고자 한다. 이미 알짜 레드햇 이라는 이름으로 반쪽 한글화된 한국적 배포판을 잡지사를 통해 몇 번 배포한적이 있기 때문에 상당수의 사람들이 레드햇 배포판이 어떤 것인가 약간의 경험을 해보았을 것이다. 또한 적지 않은 사람들이 어떤 배포판보다도 쉽다는 통념과는 반대로 새로운 레드햇 리눅스 시스템에 익숙해지지 못하고 있다는 사실은 알고 있다. 이에 레드햇 리눅스 시스템에 대한 충분한 이해를 목적으로 글을 몇 회 연재하고자 한다.



레드햇 사에 대하여

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


이외에도 리눅스 관련 출판사업과 지원사업을 해 나가고 있다. 나중에 언급할 그들의 RPM패키징 기술이나 기타 소프트 웨어를 GPL로 다시금 자유소프트 웨어 세계에 기여하고 있으며 리눅스 관련 프로젝트와 GNU프로젝트에 일부 금전적지원을 하고 있다.


무엇보다도 리눅스를 컴퓨터 역사에 있어서의 눈부신 혁명적 사건이라고 보며 리눅스를 믿는다면 점에서는 우리와 다를 바가 없다고 본다.



레드햇 리눅스에 대하여

레드햇 리눅스의 특징은 다음과 같다.

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



RPM 패키지 기술이란?  

레드햇 배포판이 다른 배포판과 달리 레드햇 판이라고 부를 수 있는 근거는 무엇보다도 레드햇 사에서 개발하고 제시하고 있는 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

슬랙웨어의 패키지 관리자에서는 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

설치는 매우 간단하다 설치(install)을 의미하는 -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 : 이 옵션은 '강제로 그냥'; 설치하라는 지시인데 위에서 설명한 -replacepkgs, --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

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

3. rpm -q-l ssh

-1 은 패키지가 포함하고 있는 파일 목록을 보여준다.

4. rpm -q-i -l ssh

-i 와-I 의 옵션을 모두 사용하면 먼저 패키지 정보를 보여주고 연이어 파일 목록을 보여준다.
이렇게-q 다음에 알고 싶은 내용별로 옵션을 여러 가지 사용할 수 있는데 간략히 다음과 같다.

-i : 패키지 정보를 보여준다.


-l : 패키지가 포함하고 있는 파일 목록을 보여준다.


-s : 이는 패키지 검증에 매우 중요한 옵션인데 패키지 파일내용이 설치된 상태를 보여준다. 파일 목록앞에 normal. not installed. replaced라는 단어가 표시되는데 각각 정상, 설치되지 않았음(중간에 여러분이나 프로그램에 의해 실수로 지워졌을 가능성), 파일은 있는데 내용이 다르다는 것을 의미한다. 특히 파일이 처음 설치당시와 같은지 아닌지를 알 수 있는 좋은 옵션으로서 보안점검에도 중요한 역할을 한다. 이런 용도로는 나중에 소개할 검증 옵션이 더 좋다.


-d : 문서로 분류되어 있는 맨페이지또는 texinfo 페이지를 보여준다


-c : 설정파일로 분류되어 있는 파일을 보여준다.


--scripts : 설치 제거 과정에서 사용하는 스크립트를 보여준다.

위에서 보면 설치 전 실행스크립트(preinstall), 설치 후 실행스크립트(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 자체를 자유자제로 구사할 줄 알아야 한다고 강조하고 싶다. 창조적인 프로그래머는 그냥 만들기만 하는 것이 아니라 이미 있는 것을 충분히 활용할 줄 알고 경험을 쌓는다고 생각한다.



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

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

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

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

이번에는 간단한 레드햇 리눅스의 소개와 RPM 다루기에 대하여 알아보았다. 다음에는 이어서 레드햇 시스템 운영방법을 알아보고 마지막으로는 RPM 패키지 만드는 법에 대하여 알아보겠다.

끝으로 한국에서의 리눅스 잡지 첫 번째 출간을 진심으로 환영한다. 여러분들도 필자와 같은 마음이리라 생각한다.

출저http://www.lug.or.kr/docs/LINUX/others/97-10-2.htm

  Hit : 10740     Date : 2011/03/25 10:31



    
목탁든교황님 전요 완전 빡도는게 싱글코어 20GHz 짜리 컴퓨터에다가 깔려는데 안깔려요 ㅎㅎ

깔아보고 싶요
2011/04/30  
120   왠만한사람들은다알지도모르겠지만[6]     백룡출해
03/17 12109
119   c언어[1]     백민준천재
08/31 4556
118   c언어[1]     백민준천재
08/31 4586
117   2[1]     백민준천재
08/31 4524
116   1[1]     백민준천재
08/31 4497
115   유닉스 v1 편집없음...편집해서보세요~~[1]     미미123
06/01 7217
114   유닉스 v2 편집없음~[1]     미미123
06/01 7694
113   편집없음 v3 유닉스특징[1]     미미123
06/01 8533
112   편집없음 v4 유닉스 명령어     미미123
06/01 7820
111   편집없음 v5 유닉스명령어 file system[4]     미미123
06/01 7749
110   이제막처음시작한 초보입니다[3]     미스터리
02/02 7768
109   ㅋ 컴터 빠르게 하는방법?[1]     무소유
12/17 8844
108   도대체가.. 이해가 안가는군요..[10]     봉춘삼
05/04 7099
107   리눅스 강좌 (리눅스란무엇인가)     부러진분필
03/25 7855
  리눅스 강좌 (레드햇 리눅스)[1]     부러진분필
03/25 10739
105   리눅스강좌 sparc 리눅스 설치     부러진분필
03/25 8053
104   리눅스 강좌 리눅스/유닉스 네트워크 프로그래밍     부러진분필
03/25 8702
103   리눅스 강좌 디스크관리를 위한 Quota 사용하기     부러진분필
03/25 7459
102   초간단 리눅스 명령어, 기본적으로 꼭꼭 알아야 할 것[14]     빈대
01/04 9948
101   커널 업그레이드 방법[2]     빈대
01/04 8274
[1]..[71][72][73] 74 [75][76][77][78][79]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com