별의 공부 블로그 🧑🏻‍💻
728x90
728x170

rpm

RPM(Red Hat Package Manager)

  • rpm 명령의 사용법은 총 5가지로 나눌 수 있다.
    • 설치 및 갱신 모드
    • 제거 모드
    • 질의 모드
    • 검증 모드
    • 소스 rpm(.src.rpm)의 리빌드 모드

 

사용법

$ rpm [option] [패키지_파일명]

 

① 설치 및 갱신(Install & Upgrade) 모드

  • 새로운 패키지를 설치하거나 갱신(upgrade) 할 수 있다.

 

주요 옵션

주요 옵션 설명
-i - 새로운 패키지를 설치할 때 사용
- 기본적으로 이전 버전의 같은 패키지가 있을 경우 설치가 되지 않음.
- --install
-U - 기존의 패키지를 새로운 버전의 패키지로 업그레이드할 때 사용
- 만약 설치된 패키지가 없을 경우에도 새로운 버전을 설치할 수 있음.
-> 이 때는, -i 옵션과 같다고 볼 수 있음.
- --upgrade
-F - 이전 버전이 설치되어 있는 경우에만 설치
- --freshen
-v 메시지를 자세히 보여줌
-h - 설치 상황을 # 기호 표시해줌.
- --hash
--force 기존 버전이 설치되었을 경우처럼 강제로 설치할 때 사용
--nodeps - 의존성 관계를 무시하고 설치
- rpm 설치 시 의존성 관계에 있는 패키지가 존재하지 않을 경우 설치가 되지 않는데, 이럴 때 강제로 설치할 때 사용
-vv 메시지를 아주 자세히 보여줌.
--test - 실제로 파일에 기록하는 작업을 제외대부분을 테스트할 때 사용
- 패키지를 실제 설치하기 전에 제대로 설치되는지 테스트해 볼 경우에 사용
- 보통 -vv와 같이 사용함.
--rebuilddb 특정한 패키지 설치 후에 rpm 패키지를 검색했으나, 나타나지 않을 때 rpm 데이터베이스를 업데이트 할 때 사용

 

사용 예

  • 해당 rpm 패키지를 설치(i)함.
$ rpm -i gftp-2.0.19-fc15.i686.rmp

 

  • 해당 패키지를 업그레이드 설치(U)해주고, 메시지와 진행 상황(v)을 # 기호로 출력(h)
$ rpm -Uvh vsftpd-2.2.2-11.el6_4.1.i686.rpm

 

  • 현재 설치된 패키지만(F) 찾아서 업데이트하고, 메시지와 진행 상황(v)을 # 기호로 출력(h)
