강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급: RPM 패키지설치 및 관리

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: RPM 패키지설치 및 관리

 

 

RPM 패키지 설치 및 관리

 

 

RPM 설치(install)와 제거(Erase, Uninstall)

 

 

RPM 설치(install)

 

 

무엇보다 가장 중요한 RPM의 기능은 프로그램의 설치에 있다.

 

 

 

이러한 RPM 패키지를 설치하는 옵션은 i, U, F 3 가지 옵션이 있다.

 

 

 

세 가지 옵션 모두 RPM 패키지를 설치하는데 필요한 옵션이지만 약간의 차이점이 있다.

 

 

 

 

 

처음 설치시

업그레이드 설치시

-i

O

X

-U

O

O

-F

X

O

 

 

설치의 방법은 처음 설치와 업그레이드 설치의 2가지로 나눌 수 있다.

 

 

 

만약 -i 옵션을 이용하여 설치를 시도하였을 때 기존에 같은 패키지가 설치되어 있다면 원칙적으로는 프로그램 패키지의 설치를 할 수 없다.

 

 

 

 

 

 

 

 

# rpm -ivh xz-libs-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

준비중.. ########################################### [100%]

1:xz-libs ########################################### [100%]

#

 

 

 

 

 

 

 

그리고 -U 옵션을 통한 프로그램 패키지 설치의 경우 기존에 동일한 패키지 혹은 하위 버전의 패키지가 있다면 업그레이드를, 없다면 초기 설치를 진행하게 된다.

 

 

 

 

이에 대해 -F 옵션을 통한 설치의 경우 기존의 패키지가 반드시 있어야 설치가 가능하다.

 

 

 

만약 기존에 하위 버전의 패키지가 없다면 F 옵션을 통한 설치는 불가능할 것이다.

 

 

 

그렇다면 왜 F 옵션을 통한 패키지의 설치를 제공하는가? 만약 FTP 사이트에서 각종 RPM 파일을 다운로드 한 뒤 자신의 시스템에서 불필요한 패키지를 설치하지 않으면서 업그레이드 할 부분만을 업그레이드하고 싶을 때, 이것은 유용하게 사용할 수 있는 옵션이다.

 

 

 

다음은 패키지명을 *.rpm로 지정하여 모든 RPM 패키지를 설치하도록 한 것이다.

 

 

 

 

 

 

 

 

[root@hlug /root]# rpm Fvh *.rpm

foo ####################################

……

……

……

 

 

 

 

 

 

 

 

다음은 RPM 설치 명령어와 같이 쓰이는 옵션들이다.

 

 

 

여기에서 --nodeps --force 의 경우는 반드시 기억해 두기 바란다.

 

 

 

 

옵 션

옵션 설명

--nodeps

패키지 설치시 의존성 검사를 하지 않는다.

--force

설치 도중 발생하는 에러를 무시하고 강제로 설치하는 옵션이다.

 

--replacepkgs --replacefiles --oldpackage를 동시에 사용한 것과 같은 효과를 보여준다.

 

--oldpackage

새로운 패키지를 지우고 구 버전을 설치할 때 사용한다.

--replacepkgs

이미 같은 패키지가 설치되어있어도 다시 설치할 때 사용한다.

 

 

--root <directory>

RPM 패키지를 설치할 때 설정한 디렉토리의 위치를 기준으로 설치가 된다.

 

 

--test

패키지를 실제로 설치하지 않고 가상으로 설치해 본 뒤 충돌사항이 있는지 점검하고 보고한다.

 

 

--noscripts

preinstall, postinstall 스크립트를 실행하지 않는다.

 

 

--excludedocs

문서 파일(man page, info page)를 설치하지 않는다.

 

 

-h --hash

#마크를 사용하여 패키지 설치 진행 상황을 알려준다.

 

-v를 함께 사용하면 조금 더 상세한 정보를 출력 한다.

 

 

--percent

패키지 설치시 %로 완료를 표시한다.

 

이는 FTP 설치시 유용하다.

 

 

 

 

