Linux 软件管理

RPM(RPM Package Manager)

rpm {-i|--install}[install-options] PACKAGE_FILE...

-h, --hash                       软件包安装的时候列出哈希标记 (和 -v 一起使用效果更好)
-i, --install                    安装软件包
-v, --verbose                  显示详细信息
--version                        打印使用的 rpm 版本号
--test                           不真正安装,只是判断下是否能安装
--nodeps                         不验证软件包依赖
-e, --erase=<package>+           清除 (卸载) 软件包
--replacepkgs                    如果软件包已经有了,重新安装软件包
--replacefiles                   忽略软件包之间的冲突的文件
--nodigest                       不校验软件包的摘要
--nosignature                    不验证软件包签名
-U, --upgrade=<packagefile>+     升级软件包

rpm 数据存储的路径 /var/lib/rpm

# ll /var/lib/rpm
总用量 65752
-rw-r--r--. 1 root root  1806336 1月  16 00:42 Basenames
-rw-r--r--. 1 root root     8192 12月 16 00:47 Conflictname
-rw-r--r--  1 root root   270336 1月  16 22:28 __db.001
....

常用安装命令

rpm -ivh PACKAGE_FILE

查询是否已安装某包 -q query 查询

rpm -q 包名

查询所有已安装包

rpm -qa
-q  query   查询
-a  all 所有

查询软件包详细信息(安装包的信息在安装包生成时就已经生成好了)

rpm -qi 包名
-q  query   查询
-i  information 信息

rpm -qip 包全名

-q  query   查询
-i  information 信息
-p  package 查询未安装包信息

查询包中文件安装位置

rpm -ql 包名
-q  query   查询
-l  list    列表
rpm -qlp 包全名
# rpm -qlp mysql-community-common-5.7.22-1.el7.x86_64.rpm
/usr/share/doc/mysql-community-common-5.7.22
/usr/share/doc/mysql-community-common-5.7.22/COPYING
/usr/share/doc/mysql-community-common-5.7.22/README
/usr/share/mysql/bulgarian
/usr/share/mysql/bulgarian/errmsg.sys
/usr/share/mysql/charsets
/usr/share/mysql/charsets/Index.xml
/usr/share/mysql/charsets/README
/usr/share/mysql/charsets/armscii8.xml
-q  query   查询
-l  list    列表
-p  package 查询未安装包信息

查询系统文件属于哪个 RPM 包

rpm -qf 系统文件名
#rpm -qf /etc/passwd
setup-2.8.71-7.el7.noarch
# rpm -qf /usr/bin/tree
tree-1.6.0-10.el7.x86_64
-q  query   查询
-f  file    文件名

查询软件包的依赖性

rpm -qR 包名
-q  query   查询
-R  requires    查询软件包的依赖性
-p  package 查询未安装包信息

搜索包

rpm -qa |grep mysql

yum 在线安装

yum是rpm包管理器的前端工具,所有软件包放到官方服务器上,当进行域名在线安装时,可以自动解决依赖性问题。 yum 源文件存放地址/etc/yum.repos.d/

# ll /etc/yum.repos.d/
总用量 16
-rw-r--r-- 1 root root  675 9月  26 00:42 CentOS-Base.repo
-rw-r--r-- 1 root root 2640 10月  5 19:25 docker-ce.repo
-rw-r--r-- 1 root root  230 9月  26 00:42 epel.repo

查看 vim CentOS-Base.repo的配置信息

 1 [base]
  2 name=CentOS-$releasever
  3 enabled=1
  4 failovermethod=priority
  5 baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
  6 gpgcheck=1
  7 gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7
  8
  9 [updates]
 10 name=CentOS-$releasever
 11 enabled=1
 12 failovermethod=priority
 13 baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
 14 gpgcheck=1
 15 gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7
 16
 17 [extras]
 18 name=CentOS-$releasever
 19 enabled=1
 20 failovermethod=priority
 21 baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
 22 gpgcheck=1
 23 gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7

[base] 容器名称,一定要在中括号[]中。 name 容器说明 mirrorlist 镜像站点 baseurl yum源服务器的地址 enabled 此容器是否生效,不写或者enabled=1 是生效 enabled=0不生效 gpgcheck RPM数字证书是否生效 gpgkey 数字证书的公钥文件保存位置

yum常用命令
yum [options] COMMAND

List of Commands:

