不同的软件包如何具有相同的源代码?

埃里亚斯

我最近了解到使用来获取任何给定软件包的源代码是多么容易,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-0muttermutter-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-depdpkg-buildpackage命令。修改源程序包的源代码后,dpkg-buildpackage -us -uc可用于构建新的.deb文件,这些文件可用于安装修改后的程序。

托马斯·沃德

您会将构建的二进制软件包构建软件包的基础源代码/软件包混淆

您所指的软件包都是基于相同的源代码/软件包构建的mutter您可以通过转到packages.ubuntu.com,搜索您正在查看的包,然后引用它所指的“源包”来轻松找到在这种情况下是mutter

在此处输入图片说明

但是,从那里,我们可以在Launchpad页面上查看Mutter的源软件包,并查看它是否构建了许多二进制软件包(已构建用于编译的源代码等):

在此处输入图片说明

这些描述描述了每个软件包包含/安装的内容。重点关注您指示的4个软件包,并使用以下描述:

  • gir1.2-mutter-4-Mutter的GObject内省数据(由girGObject和GObject用作Mutter和GObject交互的库/数据)
  • libmutter-4-0-Mutter窗口管理器的基础库。(通常用于插件开发,Mutter集成的开发和编译等)
  • mutter -使用GNOME的窗口管理器库的实际Mutter窗口管理器(这就是为什么需要GObject的原因)
  • mutter-common-Mutter的共享文件-通常是默认配置选项或从源程序包构建的所有程序包共有的项目

您在软件包列表中看到的是源自相同源代码的已构建软件包-每个软件包都是在构建/编译时间之后安装的不同项目,并且用于不同用途。您可以通过下载各个软件包,然后使用p7zip或Ubuntu中的内置Archive Manager访问它们来查看软件包本身的内容,并查看每个软件包包含该方式的不同之处。也就是说,它们都源于相同的源代码-它们只包含要安装到系统中的不同项目

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何知道Debian中软件包的源代码库?

如何从源代码更新Ubuntu软件包?

如何下载Debian软件包的源代码?

如何从源代码编译Debian软件包?

如何从源代码构建我所有已安装的软件包?

如何使用Pulp Gekko&Scipy软件包针对线性优化问题修复具有不同结果的代码?

如何修改Buildroot软件包的源代码以进行软件包开发?

tar软件包的完全相同的内容具有不同的校验和

具有相同名称空间的不同Composer软件包

通过apt-get安装Linux软件包与从源代码构建和编译有何不同?

具有相同功能名称的软件包

osgi捆绑包可以从具有相同依赖项的不同版本中导入软件包吗?

如何使用具有相同名称的setuptools软件包和ext_modules?

有没有办法在软件包的源代码中获取Cabal软件包的版本?

在与Java源代码相同的软件包中包含单元测试

源代码中的剂量软件包名称,应与jar文件名相同

导入具有不同名称的软件包的类型

我应该如何打包我的源代码,以便Launchpad为所有版本的Ubuntu构建我的软件包?

如何创建包含源代码的软件包,这些软件包将在安装过程中进行编译

查找项目中所需的所有PEAR软件包(源代码)

在没有源代码的情况下制作RPM软件包

如何从源代码手动安装Go软件包

如何查看 pip(Python 的软件包安装程序)源代码?

如何用从源代码编译代替Nginx的软件包安装?

2017年如何在fedora上从源代码安装软件包?

如何通过NuGet软件包共享源代码以在.NET Core项目中使用

如果我从源代码构建软件包,如何完全卸载或删除?

如何在非Ubuntu计算机上下载Ubuntu软件包的源代码?

从源代码构建缺少的Debian软件包依赖关系?