如何从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
行中删除依赖项
- 列出您在
- 更改
postinst
和preinst
,prerm
和postrm
脚本,以便新副本处理所有包的内容。 这并不简单,因为您需要了解每个程序包在每个步骤中执行的操作。 - 重新打包整个东西,以便拥有所有文件和新的DEBIAN文件。
最后你应该留下你可以安装的东西,但它并不好。 每当其中一个原始软件包获得更新时,您将不得不手动重复这些步骤。
保持原始包装系统的系统要好得多。 你甚至可以更好地发布单独的debs。 这将花费更少的时间,并将更加强大。
当然这是可能的,但我不知道有任何工具可以帮到你。 因此,手动重新包装是最佳选择。
免责声明:我没试过这个,这只是我的解决方案草图。
您可以将所有依赖项下载到目录,将其放入debian存储库,制作存储库的ISO映像,然后分发ISO。
然后,您将安装ISO作为环回设备,并指示apt将安装的目录用作包的源 – 就像您可以将Ubuntu安装光盘用作存储库一样。
看起来好像很多工作,但是你最终会得到一个包含所有依赖项的可再发行文件,而不需要你重新打包deb文件。
如果他们没有’良好’的连接,但仍然有一些,你可以共享文件/ var / cache / apt / archives目录,这将被用来代替重新下载文件。
此方法不能解决如何同步存储库索引的问题。