如何手动创建DEB文件?

dai*_*isy 52 debian

我想手动创建一个 DEB 文件。我只想提供一个包含要安装的数据的文件夹,以及一个安装后要执行的脚本。

这可能吗?

Gil*_*il' 62

制作源码包

我的建议是制作一个源码包。安装build-essentialdebhelperdh-make。切换到您要安装的文件所在的目录(目录名称必须采用 形式$PACKAGE-$VERSION,例如,myapp-4.2-1对于您第一次尝试打包 Myapp V4.2),然后运行dh_make --createorig。回答问题。Debhelper 将通过在名为 的子目录中生成文件来创建构建包所需的基本基础结构debian,其中包括一些必需文件和可选文件的模板。您可能需要修改其中一些文件:

  • 编辑debian/rules以构建需要构建的内容并将文件安装在正确的位置。如果你只需要复制一些文件而不是编译东西,只需编辑文件debian/install以指定需要安装哪些文件。
  • 编辑debian/copyright以添加有关您的软件包的许可证信息以及有关从何处获取最新版本的信息(如果相关)。
  • 编辑debian/changelog以删除对 ITP 的引用(仅当您为 Debian 项目工作时才相关)。重命名debian/postinst.ex,以debian/postinst和添加安装后命令在那里。如果您稍后更新您的软件包,请运行debchange -i以添加更改日志条目或在 Emacs 中编辑该文件(已安装dpkg-dev-el)。

运行dpkg-buildpackage -rfakeroot -us -uc以构建.deb包(-us -uc如果要使用 PGP 密钥对包进行签名,请删除)。

直接制作二进制包

如果您决定直接制作二进制包而不从源包构建它,这并不容易,因为没有那么多工具来促进这个过程,您需要对 deb 包的格式有一些基本的熟悉。它在Debian Policy Manual 中有描述,特别是ch。3(二进制包格式)ch。5(控制文件)ch。6(安装脚本)附录 B(二进制包操作)

你确保你的包安装了预期的文件/usr/share/doc/copyright(包含包内容的许可证,以及在哪里可以找到包的最新版本)和/usr/share/doc/changelog.Debian.gz(包含 deb 包的更新日志)。如果您只想在内部使用该软件包,则不需要这些,但最好拥有它们。

关于 Debian 和衍生产品

如果您有可用的 Debian 工具,请使用它dpkg-deb来构建软件包。在包含要安装的数据的目录中,添加一个DEBIAN在顶层调用的目录,其中包含控制文件和维护者脚本。

$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Run Code Online (Sandbox Code Playgroud)

艰难的道路

如果您没有 Debian 工具,请构建一个名为 的要打包文件的存档data.tar.gz,一个名为的控制文件的单独存档control.tar.gz(无子目录),以及一个名为debian-binary并包含文本2.0.

cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
Run Code Online (Sandbox Code Playgroud)

你至少需要一个控制文件与领域PackageMaintainerPriorityArchitectureInstalled-SizeVersion,和任何必要的依赖声明。

安装后要执行的脚本称为postinst。确保使其可执行。它与control.

从不同格式转换二进制包

如果你已经有一个来自其他发行版的二进制包,你可以使用Alien来转换它。


Mic*_*ega 12

首先,您需要创建一个构建文件夹和一个文件存档: tar czvf data.tar.gz files

然后在 build 文件夹中,您必须创建一个包含一些所需信息的控制文件:

 Package: xxxxxx
 Version: 0.0.1
 Section: user/hidden 
 Priority: optional
 Architecture: armel
 Installed-Size: `du -ks usr|cut -f 1`
 Maintainer: Your Name <xxx@xxx.xx>
 Description: This is optional, but creates warnings if left out
Run Code Online (Sandbox Code Playgroud)

然后,您可以独立添加 preinst、postint、prerm 和 postrm shell 脚本来控制 .deb 文件的安装前和安装后以及前后删除行为,然后您可以使用 tar 创建控制存档: tar czvf control.tar.gz control preinst postinst prerm postrm

然后你需要一个 debian-binary 文件:echo 2.0 > debian-binary. 在您的构建文件夹中,您现在应该拥有以下文件:debian-binary control.tar.gzdata.tar.gz.

最后你需要ar包来创建 .deb 文件:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz