Linux软件安装与管理(Debian/Ubuntu&RHEL/CentOS)

Linux软件安装与管理(Debian/Ubuntu&RHEL/CentOS)

一、deb包管理
作为 Debian 系统管理员,你经常地要处理 .deb 包,因为它们包含一致的功能单元(应用程序、文档等),使得安装和维护更容易。.deb 文件,可以用 dpkg 命令直接处理;
1、工具 dpkg、APT 和 ar
dpkg 应视为系统工具 (背景) 之一,而 apt 则是较倾向用户的工具,可克服前者的限制。这些工具各有其限制,共同解决特定的作业。dpkg 是处理 .deb 文件的命令,尤其是解压、分析和解包它们。
APT 是一组允许对系统进行高级的修改的程序:安装或者删除一个软件包(并且保持依赖关系满足),更新系统,列出可用的软件包等。
对于 ar 程序,ar t archive会显示包含在这样一个归档中的文件列表;ar x archive 将文件从归档中提取至当前工作目录, ar d archive file 从归档中删除一个文件等。它的手册页 (ar(1)) 记录了它的其他全部特性。ar 是一个非常初步的工具,Unix 管理员仅在极少数情况下使用它,而是通常使用tar,一个更先进的归档和文件管理程序。这是在误删情况下容易恢复 dpkg 的原因。您仅需要下载 Debian 包,并在系统 root (/)下从 data.tar.gz 归档中提取内容:
#ar x dpkg1.17.23amd64.deb
#tar -C / -p -xzf data.tar.gz


2.1、dpkg(deb包安装命令)
dpkg 是系统层面处理 Debian 软件包的基础指令。若您有 .deb 软件包,可以用 dpkg 安装及分析其内容。但此指令只能看到 Debian 世界的部分内容:它知道系统安装那些软件包、指令列给了那些参数,但不知道还有那些可用的软件包。因此,没有相依性就完了。apt 之类的工具,则可产生相依性清单,尽量自动安装软件包。
软件包安装:
dpkg -i man-db2.7.0.2-5amd64.deb //安装一个软件包
安装时出现错误提示,dpkg去忽略这个错误,这里有非常多的--force-选项,只是--force-overwrite使用的非常频繁。这些选项仅存在特殊的情况下,所以最好是不去使用它们以便遵守软件包的管理机制。不要忘了,这些管理规则可以确保你的系统的稳定性和一致性。
注意 使用--force-的影响
若不小心使用 --force- 的选项,可能造成 APT 命令家族拒绝运作的困境。在相依性不足或冲突的情况下,使用部分选项后,仍可安装该等软件包。结果就是相依性不足的不一致系统,APT 命令将拒绝运行任何工作,直到系统恢复一致 (通常包括安装遗失的相依软件包或移除问题软件包)。通常出现以下的消息,安装新版 rdesktop 时忽略其对新版 libc6 的相依性:
#apt full-upgrade
[...]
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
rdesktop: Depends: libc6 (>= 2.5) but 2.3.6.ds1-13etch7 is installed
E: Unmet dependencies. Try using -f.

确信其分析结果的勇敢管理者,可能选择忽略使用 --force- 选项时发生的相依性问题与冲突。结果是,想要继续使用 apt 或 aptitude 的话,他们必须先编辑 /var/lib/dpkg/status 以删除/修改相依性问题或冲突。


2.2软件包移除
使用 dpkg 加上 -r 或 --remove 选项,再加上软件包名称,就可移除该软件包。然而,这种方式的移除并不完整:仍保留所有的配置文件、维护脚本、记录文件 (系统记录档) 及该软件包的其他用户数据。这种方式是停用程序,仍可以相同的配置快速地再安装回来。完全移除该软件包的所有相关文件,应使用 -P 或 --purge 选项,再加上软件包名称。
#dpkg -r debian-cd //移除软件包
#dpkg -P debian-cd //清除软件包及文件
查询 dpkg 的数据库,并检查 .deb 文件
查找内部数据库以获取信息的 dpkg 选项。先给长版的选项再给对应的短版选项 (其参数是一样的) 以 --listfiles 软件包 (或 -L) 为例,列出该软件包安装的文件清单;--search 文件 (或 -S),寻找包括该文件的套性;--status 软件包 (或 -s),显示该软件包的标头;--list (或 -l),显示该系统内软件包清单与安装状态;--contents file.deb (或 -c),列出 Debian 指定软件包清单;--info file.deb (或 -I),列出该软件包的标头。


