使用Yum命令禁用/锁定某些软件包更新的几种方法

使用Yum禁用/锁定软件包更新
修改(YUM)是基于RedHat的发行版本,比如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从正在更新软件包,那么我只会追加以下行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”并将其设置为全部|主| repoid,其中“主要”是指那些进入的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.临时禁用安装或更新程序包

以上是一个永久性的解决方案,以排除包中,除非文件被编辑,这包将不会更新。 这里也是一个临时的解决方案。 就在当你去任何更新,使用时间-x开关Yum命令排除那些你不想更新,像包:

yum -x python-3 update

上面的命令将更新所有的更新可用的软件包,但不包括python-3您的系统。 在这里,不包括多个包,使用-x多次,或者与独立的包名','在一个单一的开关。

yum -x httpd -x php update

OR

yum -x httpd,php update

使用--exclude交换机的工作原理一样-x,只需要-exclude和传球来代替-x ','包名到它的分隔列表。

yum --exclude httpd,php
3.使用存储库禁用包更新

通过添加存储库从任何外部源安装的包,还有另一种方式来阻止其向上渐变的未来。 这可以通过编辑来完成.repo这是在/etc/yum/repos.d/或/etc/yum.repos.d目录下创建文件。 添加排除在回购包名选项。 像:排除任何包说从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

现在尝试更新包的葡萄酒 ,你会得到错误如下图所示:

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选项禁用包更新

Yum另一种方式来掩盖任何软件包的版本从而使其不能用于向上层次,是用versionlockYum的选项,但要做到这一点,就必须Yum插件-versionlock系统上安装的软件包。

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容