check          检查 RPM 数据库问题
check-update   检查是否有可用的软件包更新
clean          删除缓存数据
deplist        列出软件包的依赖关系
distribution-synchronization 已同步软件包到最新可用版本
downgrade      降级软件包
erase          从系统中移除一个或多个软件包
fs             Acts on the filesystem data of the host, mainly for removing docs/lanuages for minimal hosts.
fssnapshot     Creates filesystem snapshots, or lists/deletes current snapshots.
groups         显示或使用、组信息
help           显示用法提示
history        显示或使用事务历史
info           显示关于软件包或组的详细信息
install        向系统中安装一个或多个软件包
list           列出一个或一组软件包
load-transaction 从文件名中加载一个已存事务
makecache      创建元数据缓存
provides       查找提供指定内容的软件包
reinstall      覆盖安装软件包
repo-pkgs      将一个源当作一个软件包组,这样我们就可以一次性安装/移除全部软件包。
repolist       显示已配置的源
search         在软件包详细信息中搜索指定字符串
shell          运行交互式的 yum shell
swap           Simple way to swap packages, instead of using shell
update         更新系统中的一个或多个软件包
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo     Acts on repository update information
upgrade        更新软件包同时考虑软件包取代关系
version        显示机器和/或可用的源版本。


Options:
  -h, --help            显示此帮助消息并退出
  -t, --tolerant        忽略错误
  -C, --cacheonly       完全从系统缓存运行,不升级缓存
  -c [config file], --config=[config file]
                        配置文件路径
  -R [minutes], --randomwait=[minutes]
                        命令最长等待时间
  -d [debug level], --debuglevel=[debug level]
                        调试输出级别
  --showduplicates      在 list/search 命令下,显示源里重复的条目
  -e [error level], --errorlevel=[error level]
                        错误输出级别
  --rpmverbosity=[debug level name]
                        RPM 调试输出级别
  -q, --quiet           静默执行
  -v, --verbose         详尽的操作过程
  -y, --assumeyes       回答全部问题为是
  --assumeno            回答全部问题为否
  --version             显示 Yum 版本然后退出
  --installroot=[path]  设置安装根目录
  --enablerepo=[repo]   启用一个或多个软件源(支持通配符)
  --disablerepo=[repo]  禁用一个或多个软件源(支持通配符)
  -x [package], --exclude=[package]
                        采用全名或通配符排除软件包
  --disableexcludes=[repo]
                        禁止从主配置,从源或者从任何位置排除
  --disableincludes=[repo]
                        disable includepkgs for a repo or for everything
  --obsoletes           更新时处理软件包取代关系
  --noplugins           禁用 Yum 插件
  --nogpgcheck          禁用 GPG 签名检查
  --disableplugin=[plugin]
                        禁用指定名称的插件
  --enableplugin=[plugin]
                        启用指定名称的插件
  --skip-broken         忽略存在依赖关系问题的软件包
  --color=COLOR         配置是否使用颜色
  --releasever=RELEASEVER
                        在 yum 配置和 repo 文件里设置 $releasever 的值
  --downloadonly        仅下载而不更新
  --downloaddir=DLDIR   指定一个其他文件夹用于保存软件包
  --setopt=SETOPTS      设置任意配置和源选项

显示所有的可用的软件包,包括已经按照的和未安装的软件

yum list

查看已经按照的软件包

yum list installed

查询软件包的描述信息 yum info nginx

$ yum info nginx
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: ftp.cuhk.edu.hk
 * extras: centos.ustc.edu.cn
 * updates: mirrors.aliyun.com
可安装的软件包
名称    :nginx
架构    :x86_64
时期       :1
版本    :1.12.2
发布    :2.el7
大小    :530 k
源    :epel/x86_64
简介    : A high performance web server and reverse proxy server
网址    :http://nginx.org/
协议    : BSD
描述    : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
         : IMAP protocols, with a strong focus on high concurrency, performance and low
         : memory usage.

yum search 软件包名关键字

