RHEL 계열 관리 · rpm 저수준 · 실습
rpm 질의와 패키징
목표
rpm 으로 질의하고 검증하고, spec 파일로 직접 패키지를 빌드해 설치합니다.
왜 중요한가
rpm -V 는 설치 시점의 해시와 현재 파일을 비교해 무엇이 바뀌었는지 알려 주는 감사 도구입니다. 설정 파일이 바뀐 것은 정상이지만 바이너리가 바뀌었다면 조사해야 합니다. 그리고 패키지를 직접 만들어 보면 그 안에 무엇이 있는지 확실히 알게 됩니다 — %files 에 적히지 않은 파일이 있으면 빌드가 실패하는 rpmbuild 의 엄격함이 패키지 내용을 정확하게 유지해 줍니다.
단계
1. /root/rpmlab 디렉터리를 만들고, 설치된 패키지 개수를 숫자 한 줄로 /root/rpmlab/count.txt 에 적으세요.
2. coreutils-common 패키지의 문서 파일 목록을 /root/rpmlab/docs.txt 로 저장하세요.
3. /usr/bin/ls 를 소유한 패키지 이름만 한 줄로 /root/rpmlab/owner.txt 에 적으세요.
4. 설치된 패키지 중 설정 파일을 하나 골라 내용을 한 줄 덧붙인 뒤 검증을 실행하고, 변조가 표시된 줄을 /root/rpmlab/verify.txt 로 저장하세요. (/etc/nanorc 나 /etc/DIR_COLORS 처럼 안전한 파일을 고르세요.)
5. 아무 설치된 패키지의 설치 스크립트를 조회해 /root/rpmlab/scripts.txt 로 저장하세요. 스크립트가 없는 패키지면 그 사실이 출력됩니다.
6. ~/rpmbuild 빌드 트리를 만들고, /opt/fixtures/rpmbuild/labhub-tool-1.0 을 labhub-tool-1.0.tar.gz 로 묶어 SOURCES/ 에, /opt/fixtures/rpmbuild/labhub-tool.spec 을 SPECS/ 에 두고 빌드하세요. ~/rpmbuild/RPMS/noarch/ 아래에 .rpm 이 생겨야 합니다.
7. 만든 .rpm 을 설치하지 않은 채로 조회해 정보와 파일 목록을 각각 /root/rpmlab/pkg-info.txt, /root/rpmlab/pkg-files.txt 로 저장하세요.
8. 그 패키지를 설치하고 /root/rpmlab/report.txt 를 다음 4줄로 만드세요.NAME=labhub-tool / VERSION=<설치된 버전-릴리스> / ARCH=noarch / RUN=<labhub-tool 명령 실행 결과 첫 줄>
참고
- 빌드 트리는
mkdir -p ~/rpmbuild/{SPECS,SOURCES,BUILD,BUILDROOT,RPMS,SRPMS}로 만듭니다. - tar 는
tar -czf ~/rpmbuild/SOURCES/labhub-tool-1.0.tar.gz -C /opt/fixtures/rpmbuild labhub-tool-1.0형태입니다. - 빌드는
rpmbuild -ba ~/rpmbuild/SPECS/labhub-tool.spec입니다. - 설치되지 않은 rpm 조회는
-qp를 붙입니다. - 흔한 실수 1: 6번에서 tar 안의 최상위 디렉터리 이름이
%{name}-%{version}과 다르면%setup이 실패합니다. - 흔한 실수 2: 4번에서 설정 파일이 아닌 바이너리를 고치면 시스템이 망가집니다.
rpm -qc로 설정 파일 목록을 먼저 확인하세요.
단계 8개
- 설치 목록과 상세 정보
- 파일·설정·문서 구분
- 파일의 주인 찾기
- 변조 탐지
- 설치 스크립트 확인
- rpm 빌드
- 만든 패키지 뜯어보기
- 종합 보고서