2.3示例dpkg的各种查询:
$dpkg -L base-passwd 列出该软件包安装的文件清单
/.
/usr
/usr/sbin
/usr/sbin/update-passwd
/usr/share
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/base-passwd
/usr/share/doc-base
/usr/share/doc-base/users-and-groups
………………省略部分输出内容

$ dpkg -S /bin/date //显示文件所属软件包
coreutils: /bin/date
$ dpkg -s coreutils //显示该软件包的标头
Package: coreutils
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 13855
Maintainer: Michael Stone <[email protected]>
Architecture: amd64
Multi-Arch: foreign
Version: 8.23-3
Replaces: mktemp, realpath, timeout
Pre-Depends: libacl1 (>= 2.2.51-8), libattr1 (>= 1:2.4.46-8), libc6 (>= 2.17), libselinux1 (>= 2.1.13)
Conflicts: timeout
Description: GNU core utilities
This package contains the basic file, shell and text manipulation
utilities which are expected to exist on every operating system.
.……省略部分内容

$dpkg -l 'b' //显示该系统内软件包清单与安装状态
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=======================-================-================-====================================================
un backupninja <none> <none> (no description available)
ii backuppc 3.3.0-2 amd64 high-performance, enterprise-grade system for backin
un base <none> <none> (no description available)
un base-config <none> <none> (no description available)
ii base-files 8 amd64 Debian base system miscellaneous files
ii base-passwd 3.5.37 amd64 Debian base system master password and group files
[...]
$ dpkg -c /var/cache/apt/archives/gnupg1.4.18-6amd64.deb //列出 Debian 指定软件包清单
drwxr-xr-x root/root 0 2014-12-04 23:03 ./
drwxr-xr-x root/root 0 2014-12-04 23:03 ./lib/
drwxr-xr-x root/root 0 2014-12-04 23:03 ./lib/udev/
drwxr-xr-x root/root 0 2014-12-04 23:03 ./lib/udev/rules.d/
-rw-r--r-- root/root 2711 2014-12-04 23:03 ./lib/udev/rules.d/60-gnupg.rules
drwxr-xr-x root/root 0 2014-12-04 23:03 ./usr/
drwxr-xr-x root/root 0 2014-12-04 23:03 ./usr/lib/
[...]………………省略部分输出内容

$ dpkg -I /var/cache/apt/archives/gnupg1.4.18-6amd64.deb //列出该软件包的标头
new debian package, version 2.0.
size 1148362 bytes: control archive=3422 bytes.
1264 bytes, 26 lines control
4521 bytes, 65 lines md5sums
479 bytes, 13 lines postinst #!/bin/sh
473 bytes, 13 lines preinst #!/bin/sh
Package: gnupg
Version: 1.4.18-6
Architecture: amd64
Maintainer: Debian GnuPG-Maintainers <[email protected]>
Installed-Size: 4888
Depends: gpgv, libbz2-1.0, libc6 (>= 2.15), libreadline6 (>= 6.0), libusb-0.1-4 (>= 2:0.1.12), zlib1g (>= 1:1.1.4)
Recommends: gnupg-curl, libldap-2.4-2 (>= 2.4.7)
Suggests: gnupg-doc, libpcsclite1, parcimonie, xloadimage | imagemagick | eog
Section: utils
Priority: important
Multi-Arch: foreign
Homepage: http://www.gnupg.org
Description: GNU privacy guard - a free PGP replacement
GnuPG is GNU's tool for secure communication and data storage.
It can be used to encrypt data and to create digital signatures.
It includes an advanced key management facility and is compliant
with the proposed OpenPGP Internet standard as described in RFC 4880.
[...]


