Heesung Yang

[명령어] rpm

모든 옵션에 -p 를 붙여서 아직 설치되지 않는 rpm 파일에 대한 정보를 알 수 있다. 예를 들면 이런 식이다.

~$ rpm -ql docker-ce
~$ rpm -qlp docker-ce-20.10.12-3.el7.x86_64.rpm

~$ rpm -qi docker-ce
~$ rpm -qip docker-ce-20.10.12-3.el7.x86_64.rpm

rpm 설치

~$ rpm -ivh docker-ce-20.10.12-3.el7.x86_64.rpm

rpm 버전 업그레이드

~$ rpm -Uvh docker-ce-20.10.12-3.el7.x86_64.rpm

rpm 버전 다운그레이드

~$ rpm -Uvh --oldpackage docker-ce-20.10.12-3.el7.x86_64.rpm

rpm 에 포함된 파일 리스트 확인

~$ rpm -ql docker-ce
/usr/bin/docker-init
/usr/bin/docker-proxy
/usr/bin/dockerd
/usr/lib/systemd/system/docker.service
/usr/lib/systemd/system/docker.socket

rpm 메타 정보 확인

~$ rpm -qi docker-ce
Name        : docker-ce
Epoch       : 3
Version     : 20.10.12
Release     : 3.el7
Architecture: x86_64
Install Date: 2022년 01월 09일 (일) 오후 03시 46분 01초
Group       : Tools/Docker
Size        : 100894038
License     : ASL 2.0
Signature   : RSA/SHA512, 2021년 12월 13일 (월) 오후 11시 22분 11초, Key ID c52feb6b621e9f35
Source RPM  : docker-ce-20.10.12-3.el7.src.rpm
Build Date  : 2021년 12월 13일 (월) 오후 08시 45분 30초
Build Host  : dde032a932d2
Relocations : (not relocatable)
Packager    : Docker <support@docker.com>
Vendor      : Docker
URL         : https://www.docker.com
Summary     : The open-source application container engine
Description :
Docker is a product for you to build, ship and run any application as a
lightweight container.

Docker containers are both hardware-agnostic and platform-agnostic. This means
they can run anywhere, from your laptop to the largest cloud compute instance and
everything in between - and they don't require you to use a particular
language, framework or packaging system. That makes them great building blocks
for deploying and scaling web apps, databases, and backend services without
depending on a particular stack or provider.

특정 파일의 rpm 확인

docker 라는 파일이 어떤 rpm에 포함되어 있는지 확인하고 싶을 때, docker 파일의 절대 경로를 인자로 넘긴다.

# docker 명령어 파일의 절대 경로 확인
~$ which docker
/usr/bin/docker

# rpm -qf /usr/bin/docker 또는 아래와 같이 실행
~$ rpm -qf $(which docker)
docker-ce-cli-20.10.12-3.el7.x86_64

rpm dependancy 확인

~$ rpm -qR docker-ce
/bin/sh
/bin/sh
/bin/sh
/usr/sbin/groupadd
container-selinux >= 2:2.74
containerd.io >= 1.4.1
docker-ce-cli
docker-ce-rootless-extras
iptables
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libcgroup
libdevmapper.so.1.02()(64bit)
libdevmapper.so.1.02(Base)(64bit)
libdevmapper.so.1.02(DM_1_02_97)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
libseccomp >= 2.3
libsystemd.so.0()(64bit)
libsystemd.so.0(LIBSYSTEMD_209)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
systemd
tar
xz
rpmlib(PayloadIsXz) <= 5.2-1

rpm에 포함된 설치/삭제 스크립트 내용 확인

~$ rpm -q --scripts docker-ce
postinstall scriptlet (using /bin/sh):

if [ $1 -eq 1 ] ; then
        # Initial installation
        systemctl preset docker.service >/dev/null 2>&1 || :
fi

if ! getent group docker > /dev/null; then
    groupadd --system docker
fi
preuninstall scriptlet (using /bin/sh):

if [ $1 -eq 0 ] ; then
        # Package removal, not upgrade
        systemctl --no-reload disable docker.service > /dev/null 2>&1 || :
        systemctl stop docker.service > /dev/null 2>&1 || :
fi
postuninstall scriptlet (using /bin/sh):

systemctl daemon-reload >/dev/null 2>&1 || :
if [ $1 -ge 1 ] ; then
        # Package upgrade, not uninstall
        systemctl try-restart docker.service >/dev/null 2>&1 || :
fi