我怎样才能私下发布一个覆盖任何正式版本的Ubuntu(Debian)包?

我偶尔需要对标准的Ubuntu软件包进行less量的源代码修改,以便在我pipe理的服务器上使用。 我想在PPA(例如launchpad.net)上发布这些内容,以便通过所有常用机制(例如,无人值守升级)来安装并保持更新。 什么是正确的方式来保证我的PPA上的特定软件包将取代任何官方发布? 这似乎不是一个持有或固定的工作,因为我基本上想要分发发行序列,不包括或排除特定的版本。 用我有限的知识,我可以推测一些可能的方向。

  1. 最正确的select是以某种方式指示适当忽略官方存储库中的特定软件包,就好像它从来没有存在过。 我没有在apt中find这种细粒度的控制。

  2. 选项二是操纵版本号,使我的软件包保证有一个比任何正式版本更高的版本。 这是否可能 – 至less在很大的可能性 – 通过滥用版本号的时代组件? 我还要忍受多less隐私?

  3. 最不吸引人的select是用私有后缀(libfoo-mycompany)重命名现有的包,使它们完全独立。 由于Debian软件包pipe理器使用了强大的命名约定,这可能是一个非平凡软件包的尝试性练习。 这是我想要避免的。

  4. scheme四是我完全忽略的一个显而易见的解决scheme,即使经过了几个小时的文档search之后,这里有人急于指出。

谢谢

固定实际上应该是你想要的; 您只需要将优先级设置为一千以上,以使您的版本始终具有优先级,甚至可以从主要的回购库中获得更高版本的数据包。

把这个放在/etc/apt/preferences 。 如果您使用像reprepro这样的东西来构build自己的repo,那么您可以定位您的主机名:

 Package: * Pin: origin your.repo.hostname Pin-Priority: 1001 

或者使用Launchpad PPA,您可以定位发布属性:

 Package: * Pin: release o=LP-PPA-your-ppa-name Pin-Priority: 1001