2.4 dpkg的日志文件
dpkg 把所有的交易记录存在名为 /var/log/dpkg.log 的日志档。这个日志档的内容颇为详尽且啰唆,记录软件包被 dpkg 处理的每个进程。追踪 dpkg 的每个作为之外,日志档还保留系统发展的记录:可以覆查每个软件包的安装与移除步骤,对于了解最近的变动极有帮助。此外,还记录所有的版本,可以交互检查 changelog.Debian.gz 的内容,查看有问题的软件包或在线的错误报告。
2.5多架构支持特性:
所有的 Debian 包在它们的管控信息中都有一个架构 字段。该字段可包含:“全部“(对与架构无关的包),或者它的目标架构名称(如“amd64”, “armhf”,…)。对于后者,默认情况下,dpkg将只能接受安装与主机架构匹配的软件包,主机架构可通过dpkg --print-architecture来获得。
dpkg的多架构支持允许用户定义可安装于当前系统的“异质架构” 。这可以方便的通过 dpkg --add-architecture完成,如下例。有一相应的 dpkg --remove-architecture 以放弃对异质架构的支持,但仅可用于未余留该架构软件包的情况。
#dpkg --print-architecture //查询当前架构
amd64
#dpkg --print-foreign-architectures //查询兼容架构
#dpkg -i gcc-4.9-base4.9.1-19armhf.deb
dpkg: error processing archive gcc-4.9-base4.9.1-19armhf.deb (--install):
package architecture (armhf) does not match system (amd64)
Errors were encountered while processing:
gcc-4.9-base4.9.1-19armhf.deb
#dpkg --add-architecture armhf //添加架构兼容
#dpkg --add-architecture armel //添加架构兼容
#dpkg --print-foreign-architectures //查询兼容架构
armhf
armel
#dpkg -i gcc-4.9-base4.9.1-19armhf.deb
Selecting previously unselected package gcc-4.9-base:armhf.
(Reading database ... 86425 files and directories currently installed.)
Preparing to unpack gcc-4.9-base4.9.1-19armhf.deb ...
Unpacking gcc-4.9-base:armhf (4.9.1-19) ...
Setting up gcc-4.9-base:armhf (4.9.1-19) ...
#dpkg --remove-architecture armhf
dpkg: error: cannot remove architecture 'armhf' currently in use by the database
#dpkg --remove-architecture armel //移除兼容架构
#dpkg --print-foreign-architectures
armhf


3.1deb资源库
APT需要一个”软件源列表“:文件/etc/apt/sources.list会列出发布 Debian 软件包不同的仓库(或软件源)。接下来APT会从每一个软件源导入所发布的软件包列表。这个过程是通过下载 Packages.xz或使用不同压缩方法的变体(比如Packages.gz或者.bz2) )文件(若是二进制包的仓库)和Sources.xz文件(若是软件包源的仓库),并分析这两个文件内容。如果文件的旧版本已经存在,APT仅下载更新的部分。
cat /etc/apt/sources.list //资源库列表文件
deb cdrom:[Debian GNU/Linux 10.2.0 Buster - Official amd64 DVD Binary-1 20191116-09:57]/ buster contrib main //光(驱)盘资源库
deb file:///debian/ buster contrib main //本地资源库


