Linux-YUM
RPM 和 YUM 相关笔记
RPM 软件包搜索下载网站,会列出每个包的依赖和被谁引用,离线安装软件很方便。
https://centos.pkgs.org/7/centos-x86_64/
rpm
http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html
-v, --verbose
输出详细信息
rpm -i
安装rpm包
-i, --install
安装rpm包
例如
rpm -i lrzsz-0.12.20-36.el7.x86_64.rpm
rpm -U glibc-2.17-317.el7.x86_64.rpm glibc-common-2.17-317.el7.x86_64.rpm
glic 和 glic-common 互相依赖,必须同时安装
rpm -i 时冲突报错
# rpm -i pcre-8.32-17.el7.x86_64.rpm
warning: pcre-8.32-17.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
file /usr/lib64/libpcre.so.1.2.0 from install of pcre-8.32-17.el7.x86_64 conflicts with file from package pcre-8.32-15.el7_2.1.x86_64
file /usr/lib64/libpcre16.so.0.2.0 from install of pcre-8.32-17.el7.x86_64 conflicts with file from package pcre-8.32-15.el7_2.1.x86_64
file /usr/lib64/libpcre32.so.0.0.0 from install of pcre-8.32-17.el7.x86_64 conflicts with file from package pcre-8.32-15.el7_2.1.x86_64
file /usr/lib64/libpcrecpp.so.0.0.0 from install of pcre-8.32-17.el7.x86_64 conflicts with file from package pcre-8.32-15.el7_2.1.x86_64
file /usr/lib64/libpcreposix.so.0.0.1 from install of pcre-8.32-17.el7.x86_64 conflicts with file from package pcre-8.32-15.el7_2.1.x86_64
说明是已安装了低版本的 pcre-8.32-15.el7_2.1.x86_64, 直接改为 -U
升级即可:rpm -U pcre-8.32-17.el7.x86_64.rpm
rpm -qa
查询已安装的包
-a, --all
查询/验证所有已经安装的包
rpm -qa iptables
查看已安装的 iptables 版本
rpm -qa |grep iptables
查看 iptables 是否被安装
例如:查看 example.rpm 安装包的信息:
rpm -qip example.rpm
例如:查询一个已经安装的文件属于哪个软件包;
rpm -qf /usr/lib/libacl.la
rpm -Uvh
更新/安装rpm包
-U, --upgrade=<packagefile>
更新包,如果没有会直接安装-v, --verbose
显示指令执行过程-h, --hash
安装时打印hash标记
比如已安装 iptables-1.4.21-16.el7.x86_64
升级到 iptables-1.4.21-35.el7.x86_64.rpm
# rpm -qa iptables
iptables-1.4.21-16.el7.x86_64
# rpm -U iptables-1.4.21-35.el7.x86_64.rpm
rpm -U升级报错低版本被需要
比如升级 libcom_err 时报错:
# rpm -U libcom_err-1.42.9-19.el7.x86_64.rpm
warning: libcom_err-1.42.9-19.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
libcom_err(x86-64) = 1.42.9-9.el7 is needed by (installed) e2fsprogs-libs-1.42.9-9.el7.x86_64
libcom_err(x86-64) = 1.42.9-9.el7 is needed by (installed) libss-1.42.9-9.el7.x86_64
libcom_err(x86-64) = 1.42.9-9.el7 is needed by (installed) e2fsprogs-1.42.9-9.el7.x86_64
原因:
低版本的 libcom_err-1.42.9-9.el7 被列出的这三个包所依赖,所以不能单独升级 libcom_err
解决:
将 libcom_err 和依赖它的几个包全部升级,注意升级时必须一次性全部升级,单独升级其中某一个还是会报错,例如单独升级 libss 会报错:
# rpm -U libss-1.42.9-19.el7.x86_64.rpm
warning: libss-1.42.9-19.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
libcom_err(x86-64) = 1.42.9-19.el7 is needed by libss-1.42.9-19.el7.x86_64
libss = 1.42.9-9.el7 is needed by (installed) e2fsprogs-1.42.9-9.el7.x86_64
一次性升级这四个即可:
rpm -U libcom_err-1.42.9-19.el7.x86_64.rpm libss-1.42.9-19.el7.x86_64.rpm e2fsprogs-libs-1.42.9-19.el7.x86_64.rpm e2fsprogs-1.42.9-19.el7.x86_64.rpm
rpm -U glibc-2.17-317.el7.x86_64.rpm glibc-common-2.17-317.el7.x86_64.rpm
升级互相依赖的 glic 和 glic-commonrpm -U libselinux-utils-2.5-15.el7.x86_64.rpm libselinux-2.5-15.el7.x86_64.rpm libselinux-python-2.5-15.el7.x86_64.rpm
这三个必须同时升级
rpm -e
卸载
rpm -e 需要卸载的安装包
例如:卸载 tomcat4 软件包
rpm -e tomcat4
在卸载之前,通常需要使用 rpm -qa 命令查出需要卸载的安装包名称
例如安装rpm -i nginx-1.0.0-0.x86_64.rpm
之后通过rpm -e nginx-1.0.0-0.x86_64.rpm卸载会提示:
error: package nginx-1.0.0-0.x86_64.rpm is not installed
因为此安装包安装之后的名字并不是nginx-1.0.0-0.x86_64.rpm,所以我们查询一下
rpm -qa | grep nginx
结果为:nginx-1.0.0-0.x86_64
然后rpm -e nginx-1.0.0-0.x86_64就可以成功卸载了
在Linux操作系统下,几乎所有的软件均通过RPM进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat公司提出的,用于管理Linux下软件包的软件。
yum 源管理(repo)
yum repolist 列出可用的yum源(repo)
yum repolist
列出已安装的 yum 源
通过查看 /etc/yum.repos.d/
目录,也可以看当前的yum源
ls /etc/yum.repos.d/
repo 文件是 Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!
# yum repolist
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
* base: mirrors.bupt.edu.cn
* extras: mirror.nyist.edu.cn
* updates: mirrors.jlu.edu.cn
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10072
download.opensuse.org_repositories_home_Alexander_Pozdnyakov_RHEL_7_ added from: http://download.opensuse.org/repositories/home:/Alexander_Pozdnyakov/RHEL_7/ 354
extras/7/x86_64 CentOS-7 - Extras 518
updates/7/x86_64 CentOS-7 - Updates 5116
repolist: 16060
# ls /etc/yum.repos.d
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo download.opensuse.org_repositories_home_Alexander_Pozdnyakov_RHEL_7_.repo
CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo CentOS-x86_64-kernel.repo
yum-config-manager –add-repo 安装yum源
--add-repo
从指定文件或URL添加软件仓库
先安装 yum-config-managersudo yum update && yum install -y yum-utils
通过 yum-config-manager 安装 docker 源sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
通过 yum-config-manager 安装 maven 源
$ sudo yum-config-manager --add-repo http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo
已加载插件:fastestmirror
adding repo from: http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo
grabbing file http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo to /etc/yum.repos.d/epel-apache-maven.repo
repo saved to /etc/yum.repos.d/epel-apache-maven.repo
手动创建yum源文件
还可以直接创建 /etc/yum.repos.d/xxx.repo
文件,写入软件信息即可。
比如nginx官方给的方式,直接创建 /etc/yum.repos.d/nginx.repo
文本文件
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
http://nginx.org/en/linux_packages.html#RHEL-CentOS
或者直接 wget
把repo文件下载到 /etc/yum.repos.d/
目录中,比如安装 maven yum repowget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum
yum 和 rpm 的关系
rpm(RedHat Package Manager) 是由红帽公司开发的软件包管理方式,使用 rpm 我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是 rpm 软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个 rpm 包组成时。
yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
yum 基於 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum 的关键之处是要有可靠的 repository,顾名思义,这是软件的仓库,它可以是 http 或 ftp 站点,也可以是本地软件池,但必须包含 rpm 的 header, header 包括了 rpm 包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header 并加以分析,才能自动化地完成余下的任务。
yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助)等。[command]为所要进行的操作,[package …]是操作的对象。
-y:当安装过程提示选择全部为”yes”
-q:不显示安装的过程
-x [package], –exclude=[package] 采用全名或通配符排除软件包
yum list available 查看是否按照了某个repo
yum list available | grep extras 查看是否按照了某个repo
rpm -qa 查询是否安装了某个yum源
rpm -qa |grep -i repo-name
rpm -Uvh 在线命令安装yum源
可以通过 rpm
命令,指定源链接在线安装,
注意对应的linux版本,如果版本不对可能安装失败。
比如安装nginx源,RHEL/CentOS 7.x 版本中
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
又比如安装mysql源
RHEL/CentOS 7.x 版本中
sudo rpm -Uvh http://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
RHEL/CentOS 6.x 版本中
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el6-3.noarch.rpm
rpm -e 删除yum源(及缓存)
先 rpm -qa|grep
查找yum源的具体名称
再 rpm -e repo-name
删除yum源
1、例如删除remi源
$ rpm -qa|grep remi
remi-release-6.10-1.el6.remi.noarch
$ sudo rpm -e remi-release-6.10-1.el6.remi.noarch
2、例如在 centos 6.x系统上错误安装了 7.x的mysql源后删除
$ rpm -qa|grep mysql
mysql80-community-release-el7-1.noarch
$ sudo rpm -e mysql80-community-release-el7-1.noarch
警告:/etc/yum.repos.d/mysql-community.repo 已另存为 /etc/yum.repos.d/mysql-community.repo.rpmsave
安装的 yum源都在 /etc/yum.repos.d/
目录中,直接进入能看到,删除后的yum源会被标为 repo.rpmsave 结尾的文件
yum clean 删除yum缓存
删除yum repo缓存
一开始我删除7.x的repo后马上安装6.x的repo,结果安装的mysql版本还是7.x的,原来是yum repo有缓存,需要手动删除repo缓存,否则还会读取缓存中的7.x repo
$ cd /var/cache/yum/x86_64/latest/
$ ls
amzn-main amzn-updates mysql56-community mysql-connectors-community mysql-tools-community nodesource timedhosts
$ sudo rm -rf mysql*
或者
yum clean headers #清理/var/cache/yum的headers
yum clean packages #清理/var/cache/yum下的软件包
yum clean metadata
或者yum clean all
yum 会把下载的软件包和 header 存储在 cache 中,而不自动删除。如果觉得占用磁盘空间,可以使用 yum clean 指令进行清除,更精确 的用法是
yum clean headers 清除header,
yum clean packages 清除下载的rpm包,
yum clean all一全部清除。
yum makecache 生成本地缓存
yum makecache
将服务器上的软件包信息 现在本地缓存,以提高 搜索 安装软件的速度
经常用在更新 yum 源或者安装新 yum 源之后用 yum makecache
生成一下缓存。
yum search 查询想安装的软件
yum search keyword 搜索将尝试仅搜索软件包名称和摘要,但是如果“失败”,它将尝试描述和url。搜索结果会按相关性排序
yum search all 在全部包字段上搜索
yum install 安装
yum install package1 安装指定的安装包package1
yum update 更新和升级
yum update package1 更新指定程序包package1
yum list 查找和显示
yum info package1 显示安装包信息package1
yum list package1 显示指定程序包安装情况package1
yum list installed 列出已安装的包
yum list installed 列出所有已安装的软件包
yum list updates 列出所有可更新的软件包
yum remove 删除
rpm -qa | grep docker 查看已安装的 docker 版本
yum remove package1 删除程序包package1,同时会提示与之有依赖关系的包
yum安装软件日志
tail /var/log/yum.log
查看yum使用的历史记录的方法:
yum history info
上一篇 Linux-Service
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: