RPM (Redhat Package Manager)


1. 설치/삭제 모드

rpm -[옵션] [rpm파일]

-i : 패키지 설치, 동일 패키지 설치 되어 있는 경우 버전 상관없이 실패

-U : 동일 패키지 미설치 시 설치됨, 설치되어 있는 경우 최신 버전으로 업데이트

-F : 오직 업데이트만 함

-e : 해당 패키지 삭제


추가옵션

-v : 작업 과정 자세히 출력

-h : 작업 진행 상황을 #로 보여줌

--test : 테스트, 실제로 설치/삭제하지 않음

--force : 강제 작업

--nodeps : 패키지 의존성을 검사하지 않음


ex) rpm -Uvh test.rpm abc.rpm

rpm -Uvh ftp://abc/test.rpm


2. 질의 모드

rpm -q[옵션]

-q name : name 패키지의 버전을 포함한 전체 이름 조회

-qa [pattern] : pattern에 부합되는 설치된 패키지 목록을 조회

-ql name : name 패키지의 포함된 파일 리스트를 조회(설치시 리스트)

-qd name : name 패키지의 파일 리스트 중에 문서 파일만 조회(설치시 리스트)

-qc name : name 패키지의 파일 리스트 중에 설정 파일만 조회(설치시 리스트)

-qf file : file이 어느 패키지에 속해 있는지 조회

-qs name : name 패키지의 현재 파일 목록 상태를 조회, normal(정상), not installed(설치되지 않음), replaced(파일 내용이 다름)의 정보 출력

-qR name : name 패키지가 필요로 하는 의존성을 조회

-qi name : name 패키지의 패키지 정보 조회(패키지명, 종류, 용량, 설치 날짜, 간단한 설명 등등)

-q --changelog name : name 패키지의 변경된 사항을 출력

-p name : 설치 전, name 패키지의 정보


ex)  rpm -qlp name

rpm -qdp name

rpm -qcp name

rpm -qRp name

rpm -qip name


3. 검증 모드

rpm -V

rpm -V [package] : 처음 패키지가 설치되었을 당시와 현재 시점까지 패키지에 어떤 변화가 일어났는지에 대한 검증

   아무 내용이 없거나, .일 경우, 패키지에 전혀 문제가 없음


S : 파일 크기가 변경됨

M : 접근권한이 변경됨

5 : MD5 체크섬 에러(파일 내용이 변경됨

D : 장치 파일이 변경됨

L : 심벌릭 링크가 변경됨

U : 소유권자가 변경됨

G : 소유그룹이 변경됨

T : 갱신일이 변경됨

? : 검증 실패(파일을 읽을 수 없는 경우), 권한 부족


4. 확인 모드

rpm -K

rpm --import [PUBKEY ...]  : rpm gpg 공용키 설치

rpm -qa [gpg-pubkey*] : rpm gpg 공용키 확인


ex) rpm --import http://www.blah.com/rpm-gpg-key-blah


키가 중복되어 삭제가 안될 경우

rpm -e --allmatches [gpg-pubkey]


ex) rpm -e --allmatches [gpg-pubkey*] : 모든 키 삭제


rpm -K [옵션] package.rpm

dsa sha1 md5 gpg OK

--nosignature : 서명을 검사하지 않음, sha1 md5 만 검사

--nodigest : 체크섬을 하지 않음, dsa gpg 만 검사


5. 제작 모드

rpmbuild


사용하는 경우 2가지

-직접 패키지를 제작하는 과정

-소스 패키지를 리빌드하여 바이너리 패키지를 추출할 때


패키지 제작에 필요한 디렉터리

/usr/src/redhat 

BUILD : 패키지를 만드는 실제 공간, 컴파일과 각종 작업

RPMS : 다 만들어진 바이너리 패키지가 저장되는 곳/아키텍처 별로 디렉터리

SOURCES : 패키지를 만들기 위한 소스 파일들이 위치하는 곳

SPECS : 패키지를 만들기 위한 스크립트인 spec 파일이 위치

SRPMS : 소스 패키지가 위치하는 곳


rpmbuild --rebuild [build option] [package.rpm]


ex) rpmbuild --rebuild --target i686 test.rpm

여러개의 바이너리 패키지가 나올 수 도 있음.


패키지명에 debuginfo 붙은 패키지 - 디버깅이 가능하도록 컴파일된 패키지

debuginfo 패키지를 만들지 않게 설정

#cat > ~/.rpmmacros

%debug_package %{nil}

CTRL-D


일반유저로 패키지 빌드하기

$mkdir ~/rpm

$cd rpm

$mkdir BUILD RPMS SOURCES SPECS SRPMS

$mkdir tmp

$cat > ~/.rpmmacros

%_topdir /home/[사용자홈디렉터리]/rpm

%_tmppath /home/[사용자홈디렉터리]/rpm/tmp

CTRL-D


rpm 데이터베이스 복구

rpm --rebuilddb -v


패키지 풀기

rpm2cpio

cpio : tar와 같이 파일을 묶어 주는 유틸


-i : 풀기

-d : 디렉터리가 있으면 생성

-v : 자세한 과정

-n : 유저명과 그룹명을 UID, GID의 숫자로 표기

※ 보통 속도를 위해, 유저명, 그룹명을 해석하지 않음.


ex) rpm2cpio test1.rpm | cpio -indv

※바이너리 패키지 뿐 아니라, src.rpm 형식의 소스 패키지도 풀수 있음


'#Linux' 카테고리의 다른 글

[Linux] 네트워크 설정  (0) 2019.01.27
[Linux] 패키지 관리 - YUM  (0) 2019.01.24
[Linux] 파일 시스템 SWAP  (0) 2019.01.24
[Linux] 파일 시스템 포맷 및 검사  (0) 2019.01.22
[Linux] 파일 시스템  (0) 2019.01.22

+ Recent posts