内容:如果获取命令所属的软件包及如何找到命令的完整手册。
此文并无任何技术含量,只是有些时候:
- 我们不知道去哪里找到一个命令的完整手册。很显然这里不是要介绍 man 命令,man 命令显示的只是命令的速记手册,而且有些并没有非常详细的解释命令。
- 当出现command no found或库文件不存在的时候,我们不知道这个命令或库属于哪个软件包,不知道该安装什么。
要想找到命令的完整手册,肯定是官方的文档。本文的主要目的:
- 如何找到命令所属的软件包。
- 告诉大家如何找到命令的官方文档。
下面分别以 Debian 和 CentOS 为例:
在「Debain及其衍生版」中
使用apt-file命令
以 Debian 为例,比如我要查找ifconfig命令所属的软件包。
这里要用到另外一个软件包apt-file,先安装:
#!/bin/sh # 安装 apt-get install apt-file # 更新。视情况而定,跳过也可以。如果有必要更新 apt-file 会提示你 apt-get upadte # 此命令用于生成软件包中文件缓存列表。 apt-file upate
然后,执行查找。查找 ifconfig 所属的软件包:
#!/bin/sh apt-file search ifconfig | grep -E '/ifconfig$' # 输出:net-tools: /sbin/ifconfig # 结论:这个命令属于net-tools软件包。 # # apt-file update 会生成缓存,缓存的内容是所有软件包中的所有命令的索引,类似如下内容: # ...... # adwaita-icon-theme: /usr/share/icons/Adwaita/48x48/actions/edit-find-replace.png # adwaita-icon-theme: /usr/share/icons/Adwaita/48x48/actions/edit-find.png # adwaita-icon-theme: /usr/share/icons/Adwaita/scalable/actions/edit-find-symbolic.svg # adwaita-icon-theme: /usr/share/icons/Adwaita/scalable/actions/find-location-symbolic.svg # aegis: /usr/bin/aefind # aegis: /usr/share/man/man1/aefind.1.gz # aeskeyfind: /usr/bin/aeskeyfind # aeskeyfind: /usr/share/doc/aeskeyfind/README # aeskeyfind: /usr/share/doc/aeskeyfind/changelog.Debian.gz # aeskeyfind: /usr/share/doc/aeskeyfind/copyright # aeskeyfind: /usr/share/man/man1/aeskeyfind.1.gz # afterstep-data: /usr/share/afterstep/applications/find.desktop # agtl: /usr/share/pyshared/advancedcaching/coordfinder.py # aide-common: /usr/share/aide/config/aide/aide.conf.d/31_aide_findutils # allegro4-doc: /usr/share/man/man3/al_findclose.3alleg4.gz # allegro4-doc: /usr/share/man/man3/al_findfirst.3alleg4.gz # ...... # # # 当你执行 apt-file search aeskeyfind 时,会匹配到如下内容: # aeskeyfind: /usr/bin/aeskeyfind # aeskeyfind: /usr/share/doc/aeskeyfind/README # aeskeyfind: /usr/share/doc/aeskeyfind/changelog.Debian.gz # aeskeyfind: /usr/share/doc/aeskeyfind/copyright # aeskeyfind: /usr/share/man/man1/aeskeyfind.1.gz # # # 所以你需要 grep 来过滤。 # # # 命令解释:apt-file search ifconfig ,用于搜索包含 ifconfig 这个字符串的所有文件或文件夹(文件或目录都是绝对路径的,如上所示),而 # grep -E '/ifconfig$' 用于缩小范围。因为是绝对路径,所以我们想要的 ifconfig 前面一定会有一个斜线,并且我们想要搜索的一定是以 ifconfig 为结尾,所以有个$符号。 #
在「CentOS」或「Red Hat」中
下面以 CentOS 为例子,比如我要查找 ifconfig 命令所属的软件包:
1). CentOS 下比较直接,用 yum 命令就可以了:
#!/bin/sh yum provides ifconfig # 输出: # # Loaded plugins: fastestmirror # Loading mirror speeds from cached hostfile # * base: mirrors.163.com # * extras: mirrors.163.com # * updates: mirrors.163.com # net-tools-1.60-110.el6_2.x86_64 : Basic networking tools # Repo : base # Matched from: # Filename : /sbin/ifconfig # # net-tools-1.60-110.el6_2.x86_64 : Basic networking tools # Repo : installed # Matched from: # Filename : /sbin/ifconfig # #结论: 属于net-tools-1.60-110.el6_2.x86_64 软件包
2). 获取软件包的详细信息:
#!/bin/sh yum info net-tools-1.60-110.el6_2.x86_64 # 输出 # # Loaded plugins: fastestmirror # Loading mirror speeds from cached hostfile # * base: mirrors.163.com # * extras: mirrors.163.com # * updates: mirrors.163.com # Installed Packages # Name : net-tools # Arch : x86_64 # Version : 1.60 # Release : 110.el6_2 # Size : 760 k # Repo : installed # From repo : anaconda-CentOS-201605220104.x86_64 # Summary : Basic networking tools # URL : http://net-tools.berlios.de/ # License : GPL+ # 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. # # 看见URL了么,那就是官网地址。http://net-tools.berlios.de/