linux - 如何为静态文件创建原生 Debian 包?

标签 linux debian packaging apt

我需要为一个软件项目对一些静态资源进行 Debian 化,但对可用信息感到困惑,并且可以在这样做时使用一些指导。以下是我一直在阅读的资料:

Debian 新维护者指南 似乎最合适,尤其是 this chapter ,但它的教学演示对我来说无效;它更像是一个重新学习的引用,而不是给不知情者的指南。我发现的许多信息同样适用于将我不需要的包包含在公共(public)存储库中。为了让一些好心人能给我指路,我创建了一个小项目 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/ 的符号链接(symbolic link),然后
  • 卸载以前版本的 statrec。

我了解如何完成其​​中的一些工作,也许可以使用哪些工具,但对 surfeit of information 感到相当无能为力。 .

最佳答案

我会说最简单的事情是:

  1. 创建一个 makefile,它将根据任何 DESTDIR 设置按照您的意愿安装文件,并且对默认目标不执行任何操作。类似的东西:

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

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

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

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

    我相信 debuild 会自动使用 fakeroot,对于 dpkg-buildpackage 你必须手动指定它。甚至不要考虑以真正的 root 身份运行它。

  4. 使用debuilddpkg-buildpackage -rfakeroot 构建它

无需关心卸载,因为 dpkg 会处理它。

更新:我建议使用dh_make --native,因为我知道这个问题只是在一些debian 系统上安装一些数据文件。如果它应该被分发,我建议直接去 irc.debian.org#debian IRC channel 询问,并可能将它留给 Debian 开发人员(只有 Debian 开发人员可以上传到 Debian 文件库,他们通常想自己处理打包) .

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

关于linux - 如何为静态文件创建原生 Debian 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7176065/

相关文章:

Linux 内核看不到我的 at91sam9g20 板上的所有组件

iOS 应用程序更新 - 是否可以对 .app 进行部分更新?

linux - 了解 rpmbuild 的工作原理

linux - 使用选项 -c 在 shell 脚本中打印单引号

c - 如何从 PROC 获取有关子进程的信息

linux - 如何从脚本创建简单的日志文件

php - 当 where 子句中的日期时间介于之间时 MySQL 查询速度慢

linux - Ant中能否修改linux文件权限

git - 基础项目创建失败并显示 npm ERR! debian 8.5.0 上的 git rev-list

java - 找不到类 - JavaFX native 打包