假设我有一个安装程序或某个程序的源码包,我想安装它。(没有可用的 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