RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

출처 : 대전국제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체크섬의 확인결과와 본래값과 일치하므로 문제가
       없다는 뜻이다. 체크섬을 파일내용이나 다른 정보를 기초로 하여 계산된다.

출처 : 대전국제IT교육센터 정성재 강사

 

1. RPM이란?
(1) 개요 : RedHat Package Manager의 약어로 프로그램등을 설치할 때 사용하는 방법이며 Red Hat사
           에서 제안하였다. rpm은 유닉스계열의 일반적인 설치방법인 소스방법에 비해 쉬운 설치를
           지원하지만 설치되는 디렉토리의 변경이 불가능하다. 설치된 디렉토리나 실행명령 등은
           설치후 질의를 통해 확인해야 한다.
(2) 파일의 구조
   1) 기본구성
     패키지이름-버전-릴리즈.아키텍쳐.rpm
   2) 구성설명
    ㄱ. 패키지이름: 어떤 패키지인가를 설명해주는 패키지의 이름을 나타낸다.
    ㄴ. 버전: 패키지의 버전을 의미한다.
    ㄷ. 릴리즈: 한 버전의 패키지를 몇번 빌드했는지를 알려준다.
    ㄹ. 아키텍쳐: 어느 아키텍쳐에 사용가능한지를 알려준다. 패키지가 사용가능한 시스템을 말한
                 다.
        예) i386, i486, i586, i686: 인텔 x86 호환계열에 사용
            ia64: IA-64(Itanium)
            alpha: Digital 알파서버용
            ppc: 매킨토시 PowerPC용
            sparc: Sun Microsystem용
            s390: IBM s/390용
   3) 파일예
     XFree86-Mach64-3.3.6-20kr.i386.rpm
(3) rpm패키지의 4가지모드
   1) 설치 및 갱신모드
   2) 제거모드
   3) 질의모드
   4) 검증모드

2. RPM사용하기
(1) 사용법
   rpm options [filename]
(2) option
   -i  : 기본적으로 설치할 때 쓴다. 이 옵션을 사용하면 이전 버전의 같은 패키지에 대한 정보가
        존재할 경우 설치하지 않는다.(--install)
   -U  : 이전버전이 설치되어 있으면 업그레이드를 하며, 설치되어 있지않으면 새롭게 설치한다.
        이전버전이 설치되어 있을 경우에 환경설정파일을 제외하고 모두 새롭게 설치한다. 설치시에
        이 옵션을 사용하도록 한다.
   -F  : 현재 설치하는 패키지의 이전 버전이 설치되어 있는 경우에만 설치하고, 그렇지 않은 경우
        에는 설치하지 않는다.
   -v : 설치중 메시지를 보여준다.
   -h :  진행과정을 '#'으로 표시하라는 뜻이다.(--hash)
   -e : 패키지를 제거할 때 쓰인다.
   -q : 패키지가 설치되어 있는 질의한다. 이 옵션 단독으로 사용하면 패키지이름과 버전만 표시된
       다.
   -qa : 현재 설치된 모든 패키지 목록을 찾는데 사용한다. 보통 grep명령과 같이 사용된다.
     예) rpm -qa |grep mail
        => mail 이라는 문자열이 들어가고 설치된 rpm패키지를 찾는다.
   -qi : 현재 설치된 패키지의 간략한 정보를 출력
   -ql : 현재 설치된 패키지의 내용을 보여준다. 어떤 파일이 어디에 설치되어 있는지 확인할 때
        쓴다.
   -Vf : 현재 설치된 파일의 검증할때 쓴다. 문제가 없으면 '.'으로 표시된다.
   -Va : 전체 패키지를 검증한다.
   -Vp : 한 패키지만 검증한다.
   --force : 보통 패키지뒤에 붙는 옵션으로 패키지와의 충돌등을 무시하고 무조건 설치하는 옵션
           이다. (앞에 옵션을 써도 무방함.)
   --nodeps : 의존성 문제를 일으켜 설치가 안될경우에 쓰는 옵션이다.
     예)rpm -Uvh xmms-1.2.4-4.i386.rpm --force
   (참고) '-'는 기본옵션을 뜻하고, '--'는 선택옵션을 뜻한다.

(3) 사용예
   1) 설치
     ㄱ. rpm -Uvh XFree86-Mach64-3.3.6-20kr.i386.rpm
        => Mach64용 X윈도우 드라이버를 설치한다.
     ㄴ. rpm -Uvh han2-0.3.7-9.i386.rpm
        => han2라는 프로그램을 설치한다.
   2) 제거
     ㄱ. rpm -e xmms
        => xmms라는 패키지를 제거한다. 의존성이 있는 경우에는 제거되지 않는다.
     ㄴ. rpm -e httpd --nodeps
        => 의존성이 있는 경우라도 무조건 제거된다.
   3) 질의
     ㄱ. rpm -q sendmail
        => 설치된 sendmail의 패키지를 보여준다.
     ㄴ. rpm -qa
        => 현재 설치된 모든 패키지를 보여준다.
     ㄷ. rpm -qa | grep xmms
        => 현재 설치된 패키지 중에 xmms라는 문장이 들어간 것만 찾는다.
     ㄹ. rpm -qi sendmail
        => sendmail 패키지에 대한 인스톨정보를 보여준다.
     ㅁ. rpm -ql sendmail
        => sendmail이 설치된 경로를 보여준다.

