웹마스터 팁

레드햇 계열 리눅스는 패키지의 설치와 관리에 있어서 rpm를 사용 합니다. ( 한컴리눅스 / 와우리눅스 모두 레드햇 계열 입니다.)

일단 리눅스를 설치해 놨는데, 보안이나 기타 이유로 패키지를 안쓰거나, 제거 하거나, 또 새로운 패키지를 설치하거나 버젼업된 패키지를 설치 해야 할때 싶은데 어떻게 해야하는지 모른다면 레드햇계열 리눅스의 사용은 미궁에 빠져 버리게 됩니다. 따라서 패키지의 설치와 관리를 하는 rpm 명령어의 숙지와 사용은 레드햇 계열에서는 필수라고 할수 있습니다.

rpm 명령어는 어떤 패키지를 설치하고, 어떤 패키지에 어떤 프로그램들이 들어있나 확인을 하고, 시스템 프로램들이 어떤 구조로 되어 있는가 추적하고 최적화 하는 방법을 알 수 있게 해 줍니다.

# rpm 명령어와 함께 # find 명령어,  # ps -aux | grep , # file 명령어를 이용해서 시스템 전체의 설치된 패키지를 조회하고 관리를 할 수 있습니다. ( # 은 리눅스 쉘(root) 프롬프트 입니다.  // **. 은 주석처리로 설명 부분 입니다. )
=========================================================================================
1. rpm 설치하기
1) 설치하기
-U 옵션   : 기존의 것을 삭제하고 업그레이드하며 아무 메시지도 보여주지 않습니다.
-Uv 옵션  : 기존의 것을 삭제하고 업그레이드하며 패키지 이름을 보여 줍니다.
-Uvh 옵션 : 기존의 것을 삭제하고 업그레이드하며 그 설치 진행과 과정 # 표시로 자세히 보여줍니다.
// **. 보통 (ivh 보다) -Uvh 옵션을 쓰면 됩니다.
// **. 설치할경우 패키지파일전체 이름을 주고, 삭제/조회는 rpm 버젼 번호까지만 주면 됩니다.
    mrtg 패키지전체 이름 :  mrtg-2.9.17.i386.rpm  // **. i386 은 386 CPU 호환 버젼을 말합니다.
    mrtg 패키지 버젼     :  mrtg-2.9.17

예)
# rpm -U  mrtg-2.9.17.i386.rpm
# rpm -Uv mrtg-2.9.17.i386.rpm
# rpm -Uvh mrtg-2.9.17.i386.rpm

부가 옵션들
--nodeps : 의존성관계에 있는 다른 패키지가 설치되어 있지 않다해도 강제 설치 합니다.
--force : 버전을 무시하고 강제로 설치 합니다. ( rpm 버전을 강제로 다운 그레이드 할때 사용합니다. )
예)
# rpm -Uvh mrtg-2.9.17.i386.rpm --nodeps

-- force --nodeps 사용시 다른 패키지에 문제가 없는가를 주의 해야 합니다.
# rpm -Uvh mrtg-2.9.17.i386.rpm  --force --nodeps

2) -i 옵션 : 기존의 것을 삭제하고 처음 설치합니다.
예) # rpm -i mrtg-2.9.17.i386.rpm

=========================================================================================
2. rpm 지우기
-evv 옵션 : 아래와 같이 삭제를 하는 동안에 상세한 설명을 보여줍니다.
예)
# rpm -evv mrtg-2.9.17

부가 옵션들
--test  : 실제로 삭제를 하지 않고 잘지워지는가 테스트만 해보는 옵션 입니다.
--nodeps : 의존성에 관여하지 않고 지우는 옵션입니다. // **. 의존성 있는 패키지가 안돌아 갈 수 있습니다. 주의를 요하는 옵션 입니다.
-- allmatches 옵션  : rpm 이 아래와 같이 중복으로 설치 되어 있을 경우 해결 방법
# rpm -qa | grep tux  // **. 중복으로 설치 되었 습니다.
tux-2.1.0-2
tux-2.1.0-2

# rpm -e tux  // **. 삭제가 안됩니다.
error: "tux" specifies multiple packages
# rpm -e tux --allmatches  // **. --allmatches 옵션으로 지웁니다.

--noscript 옵션 : rpm 이 스크립트 에러 인하여 지워지지 않을 경우조 지웁니다.  
# rpm -e canna --noscripts  // **. --noscripts 옵션으로 지웁니다.


=========================================================================================
rpm 조회하기 부분은 옵션이 가장 많고, 가장 많이 사용 하는 부분 입니다.

3. rpm 조회하기
1) -qa 옵션 조회
-qa           : 설치 되어 있는 모든 패키지를 알아 봅니다. // **. 좌악 올라 갑니다.
-qa | grep    : 질의한 패키지가 설치 되어 있는지 알아본다 //  **. 가장 많이 사용 합니다.
-qa | grep -i : 질의한 패키지를 찾을 때 대소문자를 구분하지 않고 물어 봅니다. // **. 대소문자 구별 안하고 찾아주므로 이 옵션 사용이 편합니다. 대부분 패키지는 소문자 이기는 하지만 가끔은 대문자가 있습니다.
-qa | wc -l   : 현재 설치 되어 있는 총패키지 수

예 )
# rpm -qa  // **. 시스템에 설치된 모든 패키지를 보여 줍니다.
# rpm -qa | grep canna  // **.canna란 이름의 패키지가 설치 되어 있는지 알아 봅니다.
# rpm -qa | grep -i canna  // **. 대 소문자를 구별하지 않고 알아 봅니다.
# rpm -qa | wc -l  // **. 시스템에 설치된 총 패키지 수를 알아 봅니다. 보통 몇백 단위 입니다.

