我通常使用以下方法安装软件包:
- 来自 Ubuntu 存储库:
sudo apt install commandName
- 从 PPA:我必须添加 PPA 然后运行:
sudo apt install commandName
- 直接从 deb 文件获取(例如从 github 下载,例如 pandoc):
sudo apt install /path/to/packageName
- 使用 Snap。
- 使用 AppImages
- 使用 flatpak
有时,我需要那些信息,即我使用了哪种方法来安装给定的命令/包。
Ubuntu 中是否有一个命令,给定一个命令名称,它会返回该信息?
答案1
Ubuntu 中是否有一个命令,给定一个命令名称,它会返回该信息?
没有。你需要做一些调查。首先,该type
命令会透露有关命令性质的信息:
type <command>
此命令将指示它是否是 shell 内置文件、别名,以及是否是可执行文件,是否已散列,即可快速检索的索引(这表示您在会话中至少运行过一次该命令),或者二进制文件位于何处。
可执行文件的安装位置已经暗示了软件包的安装方式。该命令which
显示了其位置:
which <command>
- 使用常规 APT 系统安装的软件包的可执行文件(即来自 Ubuntu 软件存储库、您添加的 PPA 或下载的
.deb
安装文件)通常会安装在/usr/bin
或中/bin
。使用命令dpkg -S filename-search-pattern
找出哪个软件包安装了该文件 (来源)。 - Snap 安装的可执行文件显示在添加到的专用目录中
PATH
,即/snap/bin
。通过在输出中找到它来确认这是一个 snap 包snap list
。 - Flatpak 不会在 PATH 中公开任何可执行文件。但是,您可以从 的输出中判断软件包是否以这种方式安装
flatpak list --app
。 - 可执行 AppImage 可以放在任何地方。因此没有通用方法来识别它们的来源。不过,通常情况下,它们不会被重命名,因此可以通过它们的扩展名轻松识别
.AppImage
。
如果您的软件包是作为 安装的.deb
,您可以进一步区分以下输出:
apt policy <package>
如果软件包是从软件源安装的,则输出中的 URL 将直接提示软件包的来源。如果没有 URL,则表示软件包是从本地下载的安装的.deb
。