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 |