3.2写入sources.list文件句法:
/etc/apt/sources.list 文件中每个有效的代码行包括对源的描述,由三个被空格分开的部分组成。
第一个区域指示源的类型:
“deb” 表示二进制软件包,
“deb-src”表示源代码包。
第二个区域表示源的基本 URL (结合文件 Packages.gz 中给出的文件名,必须是有效URL的全称):此区域存在于一个 Debian 镜像或其他任何由第三方所建的软件源文档中。这个 URL 可以用 file:// 起始来表示系统里安装了本地仓库,或以 http:// 表示仓库可通过网络服务器来获取,或用 ftp:// 表示软件源在一个 FTP 服务器上。URL 还可以用 起始表示从 cdrom: 开始安装。因基于网络的安装愈来愈流行,这个方法已不那么常用了。
最后这一区域的句法取决于仓库的结构。从最简单的例子开始,你可以很简单地描述一个软件源的子目录 (必须用到结尾处的斜线)(通常用 “./” 表示子目录不存在 - 这个软件源就位于给定的 URL上)。 不过一般来讲,仓库的结构类似于一个 Debian 的镜像, 包括很多分支,每一分支有很多组成部分。通常命名选定的分支(由 “codename” 来命名或是由对应的 “suites” — stable, testing, unstable ),然后命名下面的组成部分(或分区)(从main, contrib 和non-free中选择) 来激活一个典型的 Debian 镜像。
关键词 main, contrib 和 non-free 存档
Debian 根据开发者所选定的许可声明,使用这三部分来区分不同的软件包。Main 收集了完全遵守Debian 免费软件指南的所有软件包。
non-free 文档有所不同,它包括没有( 完全)遵循上述原则,未受约束但仍然被发布的软件。这种文档为使用者提供服务,但不是 Debian 的官方组成部分- 不过 Debian 从来都提倡优先使用自由软件。这类文档的存在代表了一个来自 Richard M. Stallman 的重要问题,也阻碍了自由软件基金会向用户推荐 Debian.
Contrib (贡献)是一类没有一些非自由元件就不能正常运作的开源软件。这类元件会是来自非自由 non-free 部分的软件, 或非自由文件如游戏 ROMs, 控制台BIOS等。Contrib 也包括需要专利元件来编译的自由软件。早先的例子是OpenOffice.org 办公软件套装,曾经需要带专利的 Java 环境来运行。
/etc/apt/sources.list.d/.list 文件 //如果很多个软件包的源库在被引用,将它们分成多个文件会很实用。每一部分存在/etc/apt/sources.list.d/文件名.list
cdrom 条目描述了你所有的CD/DVD光盘。 与其他条目不同,因为一个CD光盘需要插入光驱中,并且每次只能读一张,所以并不总是可用。因此这种仓库管理起来稍有不同,需要加在apt-cdrom 程序中,经常与add 参数一起执行。后者会要求驱动中插入光盘,并会浏览内容,寻找Packages 文件。这些文件会用于更新可用软件包的数据库(此过程由apt update 命令执行)。 自此, 如果某软件包需要光盘,APT 可发出要求插入光驱。


3.3给Stable (稳定版)使用者的仓库(示例)
/etc/apt/sources.list 给 Debian Stable 使用者的文件(其中buster代表Debian10)
#Security updates
deb http://security.debian.org/ buster/updates main contrib non-free
deb-src http://security.debian.org/ buster/updates main contrib non-free

#Debian mirror

#Base repository
deb http://ftp.debian.org/debian buster main contrib non-free
deb-src http://ftp.debian.org/debian buster main contrib non-free

#Stable updates
deb http://ftp.debian.org/debian buster-updates main contrib non-free
deb-src http://ftp.debian.org/debian buster-updates main contrib non-free

#Stable backports
deb http://ftp.debian.org/debian buster-backports main contrib non-free
deb-src http://ftp.debian.org/debian buster-backports main contrib non-free
注释:此文件列出了 与Debian Buster 版本相关软件包的所有来源(此手册写作当前稳定版本)。我们不希望当下一个稳定版本发布时,所有基于它的分支在我们控制范围外被改变,因此决定用“Buster” 而不是用相对应的 “stable““ 稳定” 的别名(stable, stable-updates, stable-backports)来命名。
请注意,当你所需要的软件包版本存在于几个仓库中时,在文件sources.list中所列出的第一个会被使用。因此,非官方来源的包一般在此文件末尾处。


4、aptitude、apt-get和 apt 命令

4.1apt 命令行管理