# yum search nginx
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
============================================= N/S matched: nginx ==============================================
collectd-nginx.x86_64 : Nginx plugin for collectd
munin-nginx.noarch : NGINX support for Munin resource monitoring
nextcloud-nginx.noarch : Nginx integration for NextCloud
nginx-all-modules.noarch : A meta package that installs all available Nginx modules
nginx-filesystem.noarch : The basic directory layout for the Nginx server
nginx-mod-http-geoip.x86_64 : Nginx HTTP geoip module
nginx-mod-http-image-filter.x86_64 : Nginx HTTP image filter module
nginx-mod-http-perl.x86_64 : Nginx HTTP perl module
nginx-mod-http-xslt-filter.x86_64 : Nginx XSLT module
nginx-mod-mail.x86_64 : Nginx mail modules
nginx-mod-stream.x86_64 : Nginx stream modules
owncloud-nginx.noarch : Nginx integration for ownCloud
pcp-pmda-nginx.x86_64 : Performance Co-Pilot (PCP) metrics for the Nginx Webserver
python2-certbot-nginx.noarch : The nginx plugin for certbot
nginx.x86_64 : A high performance web server and reverse proxy server

安装软件包 yum -y install 软件包 安装软件过程中出现依赖安装的时候 Linux系统会暂停提示y或n,则-y 含义是回答全部问题为是

 yum -y install nginx
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 nginx.x86_64.1.1.12.2-2.el7 将被 安装
--> 正在处理依赖关系 nginx-all-modules = 1:1.12.2-2.el7,它被软件包 1:nginx-1.12.2-2.el7.x86_64 需要
--> 正在处理依赖关系 nginx-filesystem = 1:1.12.2-2.el7,它被软件包 1:nginx-1.12.2-2.el7.x86_64 需要
--> 正在处理依赖关系 nginx-filesystem,它被软件包 1:nginx-1.12.2-2.el7.x86_64 需要
--> 正在处理依赖关系 libprofiler.so.0()(64bit),它被软件包 1:nginx-1.12.2-2.el7.x86_64 需要
--> 正在检查事务

升级软件包

yum update 包名
# 如果没有写包名称 则是对所有的软件升级,包括内核升级

卸载软件

yum remove 包名

其他安装方式

apt-get deb包管理器的前端工具

dnf

Fedora18+ rpm包管理器前端工具

安装 DNF 包管理器

DNF 并未默认安装在 RHEL 或 CentOS 7系统中,但是 Fedora 22 已经默认使用 DNF .

1.为了安装 DNF ,您必须先安装并启用 epel-release 依赖。

在系统中执行以下命令:

# yum install epel-release

或者

# yum install epel-release -y

其实这里并没有强制使用”-y”的理由,相反的,在不使用”-y”的情况下,用户可以在安装过程中查看到底有哪些东西被安装进了系统。但对于没有这个需求的用户,您可以在 YUM 中使用”-y”参数来自动安装所有东西。

2.使用 epel-release 依赖中的 YUM 命令来安装 DNF 包。

在系统中执行以下命令:

# yum install dnf

然后, DNF 包管理器就被成功的安装到你的系统中了。接下来,是时候开始我们的教程了!在这个教程中,您将会学到27个用于 DNF 包管理器的命令。使用这些命令,你可以方便有效的管理您系统中的 RPM 软件包。现在,让我们开始学习 DNF 包管理器的27条常用命令吧!

– 查看 DNF 包管理器版本

用处:该命令用于查看安装在您系统中的 DNF 包管理器的版本

命令:# dnf –version

Check-DNF-Version1.gif

– 查看系统中可用的 DNF 软件库

用处:该命令用于显示系统中可用的 DNF 软件库

命令:# dnf repolist

Check-All-Enabled-Repositories.gif

– 查看系统中可用和不可用的所有的 DNF 软件库

用处:该命令用于显示系统中可用和不可用的所有的 DNF 软件库

命令:# dnf repolist all

3.gif

– 列出所有 RPM 包

用处:该命令用于列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包

命令:# dnf list

4.png

– 列出所有安装了的 RPM 包

用处:该命令用于列出所有安装了的 RPM 包

命令:# dnf list installed

5.png

– 列出所有可供安装的 RPM 包

用处:该命令用于列出来自所有可用软件库的可供安装的软件包

命令:# dnf list available

6.png

– 搜索软件库中的 RPM 包

用处:当你不知道你想要安装的软件的准确名称时,你可以用该命令来搜索软件包。你需要在”search”参数后面键入软件的部分名称来搜索。(在本例中我们使用”nano”)

命令:# dnf search nano

7.gif

– 查找某一文件的提供者

用处:当你想要查看是哪个软件包提供了系统中的某一文件时,你可以使用这条命令。(在本例中,我们将查找”/bin/bash”这个文件的提供者)

命令:# dnf provides /bin/bash

8.gif

– 查看软件包详情

用处:当你想在安装某一个软件包之前查看它的详细信息时,这条命令可以帮到你。(在本例中,我们将查看”nano”这一软件包的详细信息)

