我假设通过安装的所有应用程序apt-get都是开源的;但是对于那些以这种方式可用的应用程序,我在哪里可以获得这些应用程序的源代码并更新它们?
我有几个我经常使用的应用程序不再被积极开发,我想添加功能。我从哪里获得更新这些应用程序的权利?
在这种情况下,我指的是helanzb包
我最近了解到获取任何给定包的源代码是多么容易,apt-get source这样我就可以获取源代码、进行更改并安装我自己的任何包的修改版本。这很棒!
直到今天,我一直假设每个包都有自己的源代码,不同的包会有不同的源代码。
但是,现在我刚刚发现不同的包可以具有相同的源代码。下面是一个例子:
以下 4 个包似乎具有相同的源代码:
gir1.2-mutter-4
libmutter-4-0
mutter
mutter-common
Run Code Online (Sandbox Code Playgroud)
所有四个都安装在我的 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
Run Code Online (Sandbox Code Playgroud)
上面最后一行的递归差异没有给出任何输出,表明目录具有相同的内容。
现在我的问题是:不同的包如何具有相同的源代码?
假设这是故意的而不是某种错误,包之间有什么区别,我如何才能看到这种区别?
可能是这些包在配置和编译源代码的方式上有所不同,例如代码的不同部分包含在不同的包中吗?如果是这样,我在哪里可以找到有关如何配置每个包的信息?
编辑:忘了补充一点,如果你想测试这个,为了使其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可用于构建可用于安装修改后的程序的新 …