使用Yum禁用/鎖定軟件包更新
修改(YUM)是基于RedHat的發(fā)行版本若河,比如CentOS的和Fedora包管理工具臊泌。下面討論用于使用Yum鎖定/禁用程序包更新的各種策略:
1.永久禁用安裝或更新程序包
1.打開并編輯yum.conf文件挥吵,該文件位于/etc/yum.conf中或/etc/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從正在更新軟件包,那么我只會(huì)追加以下行yum.conf :
exclude=python-3*
對(duì)于多個(gè)包排除只是按空格分隔其名稱泳赋。
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]
...
注意 :要包括這些包雌桑,忽視了項(xiàng)目yum.conf ,用“-disableexcludes”并將其設(shè)置為全部|主| repoid祖今,其中“主要”是指那些進(jìn)入的yum.conf和“repoid”是指那些排斥指定在repos.d目錄校坑,解釋以后。 現(xiàn)在讓我們嘗試安裝或更新指定的包千诬,并看到y(tǒng)um命令將禁用它們安裝或更新耍目。
# 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.臨時(shí)禁用安裝或更新程序包
以上是一個(gè)永久性的解決方案,以排除包中徐绑,除非文件被編輯邪驮,這包將不會(huì)更新。 這里也是一個(gè)臨時(shí)的解決方案傲茄。 就在當(dāng)你去任何更新毅访,使用時(shí)間-x開關(guān)Yum命令排除那些你不想更新,像包:
yum -x python-3 update
上面的命令將更新所有的更新可用的軟件包盘榨,但不包括python-3您的系統(tǒng)喻粹。 在這里,不包括多個(gè)包草巡,使用-x多次守呜,或者與獨(dú)立的包名','在一個(gè)單一的開關(guān)。
yum -x httpd -x php update
OR
yum -x httpd,php update
使用--exclude交換機(jī)的工作原理一樣-x,只需要-exclude和傳球來代替-x ','包名到它的分隔列表弛饭。
yum --exclude httpd,php
3.使用存儲(chǔ)庫禁用包更新
通過添加存儲(chǔ)庫從任何外部源安裝的包,還有另一種方式來阻止其向上漸變的未來萍歉。 這可以通過編輯來完成.repo這是在/etc/yum/repos.d/或/etc/yum.repos.d目錄下創(chuàng)建文件侣颂。 添加排除在回購包名選項(xiàng)。 像:排除任何包說從EPEL回購 酒 枪孩,添加以下行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
現(xiàn)在嘗試更新包的葡萄酒 憔晒,你會(huì)得到錯(cuò)誤如下圖所示:
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選項(xiàng)禁用包更新
Yum另一種方式來掩蓋任何軟件包的版本從而使其不能用于向上層次,是用versionlockYum的選項(xiàng)蔑舞,但要做到這一點(diǎn)拒担,就必須Yum插件-versionlock系統(tǒng)上安裝的軟件包。
yum -y install yum-versionlock
例如攻询,要鎖定包的版本說的httpd 2.4.6只从撼,只寫下面的命令為root用戶。
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