如何为静态文件创建本机Debian软件包?

时间:2011-08-24 13:17:07

标签: linux debian packaging apt

我需要为软件项目Debianize一些静态资源,但我对可用信息感到困惑,可以使用一些指导。以下是我一直在阅读的材料:

Debian新维护者指南似乎是最合适的,尤其是this chapter,但它的教学演示对我来说无效;它更像是一个重新学习的参考而不是一个未知的指南。我发现的大部分信息同样适用于将包裹包含在我不需要的公共存储库中。为了让一些善良的人可以向我展示方式,我创建了一个小项目statrec,它举例说明了我需要创建的包类型。它的源代码树看起来像这样:

statrec/
├── LICENSE
├── README.md
├── share
│   ├── gilgamesh.txt
│   └── thoreau.txt
└── VERSION

我需要,但无法推断如何:

  • statrec/share安装到/usr/share/statrec/VERSION/
  • 创建或修改从/usr/share/statrec/current//usr/share/statrec/VERSION/然后
  • 的符号链接
  • 卸载以前版本的statrec。

我理解如何完成其​​中某些工作,也许可以使用哪些工具,但surfeit of information感觉相当平行。

3 个答案:

答案 0 :(得分:8)

我认为最简单的事情是:

  1. 创建一个makefile,它将按照您希望的方式安装文件,以遵守任何DESTDIR设置,并且不对默认目标执行任何操作。有点像:

    all: # nothing to build
    
    install:
        cp -r share/* $(DESTDIR)/usr/share/statrec/$(VERSION)
    

    DESTDIR这件事很重要;它不会安装到系统,而是安装到dpkg将打包的临时目录。所有符号链接必须指向最终目的地(没有$(DESTDIR)前缀)。

  2. dh_make --native做生意(它会创建另一个将调用第一个makefile的makefile debian/rules。)

  3. 查看debian下的文件。特别是debian/changelog可能需要编辑(debuild / dpkg-buildpackage从中获取版本号,因此必须填写)。

    我相信debuild会自动使用fakeroot,对于dpkg-buildpackage,您必须手动指定它。甚至不要考虑将其作为真正的根目录运行。

  4. 使用debuilddpkg-buildpackage -rfakeroot构建

  5. 无需关心卸载,因为dpkg将处理此问题。

    更新:我建议dh_make --native,因为我理解这个问题只是在少数debian系统上安装一些数据文件。如果它应该分发,我建议只需要在irc.debian.org#debian IRC频道上询问,并可能将它留给Debian Developer(只有Debian开发人员可以上传到Debian存档,他们通常希望自己处理包装)

    此外,如果它是软件的一部分而不是独立的一堆数据文件,安装应该是使用一个通用makefile的软件的一般安装的一部分,应该只有一个 Debian源包,只有debian/controldebian/*.files应指定哪些文件转到应用程序包(即“Architecture:any”)以及哪些文件转到数据包(即“Architecure:all”和通常会获得后缀-data)。

答案 1 :(得分:1)

我发现saurik(cydia /越狱成名)“托管Cydia资源库”指南对创建自己的.deb文件很有用。在这里查看:http://www.saurik.com/id/7

答案 2 :(得分:1)

您应阅读debian-handbook中的第15.2.2节。

我发现创建.install文件并跳过Makefile部分对我自己的项目很有帮助