4.1.1常用子命令:
list - 根据名称列出软件包
search - 搜索软件包描述
show - 显示软件包细节
install - 安装软件包
reinstall - reinstall packages
remove - 移除软件包
autoremove - 卸载所有自动安装且不再使用的软件包
update - 更新可用软件包列表
upgrade - 通过 安装/升级 软件来更新系统
full-upgrade - 通过 卸载/安装/升级 来更新系统
edit-sources - 编辑软件源信息文件
其它命令包括:
apt-get,用于从已验证的源获取软件包和相关信息,并对软件包及其依赖进行安装、升级和删除
apt-cache,用于查询已安装和可安装软件包的可用信息
apt-cdrom,用于将可移除式介质作为软件包的源
apt-config,作为设置配置的一个界面
apt-key,作为管理验证密钥的一个界面
备注 APT 的多架构支持:当 dpkg 已配置为支持异质架构时,APT将会自动检测,并在更新过程中开始下载相应的软件包文件。异质软件包可通过 apt install 软件包: 架构安装。
同时进行卸载和安装
在命令 apt (或 apt-get、或 aptitude) 加入后缀就可以同时安装指定的软件包与移除其他软件包。在 apt install 命令加入 “-” 及希望移除的软件包名称。在 apt remove 命令加入 “+” 及希望安装的软件包名称。
下面的例子展示两种不同方法来安装package1 和卸载package2。
#apt install package1 package2-↵
[...]↵
#apt remove package1+ package2↵
[...]↵
4.1.2技巧 apt --reinstall 和 aptitude reinstall
在软件包中的文件发生移除或更改时,系统有时候可能会受损。恢复这些文件最简单的方法是重装受影响的软件包。不幸的是,包系统会认为后者已安装而拒绝重新安装;为了避免此情况,使用apt和apt-get命令的 --reinstall选项。如下命令会重新安装postfix,即使它已存在:
#apt --reinstall install postfix
aptitude命令行略微不同,但可通过aptitude reinstall postfix获得同样的结果。
该问题不与dpkg同时出现,但管理员极少直接使用它。
如果文件 sources.list 提及了数个发布版本,可以指定要安装软件包的版本。要求特定版本号可以通过 apt install package=version,但以标明其初始发行版本 (Stable, Testing 或者 Unstable)的方式— 通过 apt install package/distribution — 更为推荐。
示例:安装 spamassassin(垃圾邮件过滤) 的 unstable 版本
#apt install spamassassin/unstable
4.1.3 deb 文件的缓存
APT 在 /var/cache/apt/archives/ 目录中保存每个下载的 .deb文件的副本。在频繁更新的情况下,该目录下每个软件包的数个版本可能会占用大量磁盘空间;您应当经常整理它们。可以使用如下两个命令:apt-get clean完全清空整个目录;apt-get autoclean仅移除不会再下载的软件包(因为它们已从 Debian 镜像中消失)和明显无用的软件包(配置参数APT::Clean-Installed可以阻止移除安装中的.deb文件)。注意apt不支持上述命令。
apt-cache 命令
在 APT 的环境,参照 软件包名称 文件是他们在 Debian 镜射站的位置。也就是说,近用数据库软件包时,每次都通过网络读取,极无劾率。所以,APT 在其文件内保存一个复本 (在 /var/lib/apt/lists/) 每次搜索本地的文件即可。同样的,/var/cache/apt/archives/ 保存已经下载的软件包避免在移除后又需要时的重复下载行为。
apt-cache 命令可以做键词软件包搜索 apt-cache search 键词。也能显示软件包标头的可用版本 apt-cache show 软件包名称。这个命令提供软件包说明、其相依性、维护者名称等。apt search、apt show、aptitude search、aptitude show 都以同样方式运作。


