我最近了解到使用来获取任何给定软件包的源代码是多么容易,apt-get source
这样我就可以获取源代码,进行更改并安装自己的任何软件包的修改版本。这很棒!
直到今天,我还假设每个程序包都有其自己的源代码,并且不同的程序包将具有不同的源代码。
但是,现在我发现不同的程序包可以具有相同的源代码。以下是一个示例:
以下4个软件包似乎具有相同的源代码:
gir1.2-mutter-4
libmutter-4-0
mutter
mutter-common
所有这四个都安装在我的Ubuntu 19.04计算机上。对于和包,这样做apt-get source gir1.2-mutter-4
的结果与完全相同。apt-get source libmutter-4-0
mutter
mutter-common
这是我检查的方式:
mkdir a
cd a
apt-get source gir1.2-mutter-4
cd ..
mkdir b
cd b
apt-get source libmutter-4-0
cd ..
diff -r a b
上面最后一行的递归diff没有给出任何输出,表明目录具有相同的内容。
现在我的问题是:不同的程序包如何具有相同的源代码?
假设这是有意的,而不是某种错误,那么程序包之间有什么区别?我如何看待这种区别?
程序包的源代码配置和编译方式是否可能不同,例如,不同程序包中包含代码的不同部分?如果是这样,我在哪里可以找到有关如何配置每个程序包的信息?
编辑:忘记添加,如果您想测试一下,要使其apt-get source
正常工作,您可能首先需要使用启用它,software-properties-gtk
如下所述:https : //askubuntu.com/a/857433/874649
编辑2:感谢您的出色回答!我还发现这对https://askubuntu.com/a/246721/874649很有帮助-有关非常有用的apt-get build-dep
和dpkg-buildpackage
命令。修改源程序包的源代码后,dpkg-buildpackage -us -uc
可用于构建新的.deb文件,这些文件可用于安装修改后的程序。
您会将构建的二进制软件包与构建软件包的基础源代码/软件包混淆了。
您所指的软件包都是基于相同的源代码/软件包构建的mutter
。您可以通过转到packages.ubuntu.com
,搜索您正在查看的包,然后引用它所指的“源包”来轻松找到。在这种情况下是mutter
:
但是,从那里,我们可以在Launchpad页面上查看Mutter的源软件包,并查看它是否构建了许多二进制软件包(已构建用于编译的源代码等):
这些描述描述了每个软件包包含/安装的内容。重点关注您指示的4个软件包,并使用以下描述:
gir1.2-mutter-4
-Mutter的GObject内省数据(由gir
GObject和GObject用作Mutter和GObject交互的库/数据)libmutter-4-0
-Mutter窗口管理器的基础库。(通常用于插件开发,Mutter集成的开发和编译等)mutter
-使用GNOME的窗口管理器库的实际Mutter窗口管理器(这就是为什么需要GObject的原因)mutter-common
-Mutter的共享文件-通常是默认配置选项或从源程序包构建的所有程序包共有的项目。您在软件包列表中看到的是源自相同源代码的已构建软件包-每个软件包都是在构建/编译时间之后安装的不同项目,并且用于不同用途。您可以通过下载各个软件包,然后使用p7zip或Ubuntu中的内置Archive Manager访问它们来查看软件包本身的内容,并查看每个软件包包含该方式的不同之处。也就是说,它们都源于相同的源代码-它们只包含要安装到系统中的不同项目。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句