출처 : 대전국제IT교육센터 정성재 강사
1. 설치 및 갱신모드
(1)
설명: 새로운 패키지를 설치할 때 사용된다. 설치 모드의 변형으로 업그레이드 모드도 들 수
있다.
(2)
관련옵션
-i : 새로운 패키지를 설치할 때 사용한다. 이전 버전의 같은 패키지에 대해 정보가 지워지지
않으며
또한 이전 버전의 설정 파일도 백업하지 않는다. (--install)
-U : 기존의 패키지를 새로운 버전의 패키지로 업그레이드할 때
사용한다. 이전 버전이 설치된
경우에는 환경설정파일을 제외하고 새롭게 설치하는데 원래 설정은 .rpmsave에
기록한다.
또한, 설치된 패키지가 없을 경우에도 새로운 버전을 설치할 수 있는데 이 경우에는 -i옵션과
같다고 볼 수 있다. (--upgrade)
-F : 이전 버전이 설치되어 있는 경우에만 설치한다.(--freshen)
-v
: 메시지를 자세히 보여준다.
-h : '#'기호 표시해 준다.
--force : 기존에 설치된 패키지와 그 파일을 강제로
다시 설치하도록 한다. 업그레이드의 경우
설치하고자 하는 패키지가 설치되어있는 패키지보다 구버전인 경우에도 강제로
설치
한다.
--nodeps : 의존성 관계를 무시한다.
-vv : 메시지를 아주 자세히
보여준다.
--test : 실제로 파일에 기록하는 작업을 제외한 대부분을 테스트한다. 패키지를 실제 설치하기
전에 제대로 설치되는지 테스트해 볼 경우에 사용한다. -v, -h옵션과는 함께 사용할 수
없으며 -vv는
사용가능하다.
--oldpackage : 구버전으로 다운그레이드할 때 사용한다.
--percent : 설치할 때 퍼센트를
보여준다.
--replacefiles: 설치되어있는 파일이 있는 경우 덮어쓰면서 다시 설치한다.
--replacepkgs: 같은 패키지가 있어도 다시 설치한다.
--ignorearch: 아키텍쳐를 무시하고 설치한다.
--root: 기준이 되는 디렉토리를 설정한다.
--exculdepath: 지정된경로에는 파일을 설치하는 않는다.
--prefix: 지정된 경로에 패키지를 설치한다.
--relocate OLDPATH=NEWPATH: 원래의 경로를 새로운 경로로
바꾸고 설치한다.
--badreloc: --relocate와 같이 사용하는 옵션으로 OLDPATH에 대한 할당 정보를 제외하고
파일,
경로 등에 대한 정보를 허가한다.
--rebuilddb : 특정한 패키지 설치후에 rpm패키지로
검색했으나 나타나지 않을 때 rpm데이터베이
스를 업데이트한다
(3) 정리
-ivh : 새로운
패키지 설치
-Uvh : 업그레이드하거나 새로운 패키지 설치
-Fvh : 이전 버전의 패키지가 있는 경우에만 패키지
설치
(4) 사용예
1) [root@www src]# rpm -Uvh --oldpackage
proftpd-1.2.2-3kr.i686.rpm
=> 설치하고자 하는 버전이 이미 설치되어 있는 버전보다 낮더라도
설치한다.
2) [root@www src]# rpm -Uvh --percent
proftpd-1.2.2-3kr.i686.rpm
=> 설치할 때 퍼센트를 출력해준다.
3) [root@www
src]# rpm -Fvh ftp://updates.redhat.com/current/i386/*.rpm
=> 이미
설치된 패키지만 업데이트한다.
2. 제거모드
(1) 설명 : 시스템에 설치된
패키지를 제거하기 위해 사용된다. rpm은 기본적으로 삭제대상 패키지에
의존적인 다른 패키지가 없을 경우에만
삭제한다.
(2) 관련옵션
-e : 설치된 패키지를 제거한다.
--nodeps : 제거시 의존성을
무시한다.
--test : 실제로 제거하지 않고 테스트한다. 역시 -v,-h옵션은 사용할 수 없으며, -vv옵션만
사용
가능하다.
--allmatches: 동일한 이름이 패키지가 중복설치되어 있는 경우 모두
제거한다.
(3) 사용예
1) [root@www /root]# rpm -e --test xemacs
error:
removing these packages would break dependencies:
xemacs =
21.1.14 is needed by xemacs-el-21.1.14-10
xemacs = 21.1.14 is
needed by xemacs-info-21.1.14-10
=> rpm패키지 제거 테스트다. 이 경우는 의존성때문에
제거할 수 없다. 만약 그래도 제거하려
면 --nodeps를 붙여야 한다.
2) [root@www /root]#
rpm -e httpd --nodeps
=> httpd 패키지에 의존성이 있더라도 무조건 제거한다.
3)
[root@www /root]# rpm -e sendmail --allmatches
=> sendmail이 중복되어
설치되어 있는 경우 모두 지운다.
3. 질의모드
(1) 설명: 설치된 패키지와
각 패키지에 포함된 파일들을 'rpm -q'를 이용하여 질의(Query)할 수
있다.
(2) 관련옵션
-q : 질의시에 꼭 써야하는 옵션이다. 패키지를 찾으면 패키지이름과 버전만 표시한다.
-i : 설치된 패키지의 정보를 보여준다.
-p옵션과 사용하면 패키지 파일정보를 보여준다.
-l : 패키지에 포함된 모든 파일을 보여준다. 역시 -p와 사용하려면 정확한
파일명을 적는다.
(--list)
-p 파일명: 패키지의 파일에 대한 정보를 보여준다. 이 옵션을 사용하려면
패키지파일의 정확한
이름을 입력해야 한다.
-a : 시스템에 설치된 모든 패키지목록을 보여준다.
(--all)
패키지명을 잘 모르는 경우에는 '| grep 패키지명'을 붙여 사용하면 유용하다.
-f 파일명:
지정된 파일이 포함된 패키지를 출력한다.
-c : 해당패키지의 설정파일이나 스크립트파일을 보여준다.
-d : 해당패키지의
문서파일을 출력한다.
-R : 어떤 패키지에 의존하고 있는지를 보여준다. (--requires)
--changelog:
특정 패키지의 바뀐 내역을 최근부터 연대순으로 보여준다.
--scripts: 인스톨 및 언인스톨관련 스크립트를 보여준다.
--filesbypkg : rpm패키지가 많을 경우 목록으로 보이는 파일앞에 패키지명을 붙인다.
--whatrequires:
해당패키지를 필요로하는 패키지를 보여준다.
--whatprovides: 해당패키지가 제공하는 패키지를 보여준다.
--requires: 해당패키지가 설치되거나 동작시에 필요한 패키지 목록을 보여준다.
--queryformat: 질의의 결과를 원하는
형태로 출력할 때 쓴다. C언의 printf()함수의 동작방법과
비슷하다.
(3) 사용예
1) [root@www spool]# rpm -q sendmail
sendmail-8.12.5-7
=>
설치된 sendmail의 패키지이름과 버전을 보여준다.
2) [root@www /root]# rpm -qi
sendmail
=> sendmail의 패키지정보를 보여준다.
3) [root@www /root]# rpm
-qa
=> 현재 설치된 모든 패키지를 보여준다.
4) [root@www /root]# rpm -qa
|grep netscape
netscape-communicator-4.77-1wl
netscape-common-4.
netscape-navigator-4.77-1wl
=> 네스케이프관련
패키지를 보여준다.
5) [root@www /root]# rpm -ql sendmail
=> sendmail이
설치되어 있는 곳을 보여준다.
6) [root@www /root]# rpm -qf /etc/lilo.conf
file
/etc/lilo.conf is not owned by any package
=> 모든 파일이 rpm패키지를 통해서
인스톨된 것은 아니다.
7) [root@www /root]# rpm -qf /etc/sendmail.cf
sendmail-8.11.3-1wl
=> 해당파일에 대한 관련패키지를 찾아준다.
8) [root@www
/root]# rpm -qc at
/etc/at.deny
/etc/rc.d/init.d/atd
9)
[root@www /root]# rpm -qd lilo
=> lilo관련 문서파일을 보여준다.
10)
[root@www /root]# rpm -qR sendmail
=> sendmail이 의존하고 있는 패키지를
보여준다.
11) [root@www /root]# rpm -q --changelog sendmail
=>
sendmail이 바뀐 내역을 최근부터 연대순으로 보여준다.
12) [root@www root]# rpm -q --scripts
sendmail
=> sendmail의 인스톨 및 언인스톨관련 스크립트를 보여준다.
13) [root@www
src]# rpm -qlp proftpd-1.2.7-3kr.i686.rpm
=> 패키지의 설치되는 파일을
보여준다.
14) [root@www src]# rpm -qip proftpd-1.2.7-3kr.i686.rpm
[root@www src]# rpm -qlp proftpd-1.2.7-3kr.i686.rpm
/etc/logrotate.d/proftpd
/etc/pam.d/ftp
..생략..
=> 패키지의 정보를 보여준다.
15) [root@www src]# rpm -qp --filesbypkg
*.rpm
proftpd /etc/logrotate.d/proftpd
proftpd /etc/pam.d/ftp
..생략..
=>
확인하고자하는 패키지파일이 많은 경우 각 파일앞에 패키지명을 덧붙여 보여준다.
16) [root@www /root]# rpm -q
--whatrequires httpd
=> httpd 를 필요로 하는 패키지를 보여준다.
17)
[root@www /root]# rpm -qa --queryformat "%10{size} %{name}\n"
=>
패키지를 일정한 형태로 출력한다.
4. 검증모드
(1) 설명: 설치된 패키지
파일들을 검증한다. 보통 보안상 침입자에 의해 실행파일들이 권한획득을
위해 변조되는 경우가 있는데 이러한 것을 찾아낼 때
사용한다.
(2) 관련옵션
-V : verify의 약자로 검증할때 쓰는 기본 옵션이다.
-a : 모든 패키지를
검사한다.
(3) 사용예
1) [root@www /root]# rpm -V bind
SM5..UGT c
/etc/rndc.conf
=> 환경파일은 변경될 수 있으므로 크게 신경안써도 된다.
2) [root@www
/root]# rpm -Va
=> 모든 패키지를 검사한다.
(4) RPM 검증코드
5 : MD5체크섬을
변경
S : 파일의크기를 변경
L : 심볼릭 링크를 변경
T : 파일의 수정일을 변경
D :
장치파일을 변경
U : 파일사용자/소유자가 변경
G : 파일 그룹이 변경
M : 파일모드(권한과 파일형태)가
변경
? : 원인을 알 수 없거나 예측하지 못한 결과인 경우
(5) 참고 : 패키지를 구해서 설치할 경우 잘 알려지지 않는
경로로 파일을 입수했을 경우에 체크를
해보는 것이 좋다. 이 경우에 --checksig를 사용한다.
[root@www /root]# rpm --checksig fileutils-4.0-1.i386.rpm
fileutils-4.0-1.i386.rpm: size md5 OK
=> 'size md5 OK'는 해당 파일의 크기와
MD5체크섬의 확인결과와 본래값과 일치하므로 문제가
없다는 뜻이다. 체크섬을 파일내용이나 다른 정보를 기초로 하여 계산된다.