Ubuntu:他们对原版资源做了什么?

use*_*210 12 linux package-management ubuntu

如果我错了,请纠正我

据我所知,像 Debian/Ubuntu/Fedora 这样的发行版通常会在创建包之前修改 vanilla 源代码。这些变化背后的原因是什么?是不是原来的源码有问题?如何获取更改列表以及对特定包所做更改的原因?

谢谢您的帮助!

lio*_*ori 18

apt-get source package
Run Code Online (Sandbox Code Playgroud)

会给你两个或三个文件:“原始”tarball(有时被修改,但很少......唯一的变化通常是文件名)——命名为 *.orig.tar.gz,debian 以 *.diff 的形式变化.gz 文件和一些元数据。有时 .diff.gz 文件丢失:这意味着该软件包仅针对 debian/ubuntu 构建,以处理一些非常特定的发行版工作……例如dak管理 debian 存档上传。然后所有代码都在原始 tarball 中。

原因是多方面的:修复软件错误(当上游不想这样做时),使软件适应 debian(调整文件路径)。Debian 希望所有软件包都符合FileSystem Hierarchy Standard,这是一个非常常见的调整。

由于打包问题,原始 tarball 有时与上游创建的不同。我记得看到一个程序分布在几个 tarball 中,而它们只生成一个可执行文件——debian 维护者决定制作自己的“原始”tarball,其中包含 tarred 上游 tarball。另一个原因是有时 debian 维护者决定将一些二进制文件添加到包中。很难将二进制文件放入 .diff.gz 文件中,因此修改了原始 tarball(通常在包的文档中对此进行了明确描述)。

有时(很少)许可是问题所在。碰巧上游不理解或想要理解由于某些许可证的影响。Debian 希望解决所有的许可问题,所以碰巧 debian 补丁做了一些特定的事情,或者原始 tarball 从非法分发的文件中剥离。

也会发生某些内容获得许可的情况,因此您可以使用它但不能分发。通常(fe for msttcorefonts, flashplugin-nonfree)debian 包只是某种包的安装程序,包内没有原始内容。

pinepackage 也很有趣,因为许可证禁止分发编译的表单。因此没有pine二进制包,但pine有源包。可以使用上面的命令下载,自己编译成debian包。