(참고) rpm 패키지를 이용하여 게임설치하기
1. 설명: 간단한 X-window용 게임설치를 통하여 rpm패키지를 사용해보자.
2. 방법
  (1) 심파일(http://simfile.chol.com)에 접속한다.
  (2) 검색창에 'cosmosmash' 라고 입력한다.
  (3) cosmosmash-1.3-1.i386.rpm 라는 패키지를 다운받는다. 참고로 심파일사이트는 X-window의
     웹브라우저에서는 다운받을 수 없으므로 윈도우에서 다운받도록 한다.
  (4) 설치한다.
    [root@redhat9 root]# rpm -Uvh cosmosmash-1.3-1.i386.rpm
    오류: Failed dependencies:
            gengameng >= 4.0 is needed by cosmosmash-1.3-1
            libgengameng.so.4 is needed by cosmosmash-1.3-1
     => 설치를 하면 의존성때문에 설치가 안된다. rpm패키지는 설치나 제거시에 의존성이 있으면
       설치나 제거가 되지 않는다. 이 패키지를 설치하려면 관련 패키지를 먼저 설치해야 한다.
  (5) 의존성문제를 해결하기 위해서 rpm패키지를 검색해주는 http://www.rpmfind.net 사이트에
     접속한다.
  (6) 검색창에 'gengameng'이라고 입력한다.
  (7) gengameng-4.1-3.i386.rpm 라는 패키지를 다운받는다.
  (8) gengameng-4.1-3.i386.rpm 패키지를 설치한다.
    [root@redhat9 root]# rpm -Uvh gengameng-4.1-3.i386.rpm
    경고: gengameng-4.1-3.i386.rpm: V3 DSA signature: NOKEY, key ID f9651d5a
    준비 중...                  ########################################### [100%]
       1:gengameng              ########################################### [100%]
  (9) 다시 cosmosmash-1.3-1.i386.rpm 를 설치한다.
    [root@redhat9 root]# rpm -Uvh cosmosmash-1.3-1.i386.rpm
    준비 중...                  ########################################### [100%]
       1:cosmosmash             ########################################### [100%]
      => 정상적으로 설치됨을 알 수 있다. rpm패키지는 항상 의존성문제를 먼저해결해야 한다.
  (10) 설치된 프로그램을 실행하기 위해서는 실행파일을 찾아야 한다. rpm패키지는 설치는 쉬우나
     설치될 디렉토리지정등을 할 수 없다. 따라서 어떠한 파일이 설치되었고, 어떤 디렉토리에 설치
     되었는지의 질의를 통해 알아봐야 한다.
      예) [root@redhat9 root]# rpm -qi cosmosmash
          Name        : cosmosmash                   Relocations: /usr
          Version     : 1.3                               Vendor: (none)
          Release     : 1                             Build Date: 2002년 12월 27일 (금) 오전 11시 53분 14초
          Install Date: 2003년 06월 18일 (수) 오전 01시 22분 14초      Build Host: elise.sarrazip.org
          Group       : Amusements/Games              Source RPM: cosmosmash-1.3-1.src.rpm
          Size        : 163609                           License: GPL
          Signature   : (none)
          Packager    : Pierre Sarrazin
          URL         : http://sarrazip.com/dev/cosmosmash.html
          Summary     : Clone of the Intellivision(TM) game Astrosmash(TM).
          Description :
          Clone of the Intellivision game Astrosmash.
          In this game, you control a base that must destroy
          rocks before they hit the ground, or you lose points.
          You must also prevent "spinners" from touching the ground,
          or your base will explode.

          This package installs an entry in the GNOME 1.x Games menu.
           => 간단한 설치정보를 볼 수 있다.

          [root@redhat9 root]# rpm -ql cosmosmash
          /usr/bin/cosmosmash
          /usr/man/man6/cosmosmash.6.gz
          /usr/share/gnome/apps/Games/cosmosmash.desktop
          /usr/share/pixmaps/cosmosmash.png
          /usr/share/sounds/cosmosmash
          /usr/share/sounds/cosmosmash/hyperspace.wav
          /usr/share/sounds/cosmosmash/player-hit.wav
          /usr/share/sounds/cosmosmash/pulsar-beep.wav
          /usr/share/sounds/cosmosmash/rock-hit-0.wav
          /usr/share/sounds/cosmosmash/rock-hit-1.wav
          /usr/share/sounds/cosmosmash/saucer-shooting.wav
            => 설치된 파일의 목록을 볼 수 있다. 여기서 실행파일이 /usr/bin/cosmosmash임을 알
              수 있다.
  (11) 실행한다.
    [root@redhat9 root]# /usr/bin/cosmosmash &

64bit 서버에 x86_64의 리눅스를 깔고 난 후에 RPM을 삭제 할 일이 생겼다.

 

그런데 이상하다-!

이상한 메세지를 뿌리면서 RPM이 도무지 삭제가 되지 않는다.

rpm -qa | grep mysql 확인 해 본 결과 이상하게도 32bit와 64bit의 패키지를 가지고 있었다.

=_= 욕심쟁이..

 

rpm -e mysql 고 rpm -e mysql --nodeps고 안 먹힌다!

error: "mysql-x.x.x.xRHEL4" specifies multiple packages

이라면서 죽어도 삭제는 안 된다고 한다...

역시나 구글링 시작.

 

/etc/rpm/macros.local 라는 파일을 생성해주고 아래의 내용을 입력한다.

 

%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}

 

자 이제 정확한 패키지명을 적어주면 삭제가 된다.

rpm -qa | grep mysql

이렇게 해보시면

mysql-4.1.12-3.RHEL4.1.i386
mysql-4.1.12-3.RHEL4.1.x86_64

 

rpm -e mysql-4.1.12-3.RHEL4.1.i386 --nodeps

 

또다른 방법으로는

 

rpm -e mysql --allmatches

remove all packages which match <package>
(normally an error is generated if <package> specified multiple packages)
옵션을 사용하는 것이지만 권장하지는 않는다. (혹시 정확히 지울수 있는 앞에 것을 추천! 혹시 모르니까 말이다.)


우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/06   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)