2) rpm에 대한 다른 조회
-qf : 화일로 패키지 알아내기. 설치 되어 있는 화일이 어느 패키지에 속해 있는지 알아봅니다.
-qi : 패키지 정보 알아보기. 패키지에 대한 설명을 보여줍니다.
-ql : 패키지 목록 알아 봅니다.
-qc :  /etc/ 밑에 설치 되는 설정 화일만 알아 본니다.

예)
# rpm -qf /bin/ls     // **. ls 란 명령어가 어느 패키지에 속해 있는지 알아 봅니다.  
# rpm -qf $(which 특정프로그램이름) // **. 경로를 잘 모를 경우 사용 합니다.
   ex) rpm -qf $(which ls)
# rpm -qi setup      // **. setup 이란 패키지가 어떤 패키지 인가 알아 봅니다.
# rpm -ql setup  
# rpm -qc setup

=========================================================================================
4. -q 의 부가 옵션들
1) -q --requires  : 패키지가 필요한 모듈 (의존성)
예) # rpm -q --requires setup  // **. dump 라는 패키지가 설치되기전에 먼저 설치가 선행되어야 하는 패키지들 입니다. 없으면 설치가 안됩니다.

2) -q --whatrequires : 의존성 걸린 패키지 알아내기
예) # rpm -q  --whatrequires  xmms // **. xmms에 의존하는 패키지를 보여 줍니다. 함부로 지우면 의존설 걸린 패키지들은 안돌가는 사태가 발생할 수 있습니다.

3) -q --whatprovides module-info  : 모듈이 설치 되어 있는 패키지 알아 봅니다.
예) # rpm -q --whatprovides module-info

4) -q --scripts : 패키지가 설치 되기전 또는 설치 된후에 실행되는 스크립트를 알아 봅니다.
5) -q --queryformat : 패키지의 정보를 알아볼때 문자열을 출력해준다.

5. 기타 확장 옵션들
1) -qlv          : 패키지 목록 자세한 정보를 알아 봅니다.
예 ) # rpm -qlv setup

2) -ql --dump   :  패키지 덤프 화일을 봅니다.
3) -qcf          : 화일과 관련된 설정 화일을 알아봅니다. .
4) -qdf       : 패키지와 관련된 문서 화일을 보는 옵션 입니다.  // **. 패키지 괸련한 문서는 대부분 /usr/share/doc 아래에 있습니다.
예) # rpm -qdf /sbin/dump

5) -qpil : 원하는 패키지로 부터 패키지 정보와 설치되는 곳의 정보를 알아 봅니다.
  // **. qi옵션과 ql 옵션의 합침형 입니다.
예) # rpm -qpil mrtg-2.9.17.i386.rpm

6) --querytags : 문자열 출력시에 사용되는 태그 값을 알아 본다.
예) # rpm --querytags
HEADERIMAGE
HEADERSIGNATURES
HEADERIMMUTABLE
.
7) # rpm -qlp  // **. RPM 으로 설치 안되었을때 검색 합니다.

========================================================================================

이 외에도 다양한 옵션이 있으며 이글 작성에 참조한  http:://kldp.org의 How-to , man 페이지를 찾아보면 됩니다. 옵션들이 무슨 암호처럼 되어 있는것 처럼 보이지만 실제로 한번만 패키지를 설치하고 검색하고 지우고 해보면 쉽습니다.
제목 글쓴이 날짜
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (3 of 3) [2] Dopesoul 2002.12.21
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (2 of 4) [4] Dopesoul 2002.12.18
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (1 of 4) [3] Dopesoul 2002.12.18
PHP 4.2.3 파워 설치 테크닉 (에러 0%에 도전) [2] 밍밍이 2002.12.17
리눅스 rpm 명령어 활용(1): MRTG 설치 정인배 2002.12.14
DeX 님의 시간 동기화 스크립트를 편하고 안정적으로 변경한 리눅스용! [4] Dopesoul 2002.12.13
SetEnvIf 와 SetEnvIfNocase 의 차이 [7] Dopesoul 2002.12.13
[re] 저의 최종의견 입니다. [5] Dopesoul 2002.12.17
누군가 우리서버를 공격하고 있을때 응급처치! [13] Dopesoul 2002.12.13
srpms, alpha, i386 , i686 이 의미하는 것은? [1] Dopesoul 2002.12.12
레드햇(redhat)리눅스에서 rpm 관리 명령어 정인배 2002.12.09
[FreeBSD] Proftp + MySQL 연동 설치하기 [2] file DeX™ 2002.12.09
apache2 + mod_jk 100번의 닭질 끝에 찾아가는 사이트 DukeEYS 2002.12.09
mod_gzip 적용시 php 인클루드를 실패해서 포기하신분 보세요 [2] DukeEYS 2002.12.08
Zend Optimizer Full Pass Setup [3] DukeEYS 2002.12.08
오래간만에 찾아뵙는군요^^ [2] Dopesoul 2002.12.08
계정 등록 스크립트 [8] 편리 2002.12.05
[FreeBSD] 자동으로 시간 맞추기.. [1] DeX™ 2002.12.04
[계정삭제 스크립터] 편리님이 만드신 계정추가랑 연동됩니다. [4] file 김동현 2002.12.04
FTP 를 이용한 원격 백업 받기 [5] 최종우 2002.12.04