그런데 RPM 파일로 된 프로그램을 설치하기 위해서는 우선 설치할 프로그램의 설치 패키지를 프로그램의 웹사이트에서 다운로드하거나 CD-ROM에서 복사한다.

 

 

 

다음은 압축 프로그램인 xz를 설치하는 예이다

 

(리눅스 배포판에서 xz 압축 프로그램을 제공하지 않는다는 가정 하에 설치를 진행한다. 물론, 삭제 후에 재설치하는 것도 좋다).

 

RPM 패키지는 의존성이 있는 패키지들을 설치해야 완전한 설치가 가능하다(의존성을 무시하고 설치하는 경우 정상적인 작동이 안 되는 경우가 대부분이다).

 

 

따라서 사용하고 있는 리눅스 배포판에 맞춰서 제공되는 RPM이 아닌 경우에는 호환되는 리눅스 배포판 중에서 적정 버전의 RPM 패키지를 다운로드하여 사용한다.

 

 

 

SULinux의 경우는 CentOS 에 맞춰 제공되는 RPM 패키지를 다운로드하여 설치하면 된다.

 

 

 

 

 

xz 프로그램에 관한 패키지들은 다음과 같다.

 

 

 

 

 

xz-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

 

 

xz-libs-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

 

xz-lzma-compat-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

 

 

xz-devel-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

 

 

 

 

설치는 의존성 문제를 고려하여 순서에 맞게 설치한다(만약 이것들 외의 패키지들과의 의존성이 없고, 이들 패키지들 상호간의 의존성만이 문제되는 경우라면 의존성을 무시하고 그냥 설치해도 좋다).

 

아래는 의존성 문제로 오류 메시지가 출력되었다(경고 문구는 특별히 문제가 되지 않으므로 여기서는 삭제했다).

 

 

 

 

 

 

 

 

# rpm -ivh xz-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

오류: Failed dependencies:

liblzma.so.0()(64bit) is needed by xz-4.999.9-0.3.beta.20091007git.el5.x86_64

xz-libs = 4.999.9-0.3.beta.20091007git.el5 is needed by xz-4.999.9-0.3.beta.20091007git.el5.x86_64

#

 

 

 

 

 

 

 

아래는 의존성을 고려하여 설치 순서를 맞춰서 패키지를 설치한 것이다.

 

 

 

 

 

 

 

 

 

# rpm -ivh xz-libs-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

준비중.. ########################################### [100%]

1:xz-libs ########################################### [100%]

# rpm -ivh xz-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

준비중.. ########################################### [100%]

1:xz ########################################### [100%]

# rpm -ivh xz-lzma-compat-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

준비중.. ########################################### [100%]

1:xz-lzma-compat ########################################### [100%]

#

 

 

 

 

 

 

 

 

 

 

 

RPM 네트워크 설치

RPM의 설치는 저장매체로 부터가 아니라 ftp 를 통해서도 설치가 가능하다.

 

그 이유는 RPM 파일 자체가 바이너리, 즉 컴파일이 되어 있는 상태에 있기 때문에 시스템에 복사만 하면 되기 때문이다.

 

 

 

이런 이유로 리눅스 설치시에도 네트워크로 설치가 가능하다.

 

 

 

설치시에 RPM으로 설치하기 때문이다.

 

 

네트워크 설치는 다음과 같이 한다.

 

 

 

# rpm i http://centos.tt.co.kr/5.10/os/x86_64/CentOS/xz-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

 

 

 

 

 

 

 

RPM 제거(Erase, Uninstall) 기능

 

 

지금까지 RPM 패키지를 이용한 설치를 해보았고 이제 RPM을 제거할 수 있는 방법을 알아보도록 하자. RPM 패키지를 제거하는 방법은 다음과 같다.

 

 

 

 

 

 

 

 

 

# rpm -e [package_name]

 

 

 

 

 

 

 

다음 예제는 앞서 설치한 xz-libs 패키지를 삭제 옵션(-e)을 줘서 삭제하고 다시 삭제된 패키지의 정보를 qi 옵션으로 확인한 것이다.

 

 

 

