일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 건대입구역
- 러닝
- docker
- 중식
- 한강
- 대구
- 뚝섬유원지
- 달리기
- Kubernetes
- 오답노트
- 자전거
- 소모임
- GitHub
- Grafana
- 10km
- Shell
- zabbix
- Linux
- 정보처리기사
- 대전
- 성수대교
- 유산소
- 하체
- Run The Bridge
- DSEC
- Podman
- 2021
- Python
- 힐링
- 맛집
- Today
- Total
Run The Bridge
package의 의존성 파일 출력 및 설치 본문
0. 들어가기에 앞서
linux나 ubuntu 같은 OS에서 패키지를 설치할 때 yum, apt-get을 많이 사용한다.
또는 rpm파일을 직접 받아와서 rpm -Uvh 명령으로 설치하는데 rpm 명령을 사용하면 의존성 오류가 발생할 수 있다.
이러한 문제점을 해결하고, rpm 패키지를 묶어서 배포까지 한 번 해본다.
1. Package 검색
우선은 내가 설치하려는 package의 이름으로 의존성 파일을 검색한다.
나는 얼마전에 포스팅한 podman 관련하여 의존성 파일을 찾아본다.
다음의 명령을 입력하면 해당 패키지의 의존성 파일을 알 수 있다.
rpm -qR podman # rpm -qR [패키지명]
/bin/sh
catatonit
config(podman) = 0:3.0.1-2.el7.3.1
conmon >= 2:2.0.16-1
container-selinux
containernetworking-plugins >= 0.9.1-1
containers-common >= 4:1-4
iptables
libassuan.so.0()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.8)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libgpg-error.so.0()(64bit)
libgpgme.so.11()(64bit)
libgpgme.so.11(GPGME_1.0)(64bit)
libgpgme.so.11(GPGME_1.1)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.12)(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
librt.so.1()(64bit)
librt.so.1(GLIBC_2.2.5)(64bit)
libseccomp.so.2()(64bit)
nftables
podman-plugins = 0:3.0.1-2.el7.3.1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
runc >= 2:1.0.0-148.rc93
slirp4netns >= 0.3.0-2
rpmlib(PayloadIsXz) <= 5.2-1
rpm 명령 관련해서는 google에 검색하면 정리가 잘 된 블로그들이 많으므로 한 번씩 명령어를 봐주면 좋다.
주요 명령어들은 다음과 같다.
명령어 | 풀 명령어 | 용도 |
-q | -query | 패키지 정보 질의 |
-i | --install | 패키지 설치 |
-U | --upgrade | 패키지 업그레이드 |
-e | --erase | 패키지 삭제 |
-V | --verify | 패키지 검증 |
-K | --checksig | 서명 검증 |
위의 명령어로 우리는 podman에 관련된 의존성 파일은 28개인 것을 알 수 있다.
1. 패키지 의존성 더 자세히 파악하기
우선 자기의 VM이 어떤 OS으로 설치되었는지 확인해야 한다. 다음의 명령어를 입력해서 확인한다.
나는 현재 'Centos7.9'를 사용한다. 즉 패키지 관련해서는 'Centos7.x'를 보면 된다.
cat /etc/*release
CentOS Linux release 7.9.2009 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux release 7.9.2009 (Core)
CentOS Linux release 7.9.2009 (Core)
위에서는 rpm 명령어로 패키지 의존성을 체크해보았지만 'pkgs.org'라는 사이트를 이용하면 손쉽게 의존성 파일을 알 수 있다.
search부분에 podman을 입력하고 클릭한다.
현재 내가 사용하는 Podman은 1.6.4 버전이지만, 이 버전은 github에 등록된 이슈도 있고 아직 docker 명령어를 완벽히 지원하지 않는다. 그래서 Centos7.x를 사용하지만 Centos8 버전의 podman 3.0.1을 사용한다.
Q.. 내 리눅스가 x84_64인지 arch64인지 어떻게 알아요?...
A. cat /proc/cpuinfo 명령으로 확인하시면 됩니다. Intel이 나온다면 x86_64입니다.
해당 podman 버전을 클릭하면 Requires로 이동한다. 그러면 podman 설치에 필요한 의존성 파일들을 볼 수 있다.
2. 패키지 파일 및 의존성 파일 설치
'common' 의존성 파일을 받아본다. value부분에는 최소 이 버전 이상은 되어야 설치가 되는 걸 명시해준다.
common 의존성 파일을 클릭하면 자동으로 검색해준다.
우리는 여기서 2.0.29 버전을 설치한다. 클릭!
조금 내리다 보면 Download 방법이 있는데 자신의 VM 서버에서 wget으로 접근이 되면 wget 명령으로 설치하면 된다.
또 다른 방법으로는 Binary Package을 URL에 붙여 넣기 하면 자동으로 다운로드가 된다.
근데 만약 입력을 했는데 404 상태 코드가 나오면서 page not found가 나올 수 있다.
이럴 때는 이름을 알기 때문에 google에 똑같이 입력하면 설치를 할 수 있는 사이트를 안내해준다.
3. 패키지 설치
Requires를 전부 다 받았다면 linux server로 옮겨주고 rpm 명령으로 설치를 해준다.
audit-libs-python-2.8.5-4.el7.x86_64.rpm dnsmasq-2.76-17.el7_9.3.x86_64.rpm libsemanage-python-2.5-14.el7.x86_64.rpm protobuf-c-1.0.2-3.el7.x86_64.rpm
catatonit-0.1.5-6.el7.3.1.x86_64.rpm fuse-overlayfs-1.5.0-1.el7.1.1.x86_64.rpm libslirp-4.3.1-4.el7.x86_64.rpm python-IPy-0.75-6.el7.noarch.rpm
checkpolicy-2.5-8.el7.x86_64.rpm fuse3-3.6.1-4.el7.x86_64.rpm nettle-2.7.1-9.el7_9.x86_64.rpm runc-1.0.1-0.el7.1.3.x86_64.rpm
conmon-2.0.29-1.el7.1.2.x86_64.rpm fuse3-libs-3.6.1-4.el7.x86_64.rpm nftables-0.8-14.el7.x86_64.rpm setools-libs-3.3.8-4.el7.x86_64.rpm
container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm libcgroup-0.41-21.el7.x86_64.rpm podman-3.0.1-2.el7.3.1.x86_64.rpm slirp4netns-1.1.8-4.el7.7.1.x86_64.rpm
containernetworking-plugins-1.0.0-0.2.rc1.el7.1.2.x86_64.rpm libnet-1.1.6-7.el7.x86_64.rpm podman-plugins-3.0.1-2.el7.3.1.x86_64.rpm
containers-common-1-18.el7.22.1.noarch.rpm libnftnl-1.0.8-3.el7.x86_64.rpm podman.tar
criu-3.12-2.el7.x86_64.rpm libseccomp-2.3.1-4.el7.x86_64.rpm policycoreutils-python-2.5-34.el7.x86_64.rpm
설치를 할 때 의존성 파일을 다 받았는데도, 의존성 파일에 의존성 파일이 존재할 수 있다.. 끝없는 뫼비우스의 띠...
rpm -Uvh *.rpm
경고: catatonit-0.1.5-6.el7.3.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 75060aa4: NOKEY
오류: Failed dependencies:
containers-common = 1:0.1.40-11.el7_8 is needed by (installed) skopeo-1:0.1.40-11.el7_8.x86_64
runc conflicts with (installed) containerd.io-1.4.3-3.1.el7.x86_64
runc is obsoleted by (installed) containerd.io-1.4.3-3.1.el7.x86_64
그래서 다음 명령을 입력해줌으로써 해결해준다. 어차피 우리는 podman에 필요한 require는 다 모았으니 상관없다.
# --force: 강제설치
# --nodeps: 의존성 무시
rpm -Uvh *.rpm --force --nodeps
rpm -Uvh *.rpm --force --nodeps
경고: catatonit-0.1.5-6.el7.3.1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 75060aa4: NOKEY
준비 중... ################################# [100%]
Updating / installing...
1:libseccomp-2.3.1-4.el7 ################################# [ 3%]
2:fuse3-libs-3.6.1-4.el7 ################################# [ 5%]
3:fuse3-3.6.1-4.el7 ################################# [ 8%]
4:fuse-overlayfs-1.5.0-1.el7.1.1 ################################# [ 10%]
5:setools-libs-3.3.8-4.el7 ################################# [ 13%]
6:python-IPy-0.75-6.el7 ################################# [ 15%]
7:protobuf-c-1.0.2-3.el7 ################################# [ 18%]
8:nettle-2.7.1-9.el7_9 ################################# [ 21%]
9:dnsmasq-2.76-17.el7_9.3 ################################# [ 23%]
10:libslirp-4.3.1-4.el7 ################################# [ 26%]
11:slirp4netns-1.1.8-4.el7.7.1 ################################# [ 28%]
12:libsemanage-python-2.5-14.el7 ################################# [ 31%]
13:libnftnl-1.0.8-3.el7 ################################# [ 33%]
14:nftables-1:0.8-14.el7 ################################# [ 36%]
15:libnet-1.1.6-7.el7 ################################# [ 38%]
16:criu-3.12-2.el7 ################################# [ 41%]
17:libcgroup-0.41-21.el7 ################################# [ 44%]
18:containernetworking-plugins-1.0.0################################# [ 46%]
19:conmon-2:2.0.29-1.el7.1.2 ################################# [ 49%]
20:checkpolicy-2.5-8.el7 ################################# [ 51%]
21:catatonit-0.1.5-6.el7.3.1 ################################# [ 54%]
22:audit-libs-python-2.8.5-4.el7 ################################# [ 56%]
23:policycoreutils-python-2.5-34.el7################################# [ 59%]
24:container-selinux-2:2.119.2-1.911################################# [ 62%]
25:runc-2:1.0.1-0.el7.1.3 ################################# [ 64%]
26:containers-common-4:1-18.el7.22.1경고: /etc/containers/registries.conf(이)가 /etc/containers/registries.conf. rpmnew(으)로 생성되었습니다
################################# [ 67%]
27:podman-plugins-0:3.0.1-2.el7.3.1 ################################# [ 69%]
28:podman-0:3.0.1-2.el7.3.1 경고: /etc/cni/net.d/87-podman-bridge.conflist(이)가 /etc/cni/net.d/87-podma n-bridge.conflist.rpmnew(으)로 생성되었습니다
################################# [ 72%]
Cleaning up / removing...
29:catatonit-0.1.5-1.el7 ################################# [ 74%]
30:podman-1.6.4-22.el7_9 ################################# [ 77%]
31:containers-common-1:0.1.40-11.el7################################# [ 79%]
32:slirp4netns-1.1.8-1.el7 ################################# [ 82%]
33:podman-plugins-0:2.2.1-1.el7 ################################# [ 85%]
34:dnsmasq-2.76-16.el7 ################################# [ 87%]
35:libslirp-4.3.1-2.el7 ################################# [ 90%]
36:fuse-overlayfs-0.7.2-6.el7_8 ################################# [ 92%]
37:conmon-2:2.0.8-1.el7 ################################# [ 95%]
38:containernetworking-plugins-0.8.3################################# [ 97%]
39:nettle-2.7.1-8.el7 ################################# [100%]
설치가 다되고 'podman --version'을 입력한다.
podman --version
podman version 3.0.1
정상적으로 업그레이드가 잘 되었다.
4. other
찾다 보니 패키지를 전부 모아둔 사이트를 찾았다.
https://download.opensuse.org/
근데 사이트 이름이 openSUSE이다 ㅋㅋ... CentOS_7도 있으니 문제 될 건 없어 보인다.
감사합니다.
'Cloud > Linux' 카테고리의 다른 글
알마 리눅스, 로키 리눅스 (0) | 2022.03.04 |
---|---|
disk i/o 확인하기 (0) | 2022.03.04 |
Ansible-playbook, 숫자 입력만으로 원하는 곳 실행하기 (0) | 2022.02.16 |
shell-script로 계산기 만들기 (2) | 2022.02.11 |
shell script master -9- (마지막) (0) | 2022.01.27 |