使用sudo apt-get install,为什么没有源代码?

使用sudo apt-get install,为什么没有源代码?

我试图安装一个机器人操作系统 (ROS) 的软件包。然后我直接输入sudo apt-get install <package>

安装后,我看到文件夹中的文件列表/opt/share,这些都是我想要的包。

但是如果我进入src,源代码(.cpp 文件)就不存在。

如果我进入开发人员的 github 页面,我可以看到源代码,但是为什么不使用源代码来安装包?如何下载源代码并使用apt-get install命令安装包?

答案1

默认情况下apt-get install不下载软件包的源代码。有一个特定apt-get选项可以做到这一点,即source

man apt-get

source source 使 apt-get 获取源包。APT 将检查可用的包以决定获取哪个源包。然后,它将查找并下载该源包的最新可用版本到当前目录中,同时遵循默认版本(使用选项 APT::Default-Release、-t 选项或使用 pkg/release 语法的每个包设置,如果可能)。

源包通过 sources.list(5) 文件中的 deb-src 行与二进制包分开跟踪。这意味着您需要为每个要从中获取源的存储库添加这样一行;否则您可能会获得错误的(太旧/太新)源版本或根本没有。

因此,将某个东西的源包下载到当前目录的语法是(不需要是root):

apt-get source <package_name>

还请注意,正如man页面所述,您需要为所有想要跟踪源包的deb-src常规存储库启用存储库。最简单的方法是将以下内容添加到原始存储库的初始字符串中:deb-srcdeb

deb http://archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted

另一方面,您可能已经检查了/usr/src所有内核源的指定位置的目录。

答案2

@heemayl 的答案告诉你如何获取源代码,但如果你想知道

为什么不使用源代码来安装该包?

这是因为 Ubunutu 不从源代码构建包,而是下载预编译的二进制文件。

然而,像 Gentoo Linux 这样的发行版会下载源代码并在本地构建包。

相关内容