如何从ubuntu存储库创建独立包

是否有可能通过合并依赖性而无需手动重新打包来创建独立的deb软件包。

我已经看过这个问题,但它并没有真正回答我上面想要实现的目标。

如果可能怎么做?

更新1

还没有可用的工具(?)那么如何创建包含所有包的新deb包,这些包将依赖关系复制到缓存并执行主包。 可能吗?

更新2

上面的方法似乎是不可能的,因为dpkg无法一次处理多个操作。 有些脚本可以做到

更新3

这个工具非常有用,但它目前不支持oneric及以上仍在等待更通用的工具

提前致谢

使用超级deb创建者。 您可以为Ubuntu 11.04制作独立包。 有关详细信息,请访问官方网站。 http://hacktolive.org/wiki/SuperDeb_Creator

不。如果您想要一个没有依赖关系的单个软件包,您需要自己重新打包。

要了解包的工作原理,您可以阅读debian包装指南 。

如果所有这些东西都已经存在于Ubuntu存档中,那么您真正想要的只是一个导致其安装的元数据包,对吧?

你真的只需要用dh_make创建一个几乎空的包。 告诉它你想要一个二进制文件和一个本机包。 在一个空目录中:

dh_make --native --indep --packagename --defaultless your-thing 

然后编辑debian / control,并在二进制包部分(第二个)中将要安装的所有包添加到Depends:部分,用逗号分隔。

然后用。构建包

 debuild binary 

如果您想在Launchpad上将其上传到PPA,以便其他人可以轻松获取它:

 dch --release --distribution oneiric debuild -S 

当然,将oneiric更改为您希望打包的任何内容。 然后在上面的目录中你应该有

 your-thing_1.0_source.changes 

在你创建了PPA之后就做了

 dput ppa:yourusername/ppaname your-thin_1.0_source.changes 

然后安装该软件包的任何人也将下载并安装所有其他依赖的位。

如果我打算对此进行攻击,我会做以下事情:

  • 下载并解压缩所有包
  • 保留主包的DEBIAN文件夹副本,将其他人放在一边
  • 改变DEBIAN/control文件
    • 列出您在Provides行中提供的每个包
    • 为要替换的包添加Conflicts条目
    • Dependencies行中删除依赖项
  • 更改postinstpreinstprermpostrm脚本,以便新副本处理所有包的内容。 这并不简单,因为您需要了解每个程序包在每个步骤中执行的操作。
  • 重新打包整个东西,以便拥有所有文件和新的DEBIAN文件。

最后你应该留下你可以安装的东西,但它并不好。 每当其中一个原始软件包获得更新时,您将不得不手动重复这些步骤。

保持原始包装系统的系统要好得多。 你甚至可以更好地发布单独的debs。 这将花费更少的时间,并将更加强大。

当然这是可能的,但我不知道有任何工具可以帮到你。 因此,手动重新包装是最佳选择。

免责声明:我没试过这个,这只是我的解决方案草图。

您可以将所有依赖项下载到目录,将其放入debian存储库,制作存储库的ISO映像,然后分发ISO。

然后,您将安装ISO作为环回设备,并指示apt将安装的目录用作包的源 – 就像您可以将Ubuntu安装光盘用作存储库一样。

看起来好像很多工作,但是你最终会得到一个包含所有依赖项的可再发行文件,而不需要你重新打包deb文件。

如果他们没有’良好’的连接,但仍然有一些,你可以共享文件/ var / cache / apt / archives目录,这将被用来代替重新下载文件。

此方法不能解决如何同步存储库索引的问题。