웹사이트 검색

Yum 명령을 사용하여 특정 패키지 업데이트를 비활성화/잠그는 4가지 방법


패키지 관리자는 사용자가 새로운 소프트웨어를 설치하거나 시스템을 업그레이드하거나 특정 소프트웨어를 업데이트하는 등의 작업을 수행할 수 있게 해주는 소프트웨어입니다. 하나의 소프트웨어가 해당 소프트웨어의 완전한 설치를 위해 시스템에 존재해야 하는 많은 종속성을 갖는 Linux 기반 시스템의 경우 패키지 관리자와 같은 소프트웨어는 모든 시스템에서 매우 필요한 도구가 됩니다.

각 Linux 배포판에는 위에 언급된 기능에 대한 기본 패키지 관리자가 함께 제공되지만 가장 많이 발견되는 패키지 관리자는 RHELFedora 시스템의 yum입니다. (현재 Fedora 22+부터 DNF로 대체되고 있음) 및 Debian의 apt입니다.

특정 패키지 업데이트를 차단하거나 비활성화하는 APT 도구를 찾고 있다면 이 문서를 읽어야 합니다.

Dnf 또는 Danified yum은 목록에 있는 또 다른 Fedora 시스템의 yum을 대체합니다. 올바르게 탐색하면 이러한 패키지 관리자를 다음 기능에 사용할 수 있습니다.

  1. 저장소에서 새 소프트웨어를 설치합니다.
  2. 소프트웨어를 설치하기 전에 해당 종속성을 설치하여 소프트웨어의 종속성을 해결하십시오.
  3. 각 소프트웨어의 종속성에 대한 데이터베이스를 유지합니다.
  4. 기존 소프트웨어의 버전을 다운그레이드합니다.
  5. 커널 버전 업그레이드.
  6. 설치 가능한 패키지를 나열합니다.

우리는 이미 실제 사례와 함께 개별 패키지 관리자에 대한 자세한 기사를 별도로 다루었습니다. 각 Linux 배포판에서 패키지 관리를 제어하고 관리하려면 해당 기사를 읽어야 합니다.

추가 읽기:

  1. 20가지 실제 예제를 통해 Yum 명령 익히기
  2. Fedora 22+ 버전에서 패키지를 관리하기 위한 27가지 DNF 명령
  3. Ubuntu 패키지를 관리하는 25가지 APT 명령 알아보기

이 기사에서는 RHEL/CentOS 및 Fedora 시스템에서 Yum 패키지 관리자를 사용하여 특정 패키지 업데이트를 잠그거나 비활성화하는 방법을 살펴보겠습니다(Fedora 21, 최신 Fedora 버전까지 적용 가능) 기본 패키지 관리자로 dnf와 함께 제공됩니다).

Yum을 사용하여 패키지 업데이트 비활성화/잠금

Yellow dog Updater, Modified(yum)는 CentOS 및 Fedora와 같은 RedHat 기반 배포판의 패키지 관리 도구입니다. Yum을 사용하여 패키지 업데이트를 잠그거나 비활성화하는 데 사용되는 다양한 전략은 아래에 설명되어 있습니다.

1. 설치 또는 업데이트를 위해 패키지를 영구적으로 비활성화합니다.

1. /etc/yum.conf 또는 /etc/에 있는 yum.conf 파일을 열고 편집합니다. yum/yum.conf.

아래와 같습니다:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
...

여기서 특정 패키지를 설치 또는 업그레이드에서 제외하려면 제외하려는 패키지 이름과 함께 제외 변수를 추가하면 됩니다. 예를 들어 모든 python-3 패키지가 업데이트되지 않도록 제외하려면 yum.conf에 다음 줄을 추가하면 됩니다.

exclude=python-3*

제외할 패키지가 두 개 이상인 경우 이름을 공백으로 구분하면 됩니다.

exclude=httpd php 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
exclude=python-3*        [Exclude Single Package]
exclude=httpd php        [Exclude Multiple Packages]
...