4.2 aptitude (是交互程序,可用于终端机的半图形模式)
开始的时候,aptitude 依状态显示所有的软件包 (已安装、未安装、或已安装在不在镜射站 — 其他的区块显示工作、虚拟软件包、与最近才出现在镜射站的添加软件包)。还有其他的查看方法,提供主题式浏览。所有的情况下,aptitude 在屏幕显示各主题与软件包的清单。以树状组织主题,可以用 Enter、[ 与 ] 按键展开与收起枝叶。+ 应用于标示可安装的软件包,- 标示可移除的软件包与 标示可清除的软件包 (这些按键也可用遟主题,对应的行动适用于主题的所有软件包)。u 用于更新可用软件包清单与 Shift+u 准备全系统的更新。g 切换摘要查看要求的改变 (并再次键入 g 纳入此等改变),与 q 离开现在的查看。若您在初始的查看,将关闭 aptitude。
q 退出;退回

  • 安装或升级
  • 卸载
    = 保持当前版本,阻止升级
    : 保持当前版本,不阻止日后升级
    卸载并删除配置文件
    L 请求重新安装软件包
    u 更新可用的软件包列表
    / 执行搜索任务(包名)
    d 显示包依赖关系

说明 aptitude 的记录档
如同 dpkg,aptitude 追踪运行动作存在其记录档内 (/var/log/aptitude)。然而,两个命令分别在不同层次工作,各自的记录档有不同的信息。当 dpkg 记录对各别软件包的一步步运作,aptitude 则记录系统更新之类的高端运作。
小心,记录档只包括 aptitude 工作的摘要。若另个前端 (或即使是 dpkg 自身) 只是偶而用到,则 aptitude 的记录档将只包括工作的部分,所以不能依赖它创建系统的过去。


4.3synaptic(默认Debian10未安装)
synaptic 是 Debian 的软件包图形管理器,在 GTK+/GNOME 的基础上提供清楚有效的图形接口。它以很多的立即可用筛选器提供快速近用添加的软件包、安装软件包、可升级软件包、过时软件包等。经由这些清单浏览,选定对软件包的工作 (安装、升级、移除、清除);不会立即运行此等工作,但把它们放入工作清单。单键按下可运行的工作,接着就可运行。

默认Debian10未安装,按如下方式安装该工具:
apt install synaptic //安装synaptic图形管理器


二、RPM包管理
1、rpm命令管理包
查询/验证软件包选项:
-a, --all 查询/验证所有软件包
-f, --file 查询/验证文件属于的软件包
-g, --group 查询/验证组中的软件包
-p, --package 查询/验证一个软件包
--pkgid query/verify package(s) with package identifier
--hdrid query/verify package(s) with header identifier
--triggeredby query the package(s) triggered by the package
--whatrequires query/verify the package(s) which require a dependency
--whatprovides 查询/验证提供相关依赖的软件包
--nomanifest 不把非软件包文件作为清单处理

查询选项(用 -q 或 --query):
-c, --configfiles 列出所有配置文件
-d, --docfiles 列出所有程序文档
-L, --licensefiles list all license files
--dump 转储基本文件信息
-l, --list 列出软件包中的文件
--queryformat=QUERYFORMAT 使用这种格式打印信息
-s, --state 显示列出文件的状态

验证选项(用 -V 或 --verify):
--nofiledigest 不验证文件摘要
--nofiles 不验证软件包中文件
--nodeps 不验证包依赖
--noscript 不执行验证脚本

安装/升级/擦除选项:
--allfiles 安装全部文件,包含配置文件,否则配置文件会被跳过。
--allmatches 移除所有符合 <package> 的软件包(如果 <package>
被指定未多个软件包,常常会导致错误出现)
--badreloc 对不可重定位的软件包重新分配文件位置
-e, --erase=<package>+ 清除 (卸载) 软件包
--excludedocs 不安装程序文档
--excludepath=<path> 略过以 <path> 开头的文件
--force --replacepkgs --replacefiles 的缩写
-F, --freshen=<packagefile>+ 如果软件包已经安装,升级软件包
-h, --hash 软件包安装的时候列出哈希标记 (和 -v
一起使用效果更好)
--ignorearch 不验证软件包架构
--ignoreos 不验证软件包操作系统
--ignoresize 在安装前不检查磁盘空间
-i, --install 安装软件包
--justdb 更新数据库,但不修改文件系统
--nodeps 不验证软件包依赖
--nofiledigest 不验证文件摘要
--nocontexts 不安装文件的安全上下文
--noorder 不对软件包安装重新排序以满足依赖关系
--noscripts 不执行软件包脚本
--notriggers 不执行本软件包触发的任何脚本
--nocollections 请不要执行任何动作集
--oldpackage 更新到软件包的旧版本(带 --force 自动完成这一功能)
--percent 安装软件包时打印百分比
--prefix=<dir> 如果可重定位,便把软件包重定位到 <dir>
--relocate=<old>=<new> 将文件从 <old> 重定位到 <new>
--replacefiles 忽略软件包之间的冲突的文件
--replacepkgs 如果软件包已经有了,重新安装软件包
--test 不真正安装,只是判断下是否能安装
-U, --upgrade=<packagefile>+ 升级软件包
--reinstall=<packagefile>+ reinstall package(s)

