rpmの照会とパッケージング
한국어 원문으로 표시합니다.
목표
rpm 으로 질의하고 검증하고, spec 파일로 직접 패키지를 빌드해 설치합니다.
왜 중요한가
rpm -V 는 설치 시점의 해시와 현재 파일을 비교해 무엇이 바뀌었는지 알려 주는 감사 도구입니다. 설정 파일이 바뀐 것은 정상이지만 바이너리가 바뀌었다면 조사해야 합니다. 그리고 패키지를 직접 만들어 보면 그 안에 무엇이 있는지 확실히 알게 됩니다 — %files 에 적히지 않은 파일이 있으면 빌드가 실패하는 rpmbuild 의 엄격함이 패키지 내용을 정확하게 유지해 줍니다.
단계
/root/rpmlab디렉터리를 만들고, 설치된 패키지 개수를 숫자 한 줄로/root/rpmlab/count.txt에 적으세요.coreutils-common패키지의 문서 파일 목록을/root/rpmlab/docs.txt로 저장하세요./usr/bin/ls를 소유한 패키지 이름만 한 줄로/root/rpmlab/owner.txt에 적으세요.- 설치된 패키지 중 설정 파일을 하나 골라 내용을 한 줄 덧붙인 뒤 검증을 실행하고, 변조가 표시된 줄을
/root/rpmlab/verify.txt로 저장하세요. (/etc/nanorc나/etc/DIR_COLORS처럼 안전한 파일을 고르세요.) - 아무 설치된 패키지의 설치 스크립트를 조회해
/root/rpmlab/scripts.txt로 저장하세요. 스크립트가 없는 패키지면 그 사실이 출력됩니다. ~/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이 생겨야 합니다.- 만든
.rpm을 설치하지 않은 채로 조회해 정보와 파일 목록을 각각/root/rpmlab/pkg-info.txt,/root/rpmlab/pkg-files.txt로 저장하세요. - 그 패키지를 설치하고
/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로 설정 파일 목록을 먼저 확인하세요.
설치 목록과 상세 정보
/root/rpmlab 디렉터리를 만들고, 설치된 패키지 개수를 숫자 한 줄로 /root/rpmlab/count.txt 에 적으세요.
rpm -qa 는 한 줄에 하나씩 나옵니다. 개수만 세면 됩니다.
파일·설정·문서 구분
coreutils-common 패키지의 문서 파일 목록을 /root/rpmlab/docs.txt 로 저장하세요.
-ql, -qc, -qd 세 옵션이 각각 다른 목록을 냅니다.
파일의 주인 찾기
/usr/bin/ls 를 소유한 패키지 이름만 한 줄로 /root/rpmlab/owner.txt 에 적으세요.
-qf 는 경로를 받아 패키지를 알려 줍니다. 이름만 필요하면 잘라내세요.
변조 탐지
설치된 패키지 중 설정 파일을 하나 골라 내용을 한 줄 덧붙인 뒤 검증을 실행하고, 변조가 표시된 줄을 /root/rpmlab/verify.txt 로 저장하세요. (/etc/nanorc 나 /etc/DIR_COLORS 처럼 안전한 파일을 고르세요.)
설정 파일을 고친 뒤 검증하면 특정 문자가 나타납니다. 그 줄을 그대로 저장하세요.
설치 스크립트 확인
아무 설치된 패키지의 설치 스크립트를 조회해 /root/rpmlab/scripts.txt 로 저장하세요. 스크립트가 없는 패키지면 그 사실이 출력됩니다.
패키지가 설치 전후에 무엇을 실행하는지 볼 수 있는 질의 옵션이 있습니다.
rpm 빌드
~/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 이 생겨야 합니다.
빌드 트리를 만들고 소스를 tar 로 묶어 SOURCES 에 두면 됩니다. spec 은 픽스처에 있습니다.
만든 패키지 뜯어보기
만든 .rpm 을 설치하지 않은 채로 조회해 정보와 파일 목록을 각각 /root/rpmlab/pkg-info.txt, /root/rpmlab/pkg-files.txt 로 저장하세요.
설치되지 않은 파일을 조회하려면 옵션 하나가 더 필요합니다.
종합 보고서
그 패키지를 설치하고 /root/rpmlab/report.txt 를 다음 4줄로 만드세요.
NAME=labhub-tool / VERSION=<설치된 버전-릴리스> / ARCH=noarch / RUN=<labhub-tool 명령 실행 결과 첫 줄>
빌드하고 설치한 패키지의 정보를 모으세요. 값은 실제 조회 결과여야 합니다.