【dnf】
参考:https://man.linuxde.net/dnf
参考:http://www.tecmint.com/dnf-next-generation-package-management-utility-for-linux/
DNF是新一代的rpm软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,它取代了yum,正式成为 Fedora 22 的包管理器。
DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。DNF使用 RPM, libsolv 和 hawkey 库进行包管理操作。尽管它没有预装在 CentOS 和 RHEL 7 中,但你可以在使用 YUM 的同时使用 DNF 。
DNF 的最新稳定发行版版本号是 1.0,发行日期是2015年5月11日。 这一版本的额 DNF 包管理器(包括在他之前的所有版本) 都大部分采用 Python 编写,发行许可为GPL v2.
DNF 并未默认安装在 RHEL 或 CentOS 7系统中,但是 Fedora 22 已经默认使用 DNF:
先安装并启用 epel-release 依赖:
yum -y install epel-release
使用 epel-release 依赖中的 YUM 命令来安装 DNF 包:
yum install dnf
配置文件:/etc/dnf/dnf.conf
【源】
系统 centos 7.3
yum groupinstall 'Development Tools'
报错:No packages in any requested group available to install or update
解决方法:
cd /etc/yum.repos.d && sudo wget http://public-yum.oracle.com/public-yum-el5.repo cd /etc/pki/rpm-gpg/ && sudo wget https://public-yum.oracle.com/RPM-GPG-KEY-oracle-el5
参考:https://blog.csdn.net/wongnoubo/article/details/80445155
【搜索】
yum search prce
【安装指定版本的软件包】
yum默认都是安装最新版的软件,怎样使用yum安装指定版本的软件包呢?
例如:prce
输入:
yum list prce
输出:
pcre-7.8-6.el6.i686 : Perl-compatible regular expression library pcre-7.8-6.el6.x86_64 : Perl-compatible regular expression library pcre-7.8-6.el6.x86_64 : Perl-compatible regular expression library
输入要安装的版本的完整文件名(以安装pcre-7.8-6.el6.i686为例):
yum install pcre-7.8-6.el6.i686 -y
安装完后,检查pcre的版本了,输入:
rpm -qa | grep pcre
参考:http://www.dabu.info/yum-install-specific-version-old-package
【优先】
可以通过 yum-priorities 控制优先级。
参考:https://www.centos.org/forums/viewtopic.php?t=71871
centos 8/rhel 8 DNF has native support for priorities already
参考:https://blog.csdn.net/MrDing991124/article/details/78555502
参考:http://dev.antoinesolutions.com/yum-priorities
1. 编辑 yum-priorities 的配置文件以启用:/etc/yum/pluginconf.d/priorities.conf
[main] enabled=1 # 0禁用 1启用
2. 编辑 /etc/yum.repos.d/目录下的 *.repo 文件来设置优先级:
priority=N # N的值为1-99
数字越大,优先级越低。
【更新】
先清除,再重建:
yum clean metadata && yum makecache
或者:
dnf update --refresh
【排错】
报错:Another app is currently holding the yum lock
当CentOS上使用 yum update 命令意外退出,再次登录执行 yum update 命令时,报错:
Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 117 M RSS (990 MB VSZ) Started: Tue Aug 7 10:08:35 2018 - 27:20 ago State : Sleeping, pid: 3495
原因:系统进程已经有一个update在运行了。在进程里查看下:
ps -ef | grep update
输出:
root 3495 3473 1 10:08 pts/0 00:00:25 /usr/bin/python2.7 /usr/bin/yum update root 3894 3827 0 10:39 pts/1 00:00:00 grep --color=auto update root 26447 1 0 Jul14 ? 00:13:36 /usr/local/aegis/aegis_update/AliYunDunUpdate
原来在/var/run目录下,还有yum这个进程ID,需要将这个进程id文件强制删除掉:
rm -f /var/run/yum.pid
重启yum更新服务:
/sbin/service yum-updatesd restart
报错:
Redirecting to /bin/systemctl restart yum-updatesd.service Failed to restart yum-updatesd.service: Unit not found.
参考:https://www.centos.org/forums/viewtopic.php?t=14940
不管它,再试试yum命令,已正常。
报错:-bash: yum-config-manager: command not found
在CentOS上安装Fred的时候:
yum-config-manager --add-repo http://archive.nic.cz/yum/fred/epel/fred.repo yum install fred-* /usr/bin/postgresql-setup initdb
报错:
-bash: yum-config-manager: command not found
yum-config-manager在yum-utils包里,需要先安装yum-utils包:
yum -y install yum-utils