所有 rpm 模式和可执行文件的通用选项:
-D, --define=“MACRO EXPR” 定义值为 EXPR 的 MACRO
--undefine=MACRO undefine MACRO
-E, --eval=“EXPR” 打印 EXPR 的宏展开
--macros=<FILE:…> 从文件 <FILE:...> 读取宏,不使用默认文件
--noplugins don't enable any plugins
--nodigest 不校验软件包的摘要
--nosignature 不验证软件包签名
--rcfile=<FILE:…> 从文件 <FILE:...> 读取宏,不使用默认文件
-r, --root=ROOT 使用 ROOT 作为顶级目录 (default: "/")
--dbpath=DIRECTORY 使用 DIRECTORY 目录中的数据库
--querytags 显示已知的查询标签
--showrc 显示最终的 rpmrc 和宏配置
--quiet 提供更少的详细信息输出
-v, --verbose 提供更多的详细信息输出
--version 打印使用的 rpm 版本号

常用示例:
#rpm -qa //查询所有已安装rpm包
#rpm -qa |grep http //已安装包中过滤目标关键字http包信息
#rpm -ql httpd //列出包httpd安装文件列表
#rpm -qc httpd //列出httpd安装包的配置文件列表
#rpm -qf /etc/ssh/sshdconfig 查询文件来自于于哪个安装包
#rpm -qpl /cos7/Packages/httpd-2.4.6-90.el7.centos.x8664.rpm //查询rpm文件包中文件列表信息
warning: /cos7/Packages/httpd-2.4.6-90.el7.centos.x8664.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
………………省略部分输出内容


2、yum管理软件包
2.1yum命令使用指南
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 向系统中安装一个或多个软件包
langavailable Check available languages
langinfo List languages information
langinstall Install appropriate language packs for a language
langlist List installed languages
langremove Remove installed language packs for a language
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 设置任意配置和源选项
--bugfix Include bugfix relevant packages, in updates
--security Include security relevant packages, in updates
--advisory=ADVS, --advisories=ADVS
Include packages needed to fix the given advisory, in
updates
--bzs=BZS Include packages needed to fix the given BZ, in
updates
--cves=CVES Include packages needed to fix the given CVE, in
updates
--sec-severity=SEVS, --secseverity=SEVS
Include security relevant packages matching the
severity, in updates


2.2yum资源库编辑
2.2.1 外部资源网(Internet):
cat /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

2.2.2 本地资源库:
需要将/etc/yum.repos.d/CentOS-Base.repo 删除或重命名未备份文件
/etc/yum.repos.d/CentOS-Base.repo.bak,避免影响本地库文件列表读取。

cat /etc/yum.repos.d/CentOS-Media.repo
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///cos7/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
2.2.3 验证
#yum clean all //清楚库缓存记录
#yum repolist //查询资源库列表
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
repo id repo name status
!c7-media CentOS-7 - Media 10,097
repolist: 10,097

2.2.4 yum常用操作示例
#yum list |grep http //查询http关键字对应包列表(包含已安装和资源库未安装的包信息)
#yum install httpd //安装httpd包及依赖包
#yum groups list //查询分组列表(已安装、未安装组信息)
#yum groups install DNS\ Name\ Server //安装DNS服务组(操作过程可以tab键查询和补全选项)

注:部分内容参考了Debian官网《Debian管理员手册》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章