ble*_*ft2 6 package-management apt dpkg
当我使用 安装了一个软件包时apt,有没有办法找出我可以通过哪个命令运行已安装的程序?
例如,该包httpcode不可用httpcode,并且包描述 ( apt show httpcode) 没有解释如何运行它。我怎么会发现它是从命令行运行的hc?
我发现有两个稍微有点hacky的解决方法:
假设程序是由安装在默认情况下usr/bin,我跑到ls -ltc | head -n 10那里找recenlty感动文件,而事实上我发现hc。
与 1 类似,dpkg -L httpcode返回通过安装包创建的文件列表,其中还列出了/usr/bin/hc.
对于这个问题,是否有更好的解决方案,而不取决于程序可能存储在磁盘上的位置的直觉?
我还发现它man httpcode确实打开了程序的手册页,即使我使用包名作为参数调用它。这是否总是有效(如果程序提供联机帮助页)?
N0r*_*ert 11
文件的位置(可执行文件、手册页和其他内容)通常应符合文件系统层次结构标准。
我个人用以下四种方法之一解决了这个问题:
众所周知,可执行文件放置在$PATH环境变量中声明的目录中:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
因此,您可以列出所有包文件dpkg --list(man dpkg有关详细信息,请参阅)并在/bin、/sbin、/usr/bin、/usr/sbin、/usr/games目录中查找文件。所以我们可以使用以下命令:
Run Code Online (Sandbox Code Playgroud)$ dpkg -L httpcode | grep -E "/bin/|/sbin/|/usr/games/" /usr/bin/hc
所以我们可以看到/usr/bin/hc属于这个包。
列出所有手册页:
Run Code Online (Sandbox Code Playgroud)$ dpkg -L httpcode | grep "/man/" /usr/share/man/man1 /usr/share/man/man1/hc.1.gz
所以我们可以看到我们可以使用man hc.
对于带有 GUI 的应用程序,我运行搜索*.desktop文件。
Run Code Online (Sandbox Code Playgroud)$ dpkg -L httpcode | grep ".desktop" $
在这种特殊情况下,它不会返回任何内容。
对于一些复杂的专有(或打包不良)的东西,此方法转换为读取文件中的Exec变量*.desktop- 这里 Telegram 是一个示例:
Run Code Online (Sandbox Code Playgroud)$ dpkg -L telegram | grep ".desktop" /usr/share/applications/telegram.desktop $ grep Exec $(dpkg -L telegram | grep ".desktop") Exec=/opt/telegram/Telegram -- %u
关于Exec见桌面条目规范。
对于未安装的软件包,可以访问https://packages.ubuntu.com并在此处使用搜索软件包目录(对于所有版本或选定版本),然后单击表右栏中的文件列表链接:
一个将获得文件列表:
此列表可以手动解释或使用浏览器中的搜索栏进行解释。
| 归档时间: |
|
| 查看次数: |
1664 次 |
| 最近记录: |