我需要为一个软件项目对一些静态资源进行 Debian 化,但对可用信息感到困惑,并且可以在这样做时使用一些指导。以下是我一直在阅读的资料:
- Rolling your own Debian packages
- Debian New Maintainer's Guide
- Debian Library Packaging Guide
- Debian Mentors FAQ
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 感到相当无能为力。 .
最佳答案
我会说最简单的事情是:
创建一个 makefile,它将根据任何
DESTDIR
设置按照您的意愿安装文件,并且对默认目标不执行任何操作。类似的东西:all: # nothing to build install: cp -r share/* $(DESTDIR)/usr/share/statrec/$(VERSION)
DESTDIR
很重要;它不会安装到系统中,而是安装到 dpkg 将打包的临时目录中。所有符号链接(symbolic link)都必须指向最终目的地(没有$(DESTDIR)
前缀)。让
dh_make --native
做它的事情(它将创建另一个 makefiledebian/rules
来调用第一个 makefile)。查看
debian
下的文件。特别是debian/changelog
可能需要编辑(这是debuild
/dpkg-buildpackage
获取版本号的地方,所以必须填写)。我相信
debuild
会自动使用fakeroot
,对于dpkg-buildpackage
你必须手动指定它。甚至不要考虑以真正的 root 身份运行它。使用
debuild
或dpkg-buildpackage -rfakeroot
构建它
无需关心卸载,因为 dpkg
会处理它。
更新:我建议使用dh_make --native
,因为我知道这个问题只是在一些debian 系统上安装一些数据文件。如果它应该被分发,我建议直接去 irc.debian.org#debian IRC channel 询问,并可能将它留给 Debian 开发人员(只有 Debian 开发人员可以上传到 Debian 文件库,他们通常想自己处理打包) .
此外,如果它是软件的一部分而不是独立的一堆数据文件,则安装应该是使用一个通用 makefile 的软件一般安装的一部分,应该只有 一个 Debian 源package 而只是 debian/control
和 debian/*.files
应该指定哪些文件进入应用程序包(即“Architecture: any”)以及哪些文件进入数据包(即“Architecure: all”,通常后缀为 -data
)。
关于linux - 如何为静态文件创建原生 Debian 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7176065/