有些时候,我们不得不处理别人用过的系统,或者是一台新安装的系统。因为安全和其它原因,系统处于最小化安装状态或者选择性安装软件包。一些常用的工具命令并没有安装。很多人的方式(包括之前的我)通过搜索引擎进行搜索答案。这样的方式效率其实并不高。我之前的博文LINUX下借助YUM和RPM教你正确寻找并安装软件的姿势 其实并不完整。接下来,我重新谈一下完整的方法。

以下方法基于CENTOS(RHEL)系统

假设我们知道rz这个命令的用法,但系统并没有安装。这台服务器可以连接互联网或拥有私有仓库。我需要通过YUM进行查找(常用工具或软件包基本都在官方或第三方镜像源BASE,某些工具或软件需要其他第三方源)

$ yum provides rz     
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * elrepo: mirrors.tuna.tsinghua.edu.cn
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
lrzsz-0.12.20-36.el7.x86_64 : The lrz and lsz modem communications programs
源    :base
匹配来源:
文件名    :/usr/bin/rz

lrzsz-0.12.20-36.el7.x86_64 : The lrz and lsz modem communications programs
源    :@base
匹配来源:
文件名    :/usr/bin/rz

该命令可以查找某工具或命令位于哪个包(当前为lrzsz) 并提供了包的仓库的地址(BASE库 -阿里云CENTOS镜像)并提供命令位置(安装位置和是否安装没有直接关联)

有些时候,基于系统的基础工具被打在一个包内,你可能并不知道这个包名,同样的方法也可以查找,比如netstat

 yum provides netstat   
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * elrepo: mirrors.tuna.tsinghua.edu.cn
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
net-tools-2.0-0.17.20131004git.el7.x86_64 : Basic networking tools
源    :installed
匹配来源:
文件名    :/usr/bin/netstat

可见,netstat命令是基础网络工具,并被封装在net-tools包内

通过YUM INSTLL 安装后,你就可以通过RPM描述查找包内其它工具

 rpm -qi net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.17.20131004git.el7
Architecture: x86_64
Install Date: 2016年01月30日 星期六 18时18分27秒
Group       : System Environment/Base
Size        : 938653
License     : GPLv2+
Signature   : RSA/SHA256, 2014年07月04日 星期五 11时56分18秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : net-tools-2.0-0.17.20131004git.el7.src.rpm
Build Date  : 2014年06月10日 星期二 12时15分04秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem 
Vendor      : CentOS
URL         : http://sourceforge.net/projects/net-tools/
Summary     : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.

描述内说明这个包还包含了ifconfig和route等命令。描述就是一个概况,想要详细看看包的具体内容,可以通过如下方法:

╰$ rpm -ql net-tools
/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-diag
/sbin/mii-tool
/sbin/nameif
/sbin/plipconfig
/sbin/route
/sbin/slattach
/usr/lib/systemd/system/arp-ethers.service
/usr/share/doc/net-tools-2.0
/usr/share/doc/net-tools-2.0/COPYING
/usr/share/locale/cs/LC_MESSAGES/net-tools.mo
...

我省略了部分输出,即很多man文件

描述其实很有用,比如在RHEL(centos6)以上,ntp包已经不含ntptrace命令了。而是在ntp-perl包中

$ rpm -qi ntp
Name        : ntp
Version     : 4.2.6p5
Release     : 22.el7.centos.2
Architecture: x86_64
Install Date: 2019年04月01日 星期一 14时58分16秒
Group       : System Environment/Daemons
Size        : 1434261
License     : (MIT and BSD and BSD with advertising) and GPLv2
Signature   : RSA/SHA256, 2016年05月31日 星期二 19时37分00秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : ntp-4.2.6p5-22.el7.centos.2.src.rpm
Build Date  : 2016年05月31日 星期二 18时29分03秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem 
Vendor      : CentOS
URL         : http://www.ntp.org
Summary     : The NTP daemon and utilities
Description :
The Network Time Protocol (NTP) is used to synchronize a computer's
time with another reference time source. This package includes ntpd
(a daemon which continuously adjusts system time) and utilities used
to query and configure the ntpd daemon.

Perl scripts ntp-wait and ntptrace are in the ntp-perl package,
ntpdate is in the ntpdate package and sntp is in the sntp package.
The documentation is in the ntp-doc package.

当然,RPM检索包的前期是必须将软件包安装在本地,否则你会看到

╰$ rpm -ql ntp-perl
未安装软件包 ntp-perl

而YUM的前提是你的YUM源中拥有这个软件包

$ yum provides ntptrace
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * elrepo: mirrors.tuna.tsinghua.edu.cn
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
ntp-perl-4.2.6p5-28.el7.centos.noarch : NTP utilities written in Perl
源    :base
匹配来源:
文件名    :/usr/sbin/ntptrace