참고: yum.conf의 항목을 무시하고 이러한 패키지를 포함하려면 "-disableexcludes "를 사용하고 설정하세요. all|main|repoid에 적용합니다. 여기서 'main'yum.conf'repoid' 에 입력된 항목입니다. 는 나중에 설명하겠지만 repos.d 디렉토리에 제외가 지정된 항목입니다.

이제 지정된 패키지를 설치하거나 업데이트하고 yum 명령이 패키지 설치 또는 업데이트를 비활성화하는지 확인해 보겠습니다.

# yum install httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
Nothing to do
# yum update httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No packages marked for update

2. 설치 또는 업데이트를 위해 패키지를 일시적으로 비활성화합니다.

2. 위는 파일을 편집하지 않으면 해당 패키지가 업데이트되지 않으므로 패키지를 제외하는 영구적인 해결 방법입니다. 이에 대한 임시 해결책도 있습니다. 업데이트할 때 yum 명령의 -x 스위치를 사용하여 업데이트하고 싶지 않은 패키지를 제외하세요. 다음과 같습니다.

yum -x python-3 update

위 명령은 시스템의 python-3을 제외하고 업데이트가 가능한 모든 패키지를 업데이트합니다.

여기서 여러 패키지를 제외하려면 -x를 여러 번 사용하거나 단일 스위치에서 ','로 패키지 이름을 구분하세요.

yum -x httpd -x php update
OR
yum -x httpd,php update

3. --exclude 스위치 사용은 -x와 동일하게 작동합니다. -x로 바꾸면 됩니다. >–제외하고 ','로 구분된 패키지 이름 목록을 전달합니다.

yum --exclude httpd,php

3. 리포지토리를 사용하여 패키지 업데이트 비활성화

4. 저장소 추가를 통해 외부 소스에서 설치된 패키지의 경우 향후 업그레이드를 중지하는 또 다른 방법이 있습니다. 이는 /etc/yum/repos.d/ 또는 /etc/yum.repos.d<에 생성된 .repo 파일을 편집하여 수행할 수 있습니다. 디렉토리.

저장소에 패키지 이름과 함께 제외 옵션을 추가하세요. 예: epel repo에서 wine과 같은 패키지를 제외하려면 epel.repo 파일에 다음 줄을 추가하세요.

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=wine

이제 wine 패키지를 업데이트하려고 하면 아래와 같은 오류가 발생합니다.

# yum update wine

Loaded plugins: fastestmirror, langpacks, versionlock
epel/x86_64/metalink                                    | 5.6 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No Match for argument: wine
No package wine available.
No packages marked for update

4. versionlock 옵션을 사용하여 패키지 업데이트 비활성화

5. yum에서 패키지 버전을 가려서 업그레이드할 수 없도록 만드는 또 다른 방법은 yum의 versionlock 옵션을 사용하는 것입니다. 시스템에 yum-plugin-versionlock 패키지가 설치되어 있어야 합니다.

yum -y install yum-versionlock

예를 들어 httpd 패키지 버전을 2.4.6으로만 잠그려면 다음 명령을 루트로 작성하면 됩니다.

yum versionlock add httpd
샘플 출력
Loaded plugins: fastestmirror, langpacks, versionlock
Adding versionlock on: 0:httpd-2.4.6-40.el7.centos
versionlock added: 1

잠긴 패키지를 보려면 다음 명령을 사용하여 버전이 잠긴 패키지를 나열하십시오.

yum versionlock list httpd
샘플 출력
Loaded plugins: fastestmirror, langpacks, versionlock
0:httpd-2.4.6-40.el7.centos.*
versionlock list done

결론

다음은 yum 패키지 관리자를 사용하여 패키지 업데이트를 비활성화/잠금하는 데 도움이 되는 몇 가지 팁입니다. 동일한 작업을 수행할 수 있는 다른 방법이 있으면 의견을 보내주세요.