$ rpm -Fvh /usr/local/src/*.rpm

 

② 제거(Erase) 모드

  • 설치된 패키지를 제거한다.
  • 패키지를 제거할 때는, -e 옵션을 사용한다.
    • 다른 패키지에 대한 의존성이 발생한 경우에는 제거되지 않는다.
      • 의존성이 발생한 패키지를 제거하기 위해서는 다음과 같은 작업을 해야한다.
        • 의존성 관련 패키지 제거
        • 추가로 --nodeps 옵션 지정

 

주요 옵션

주요 옵션 설명
-e - 설치된 패키지 삭제
- 의존성을 갖는 패키지가 있는 경우 삭제되지 않음.
- --erase
--nodeps 의존성을 갖는 패키지가 존재하는 경우에도 삭제
--test - 실제로 제거하지 않고 테스트를 함.
- 보통 -vv 옵션과 함께 사용함. (-vv : 메시지 자세히 출력)
--allmatches 동일한 이름을 갖는 패키지가 중복 설치되어 있는 경우에 모두 제거

 

사용 예

  • eog 라는 패키지를 제거
  • 의존성이 있는 패키지가 존재할 경우 제거되지 않음.
$ rpm -e eog

 

  • httpd라는 패키지를 제거
  • 의존성이 있는 패키지가 존재할 경우에도 제거함.
$ rpm -e httpd --nodeps

 

③ 질의(Query) 모드

  • 패키지 관련 정보를 알아내기 위해 -q 옵션을 사용
  • -q 옵션만 사용하면 다음의 정보를 얻을 수 있다.
    • 패키지 설치 유무
    • 간단한 버전 정보
  • 더욱 정확한 정보 출력을 위해서 -i, -a, -l, -d 등의 옵션과 연동해서 쓴다.
$ rpm -qi eog
Name        : eog
Version     : 3.28.3
Release     : 1.el7
Architecture: x86_64
Install Date: 2021년 02월 11일 (목) 오전 01시 57분 06초
Group       : Unspecified
Size        : 10550635
License     : GPLv2+ and GFDL
Signature   : RSA/SHA256, 2018년 11월 12일 (월) 오후 11시 24분 16초, Key ID 24c6a8a7f4a80eb5
Source RPM  : eog-3.28.3-1.el7.src.rpm
Build Date  : 2018년 11월 03일 (토) 오전 01시 05분 56초
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : https://wiki.gnome.org/Apps/EyeOfGnome
Summary     : Eye of GNOME image viewer
Description :
The Eye of GNOME image viewer (eog) is the official image viewer for the
GNOME desktop. It can view single image files in a variety of formats, as
well as large image collections.

eog is extensible through a plugin system.

 

주요 옵션

주요 옵션 설명
-q - 질의 시에 꼭 사용해야 하는 옵션
- 패키지를 찾으면 패키지 이름과 버전만 표시
- --query
-i - 설치된 패키지의 정보 출력
- -p 옵션과 같이 사용하면 rpm 패키지 파일에 대한 정보를 알 수 있음.
- --info
-l - 패키지에서 설치한 모든 파일 정보 출력
- -p 와 함께 사용하면 rpm 패키지 파일이 설치되는 목록 파일을 알 수 있음.
- --list
-a - 시스템에 설치된 모든 패키지 목록 출력
- --all
-p 패키지 파일명 - rpm 패키지의 파일에 대한 정보를 보여줌.
- 이 옵션을 사용하려면 패키지 파일의 정확한 이름을 입력해야 함.
-f 파일명 지정한 파일을 설치한 패키지 이름 출력
-c 해당 패키지의 설정(Configuration) 파일이나 스크립트 파일 출력
-d 해당 패키지의 문서 파일 출력
-R - 어떤 패키지에 의존하고 있는지 보여줌.
- 해당 패키지가 설치되거나, 동작 시에 필요한 패키지 목록을 보여줌.
- --requires
--changelog 특정 패키지의 바뀐 내역을 최근부터 연대순으로 보여줌.
--scripts 설치 및 제거 관련 스크립트를 보여줌.
--filesbypkg rpm 패키지가 많을 경우, 목록으로 보이는 파일 앞에 패키지명을 붙임.
--queryformat - 질의의 결과를 원하는 형태로 출력할 때 씀.
- C 언어의 printf() 함수의 동작 방법과 유사함.

 

사용 예

  • 시스템에 설치된 모든 패키지 정보 출력
$ rpm -qa

 

  • 시스템에 설치된 모든 패키지 중에 mail이라는 문자열이 들어있는 패키지 출력
$ rpm -qa | grep mail

 

  • sendmail 패키지에 대한 정보 출력
$ rpm -qi sendmail

 

  • sendmail 패키지가 설치한 파일 목록 출력
$ rpm -ql sendmail

 

  • sendmail 패키지 관련 환경 설정 파일이나 실행 데몬 스크립트 출력
$ rpm -qc sendmail

 

  • /bin/ls 파일을 설치한 패키지 정보 출력
$ rpm -qf /bin/ls

 

  • grub 패키지 관련 문서 및 man 페이지 파일 정보 출력
$ rpm -qd grub

 

  • sendmail이 의존하고 있는 패키지 목록 출력
$ rpm -qR sendmail

 

  • sendmial이 바뀐 내역을 최근부터 연대순으로 출력
$ rpm -q --changelog sendmail

 

  • sendmail의 인스톨 및 언인스톨 관련 스크립트 출력
$ rpm -q --scripts sendmial

 

  • 패키지 파일에 대한 정보 출력
$ rpm -qip totem-2.28.6-2.el6.i686.rpm

 

  • 패키지 파일에서 설치되는 파일 목록 정보 출력
$ rpm -qlp totem-2.28.6-2.el6.i686.rpm

 

  • 확인하고자 하는 패키지 파일이 많은 경우, 각 파일 앞에 패키지 이름을 덧붙여 출력
$ rpm -qp --filesbypkg *.rpm

 

  • 패키지를 사용자가 지정한 형태로 출력
$ rpm -qa --queryformat "%10{size} %{name}\n"

 

④ 검증(Verify) 모드

  • rpm 데이터베이스에 저장되어 있는 패키지의 메타데이터(Metadata) 정보를 이용하여 변경된 정보를 찾아내는 모드
  • -V(--verify) 옵션을 사용한다.
  • 파일에 대한 다음의 변경 정보를 출력한다.
    • 크기
    • 허가권
    • 소유권
    • 파일 형식

 

검증 코드

검증 코드 설명
S 파일 크기(File Size) 변경
M 파일 모드(Permission & File Type) 변경
5 메시지 다이제스트(Message Digest) 변경 (보통 MD5 값 변경)
D 장치 파일의 메이저 및 마이너 번호 불일치
L 링크 파일 경로 불일치
U 소유자 변경
G 그룹 소유권 변경
T 수정 시간(Modify Time) 변경
P 권한(Capability) 변경
. 테스트 통과
? 테스트를 수행하지 못했을 경우 (예: 허가권 거부 등)

 

주요 옵션

옵션 설명
-V - 검증 시 사용하는 기본 옵션
- --verify
-a 모든 패키지를 검사할 때 사용

 

사용 예

  •  시스템에 설치된 모든 패키지 검증
$ rpm -Va

 

  • vsftpd 패키지 검증
$ rpm -V vsftpd

 

⑤ 리빌드(Rebuild) 모드 : rpmbuild

  • rpm 소스 파일인 .src.rpm 파일 패키지 파일로 만드는 모드
  • rpmbuild 라는 명령어를 사용한다.

 

사용법

# rpmbuild [option] 소스패키지

 

주요 옵션

옵션 설명
--rebuild 소스 rpm 파일을 이용해서 rpm 패키지를 생성할 때 사용

 

사용 예

  • root가 실행했을 경우, /root/rpmbuild 디렉터리 안에 생성함.
  • 만약 x86_64 기반에서 리빌드 했을 경우, rpm 파일은 /root/rpmbuild/RPMS/x86_64 디렉터리에 생성됨.
# rpmbuild --rebuild gftp-2.0.19-8.fc18.src.rpm

 

문제 해결 전략

  • 메뉴얼 또는 문제 해결을 위한 힌트를 얻기 위해 반드시 알아야 할 명령어이다.
  • man rpm 명령을 사용하여 메뉴얼을 보며 문제를 해결한다.
728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