命令:# dnf info nano

9.gif

– 安装软件包

用处:使用该命令,系统将会自动安装对应的软件及其所需的所有依赖(在本例中,我们将用该命令安装nano软件)

命令:# dnf install nano

10.gif

– 升级软件包

用处:该命令用于升级制定软件包(在本例中,我们将用命令升级”systemd”这一软件包)

命令:# dnf update systemd

11

– 检查系统软件包的更新

用处:该命令用于检查系统中所有软件包的更新

命令:# dnf check-update

12.gif

– 升级所有系统软件包

用处:该命令用于升级系统中所有有可用升级的软件包

命令:# dnf update 或 # dnf upgrade

13.gif

– 删除软件包

用处:删除系统中指定的软件包(在本例中我们将使用命令删除”nano”这一软件包)

命令:# dnf remove nano 或 # dnf erase nano

14.gif

– 删除无用孤立的软件包

用处:当没有软件再依赖它们时,某一些用于解决特定软件依赖的软件包将会变得没有存在的意义,该命令就是用来自动移除这些没用的孤立软件包。

命令:# dnf autoremove

15.gif

– 删除缓存的无用软件包

用处:在使用 DNF 的过程中,会因为各种原因在系统中残留各种过时的文件和未完成的编译工程。我们可以使用该命令来删除这些没用的垃圾文件。

命令:# dnf clean all

16.gif

– 获取有关某条命令的使用帮助

用处:该命令用于获取有关某条命令的使用帮助(包括可用于该命令的参数和该命令的用途说明)(本例中我们将使用命令获取有关命令”clean”的使用帮助)

命令:# dnf help clean

– 查看所有的 DNF 命令及其用途

用处:该命令用于列出所有的 DNF 命令及其用途

命令:# dnf help

– 查看 DNF 命令的执行历史

用处:您可以使用该命令来查看您系统上 DNF 命令的执行历史。通过这个手段您可以知道在自您使用 DNF 开始有什么软件被安装和卸载。

命令:# dnf history

– 查看所有的软件包组

用处:该命令用于列出所有的软件包组

命令:# dnf grouplist

– 安装一个软件包组

用处:该命令用于安装一个软件包组(本例中,我们将用命令安装”Educational Software”这个软件包组)

命令:# dnf groupinstall ‘Educational Software’

– 升级一个软件包组中的软件包

用处:该命令用于升级一个软件包组中的软件包(本例中,我们将用命令升级”Educational Software”这个软件包组中的软件)

命令:# dnf groupupdate ‘Educational Software’

– 删除一个软件包组

用处:该命令用于删除一个软件包组(本例中,我们将用命令删除”Educational Software”这个软件包组)

命令:# dnf groupremove ‘Educational Software’

– 从特定的软件包库安装特定的软件

用处:该命令用于从特定的软件包库安装特定的软件(本例中我们将使用命令从软件包库 epel 中安装 phpmyadmin 软件包)

命令:# dnf –enablerepo=epel install phpmyadmin

– 更新软件包到最新的稳定发行版

用处:该命令可以通过所有可用的软件源将已经安装的所有软件包更新到最新的稳定发行版

命令:# dnf distro-sync

– 重新安装特定软件包

用处:该命令用于重新安装特定软件包(本例中,我们将使用命令重新安装”nano”这个软件包)

命令:# dnf reinstall nano

26.gif

– 回滚某个特定软件的版本

用处:该命令用于降低特定软件包的版本(如果可能的话)(本例中,我们将使用命令降低”acpid”这个软件包的版本)

命令:

# dnf downgrade acpid

样例输出:

Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.

在执行这条命令的时候, DNF 并没有按照我期望的那样降级指定的软件(“acpid”)。该问题已经上报。 DNF 包管理器作为 YUM 包管理器的升级替代品,它能自动完成更多的操作。但在我看来,正因如此,所以 DNF 包管理器不会太受那些经验老道的 Linux 系统管理者的欢迎。举例如下:

  1. 在 DNF 中没有 –skip-broken 命令,并且没有替代命令供选择。
  2. 在 DNF 中没有判断哪个包提供了指定依赖的 resolvedep 命令。
  3. 在 DNF 中没有用来列出某个软件依赖包的 deplist 命令。
  4. 当你在 DNF 中排除了某个软件库,那么该操作将会影响到你之后所有的操作,不像在 YUM 下那样,你的排除操作只会咋升级和安装软件时才起作用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券