一 系统环境
[root@db01 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@db01 ~]# uname -a
Linux db01 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
二 问题描述
当想要使用新的命令但系统没有,也不知道该命令属于哪个软件大礼包时,就需要找到该命令的来源。
三 解决方案
此处以mkpasswd命令为例。使用该命令可以随机生成9位的由大小写字母、数字和特殊字符组成的密码字符串。
一般而言,我们会先查看该命令与其对应的软件包是否一致。
[root@m01 /]# rpm -qa mkpasswd
发现没有任何结果输出,要么是系统没有该软件包,要么mkpasswd命令已经存在但包含该命令的软件包名称并不是mkpasswd。
接下来,我们应该查看该命令对应的软件包是什么。
3.1 方法一
1)查找命令的绝对路径。下面是3种查找方法。
使用这三个命令,可以找到命令的二进制文件的绝对路径。
[root@m01 /]# type mkpasswd
mkpasswd is hashed (/usr/bin/mkpasswd)
[root@m01 /]# which mkpasswd
/usr/bin/mkpasswd
[root@m01 /]# whereis mkpasswd
mkpasswd: /usr/bin/mkpasswd /usr/share/man/man1/mkpasswd.1.gz
2)在找到/usr/bin/mkpasswd是mkpasswd命令的绝对路径后,进一步查询它属于哪个软件大礼包。
[root@m01 /]# rpm -qf /usr/bin/mkpasswd
expect-5.45-14.el7_1.x86_64
可以看到mkpasswd命令属于expect软件包下的命令,如果想要安装mkpasswd命令,就需要安装expect软件包。
注意,此处rpm -qf后面跟的命令必须以绝对路径方式展现,否则会报错(找不到该命令)。
3)最后用yum安装即可
[root@m01 /]# yum install -y expect
知道软件包名称后,可以通过命令得知该软件包中包含的命令(文件)。
[root@m01 /]# rpm -ql expect
/usr/bin/autoexpect
/usr/bin/dislocate
/usr/bin/expect
/usr/bin/ftp-rfc
/usr/bin/kibitz
/usr/bin/lpunlock
/usr/bin/mkpasswd
/usr/bin/passmass
/usr/bin/rftp
/usr/bin/rlogin-cwd
/usr/bin/timed-read
/usr/bin/timed-run
/usr/bin/unbuffer
/usr/bin/weather
/usr/bin/xkibitz
/usr/lib64/libexpect.so
/usr/lib64/libexpect5.45.so
/usr/lib64/tcl8.5/expect5.45
/usr/lib64/tcl8.5/expect5.45/pkgIndex.tcl
/usr/share/doc/expect-5.45
/usr/share/doc/expect-5.45/FAQ
/usr/share/doc/expect-5.45/HISTORY
/usr/share/doc/expect-5.45/NEWS
/usr/share/doc/expect-5.45/README
/usr/share/man/man1/autoexpect.1.gz
/usr/share/man/man1/dislocate.1.gz
/usr/share/man/man1/expect.1.gz
/usr/share/man/man1/kibitz.1.gz
/usr/share/man/man1/mkpasswd.1.gz
/usr/share/man/man1/passmass.1.gz
/usr/share/man/man1/tknewsbiff.1.gz
/usr/share/man/man1/unbuffer.1.gz
/usr/share/man/man1/xkibitz.1.gz
3.2 方法二
以查找sar命令软件包为例
1)查看属于哪个软件大礼包
sar命令属于 sysstat软件包下的二进制文件。
[root@m01 ~]# yum provides sar
sysstat-10.1.5-19.el7.x86_64 : Collection of performance monitoring tools for Linux
Repo : @base
Matched from:
Filename : /usr/bin/sar
2)sar命令属于sysstat-10.1.5-19.el7.x86_64软件包
因此安装命令sysstat即可。
yum install -y sysstat