![Ubuntu 软件包是如何构成的?](https://linux22.com/image/866137/Ubuntu%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%98%AF%E5%A6%82%E4%BD%95%E6%9E%84%E6%88%90%E7%9A%84%EF%BC%9F.png)
当我在 Ubuntu 中下载软件包时,它会在我的系统上安装哪些文件以及安装在哪里?我只是对软件包的总体结构感到好奇(我搜索了一下,似乎没有人在这里问过这个问题)。显然,不同软件包之间会有所不同,但我猜一定有一些“标准”指南需要遵循?
另外,软件中心中的软件包是否与通过 apt-get 提供的软件包相同?如果不是,我如何查看 apt-get 中有哪些软件包可用以及它们的作用?
答案1
安装软件包后,您可以查看该软件包在系统上安装了哪些文件。您可以这样做:
使用图形化突触包管理器:
安装 synaptic(默认情况下不安装)。使用 apt-get install synaptic,或通过软件中心安装。我更喜欢它而不是软件中心,但 YMMV。
查找相关包(尝试在搜索栏中输入名称或关键字)
右键单击已安装的软件包(软件包旁边的绿色方块),
选择“属性”
点击“已安装的文件”选项卡
使用命令行工具(参见这个问题)
- (一次)安装
apt-file
:sudo apt-get install apt-file - (一次)apt-file 更新
- (针对任何软件包)apt-file 列表
- (一次)安装
是的,软件中心的软件包有(编辑:大部分)与 apt-get 中的相同。ubuntu 获取软件的存储库配置在一个公共位置(系统设置 -> 软件和更新)。apt-get、synaptic、Ubuntu 软件中心等... 都使用该系统。
编辑:
dpkg
子系统实际上负责安装和删除软件包。Synaptic、软件中心和 apt-get 都使用它来实际执行操作。这意味着这三种方法都是查看已安装软件包的同一组数据。唯一的警告是:软件中心中可能包含需要付费的应用程序,而 Synaptic 和 apt-get 无法安装这些软件包,因为它们没有付费机制。因此,软件中心中有一些应用程序可用,而 Synaptic 或 apt-get 无法提供。我相信(但不能 100% 肯定)
dpkg
付费后,软件中心仍会使用后台程序来安装这些软件包,这意味着 apt 工具和 Synaptic 会在那时看到它们。为清楚起见,当然,使用 root 权限可以以任何方式修改系统,包括手动安装 .deb 软件包文件中未包含的软件。
dpkg
以这种方式安装在系统外部的软件不会被我提到的任何软件包管理工具所看到。
答案2
我建议dpkg
从命令行 (shell) 使用。它的好处是它已经安装在您的系统上,因为 apt-get 只是围绕 dpkg 构建的扩展。apt-get 负责检查可用软件包、检查更新、下载软件包,但 dpkg 才是真正处理软件包安装、删除等操作的命令。
为了获取所有已安装软件包的列表,您可以运行dpkg -l
。为了列出给定软件包中的所有文件,您可以运行dpkg -L <pkg_name>
,例如:
dpkg -L zerofree
/.
/usr
/usr/share
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/zerofree.8.gz
/usr/share/doc
/usr/share/doc/zerofree
/usr/share/doc/zerofree/copyright
/usr/share/doc/zerofree/changelog.Debian.gz
/usr/sbin
正如 @stochastic 所解释的那样,无论您使用 GUI 还是命令行工具,系统上的软件包来源都是相同的。实际的配置文件位于 和/etc/apt/sources.list
中/etc/apt/sources.list.d/*
。
请注意,dpkg 不了解在线存储库,它可以处理系统上已安装的软件包或您手动下载的软件包(.deb)。