假设我有一个安装程序或源代码压缩包,用于安装某个我想要的程序(没有Debian软件包可用)。首先,我想要将其制作成一个.deb软件包,以便将来能够干净地卸载已安装的程序(参见从源代码构建的应用程序如何卸载,如果我从源代码构建了一个软件包,如何完全卸载或删除?)。此外,使用软件包进行安装可以防止它覆盖其他软件包的文件,而如果您运行安装程序或sudo make install命令,则无法保证这一点。
并运行
根据我的情况,我不信任安装程序/
如何在不安装或触碰系统文件的情况下构建软件包呢?
是否有可能在
Checkinstall
从阅读那里和其他地方的答案,我了解到通常的解决方案是使用checkinstall
来构建软件包。不幸的是,似乎checkinstall
无法阻止make install
覆盖其他软件包的系统文件。例如,根据Reverting problems caused by checkinstall with gcc build:
然后,我尝试告诉我使用
sudo checkinstall -D make install
从安装中创建了一个Debian软件包。[...] 我使用Synaptic Package Manager将其删除。事实证明,[删除]由
make install
创建的checkinstall软件包试图删除安装过程接触到的每个文件,包括/lib64/libgcc_s.so等共享gcc库。
checkinstall
在不安装的情况下构建软件包,希望绕过这个问题。我创建了一个虚拟的Makefile:install:
echo "Bogus" > /bin/qwertyuiop
并运行
sudo checkinstall --install=no
命令。尽管未安装该软件包,但文件/bin/qwertyuiop
还是被创建了。根据我的情况,我不信任安装程序/
make install
不会覆盖系统文件,因此不能使用checkinstall
。如何在不安装或触碰系统文件的情况下构建软件包呢?
是否有可能在
fakechroot
ed debootstrap环境中运行Checkinstall来实现这一目标?最好是以普通用户而不是root身份进行构建,这样如果出错,就不会覆盖系统文件。