삭제된 xz-libs 패키지가 설치되지 않았다는 메시지가 나온다.

 

 

 

 

 

 

 

 

# rpm e xz-libs

# rpm -qi xz-libs

xz-libs 패키지가 설치되어 있지 않습니다

#

 

 

 

 

 

 

 

그러나 종종 위와 같은 명령으로는 RPM으로 설치된 프로그램들의 제거가 잘 이루어지지 않는 경우가 있다.

 

 

 

이것은 RPM의 기능에 프로그램간의 상호 의존 관계를 관리하여 주기 때문이다.

 

 

 

RPMRPM 프로그램 삭제 시 원칙적으로 그 프로그램과 상호 의존성을 지니고 있는 패키지를 확인한 뒤 문제가 없는 경우에 삭제가 가능하다.

 

 

 

 

 

 

 

 

# rpm -ivh xz-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

준비중.. ########################################### [100%]

1:xz ########################################### [100%]

# rpm -ivh xz-lzma-compat-4.999.9-0.3.beta.20091007git.el5.x86_64.rpm

준비중.. ########################################### [100%]

1:xz-lzma-compat ########################################### [100%]

# rpm -e xz

오류: Failed dependencies:

xz-4.999.9-0.3.beta.20091007git.el5 is needed by (installed) xz-lzma-compat-4.999.9-0.3.beta.20091007git.el5.x6_64

#

 

 

 

 

 

 

 

위의 예제는 xz 프로그램을 설치하고 이와 의존성을 가진 xz-lzma-compat 패키지를 설치한 후에 xz 프로그램을 rpm e 명령으로 삭제 시도를 하면서 의존성 문제로 프로그램 제거에 실패한 경우의 모습이다.

 

 

 

에러 메시지는 의존성 문제로 패키지가 삭제되지 않았음을 알리고 어떤 프로그램이 의존성을 가지는지 알려 주고 있다.

 

 

 

 

 

이러한 경우 관리를 위해 선택할 수 있는 방법은 2가지가 있다.

 

 

 

 

 

상호 의존성 관계를 지니고 있는 모든 RPM 패키지들을 삭제한 뒤 원하는 패키지를 삭제하는 방법

 

 

상호 의존성 관계를 무시하고 패키지를 삭제하는 방법

 

 

 

첫 번째 상호 의존성을 지니고 있는 모든 RPM을 삭제하는 경우 상호 의존성 에러를 유발하는 모든 패키지를 제거한 뒤 목적하는 패키지를 제거한다.

 

 

 

 

 

 

 

 

 

# rpm -e xz-lzma-compat

# rpm -e xz

# rpm qi xz

xz 패키지가 설치되어 있지 않습니다

# rpm -qi xz-lzma-compat

xz-lzma-compat 패키지가 설치되어 있지 않습니다

 

 

 

 

 

 

 

두 번째 경우는 상호 의존성을 무시한 채 목적하는 패키지만을 삭제한다.

 

 

 

이때 사용되는 옵션은 패키지의 상호 의존성 검사를 하지 않음을 의미하는 --nodeps 라는 옵션을 사용한다(경우에 따라서는 첫 번째 방법이 통하지 않을 때가 있다.

 

 

 

서로가 의존관계를 가지고 있기 때문이다.

 

 

 

이 경우 이 두 번째 방법을 사용하면 프로그램을 삭제할 수 있다).

 

 

 

 

 

# rpm -e --nodeps xz

# rpm -qi xz

zx 패키지가 설치되어 있지 않습니다.

 

 

 

 

 

 

 

 

 

 

 

위의 두 가지 방법 중 무엇을 선택하느냐는 사용자의 현명한 판단에 맡기는 수밖에 없다.

 

 

 

각각의 리눅스 운영체제에 설치된 패키지의 종류는 다양하며 상황에 따라 사용자가 직접 세심한 작업을 해야 하는 경우가 있다

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  74 명