从源代码构建 .deb 包,无需安装

从源代码构建 .deb 包,无需安装

假设我有一个安装程序或某个程序的源码包,我想安装它。(没有可用的 Debian 软件包。)首先,我想用.deb它创建一个包,以便将来能够彻底删除已安装的程序(请参阅卸载从源代码构建的应用程序如果我从源代码构建包,我该如何卸载或完全删除?)。另外,使用包进行安装可防止其破坏其他包中的文件,而如果您运行安装程序或 ,则无法保证这一点sudo make install

检查安装

通过阅读那里和其他地方的答案,我了解到通常的解决方案是使用checkinstall构建包。不幸的是,它checkinstall似乎不是防止make install破坏其他软件包的系统文件。例如,根据恢复由 checkinstall 和 gcc build 引起的问题

我使用从安装中创建了一个 Debian 包sudo checkinstall -D make install

[...] 我使用 Synaptic 软件包管理器将其删除。事实证明,[删除] checkinstall 创建的软件包会make install尝试删除安装过程触及的每个文件,包括共享 gcc 库,如 /lib64/libgcc_s.so。

然后,我尝试在checkinstall不安装的情况下构建软件包,希望能绕过这个问题。我创建了一个虚拟 Makefile:

install:
    echo "Bogus" > /bin/qwertyuiop

然后运行sudo checkinstall --install=no。文件/bin/qwertyuiop 曾是即使没有安装该包,也可以创建。

就我而言,我不相信安装程序make install不会覆盖系统文件,因此这种用法checkinstall被排除。

我该如何构建这个包,没有安装它或者让它接触系统文件?

是否可以在fakechroot编辑解引导环境来实现这一点?最好以普通用户而不是 root 用户身份进行构建,这样可以防止在出现问题时覆盖系统文件。

答案1

您可能想尝试debuild从源代码中创建一个二进制 (deb) 文件。您必须像打包一样准备 debian 文件夹。一旦您做对了,debuild -b从源目录中运行命令,它将为您创建一个 deb 文件。

你还想看看Debian 打包简介


如果所有这些都是疯狂的东西,那么您就只能通过checkinstall弄乱系统文件来应对了。

答案2

我发现一个答案在 Linux Journal 的一篇文章中使用 Checkinstall 从源代码构建软件包

如果你只想创建 .deb 而不执行安装,请使用命令行开关

sudo checkinstall --install=no

相关内容