我使用源代码构建了一个包,如下所示:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib --with-package-name="Myplugin" --with-package-origin="http://www.ubuntu.org/" --enable-gtk-doc --disable-static
make
make install
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我发现它是最新版本,并且有很多错误,所以我需要删除它/卸载它。但我怎么能这样做呢?我试过了,make clean; make uninstall但我仍然看到它存在:
# pkg-config --list-all | grep Myplugin
myplugin-....
$ ls /usr/lib/myplugin/libXYZ.so
exist....
Run Code Online (Sandbox Code Playgroud)
你现在如何删除这个?
尽管我开始使用 Ubuntu 已经快一年了,但我还没有尝试从源代码安装软件。我实际上并不觉得有必要这样做。但现在我正在开发一个软件,该软件处于存储库中的候选发布阶段,但最新的稳定版本的源代码可在软件主页上找到。
我了解到如果软件有很多依赖项,从源代码安装可能会很困难。但是,如果我解决了这个问题,我会对最新版本感到满意。但是我一直想知道这样的软件是否可以自动更新,或者我是否必须运行一些脚本来更新包。或者更糟糕的是,我是否必须从头开始重新安装每个更新?
另外,我很想知道从上述以外的源安装是否有任何特定优势。
假设我有一个安装程序或我想要安装的某个程序的源 tarball。(没有可用的 Debian 软件包。)首先,我想.deb从中创建一个软件包,以便将来能够干净地删除已安装的程序(请参阅卸载从源代码构建的应用程序,如果我从源代码构建一个软件包如何我可以完全卸载或删除吗?)。此外,使用包安装可以防止它破坏其他包中的文件,如果您运行安装程序或sudo make install.
通过阅读那里和其他地方的答案,我收集到通常的解决方案是使用checkinstall来构建包。不幸的是,它似乎并不能checkinstall阻止其他软件包破坏系统文件。例如,根据Reverting issues Caused by checkinstall with gcc build:make install
我使用安装创建了一个 Debian 软件包
sudo checkinstall -D make install。[...]我使用 Synaptic Package Manager 将其删除。事实证明,[删除]创建的包 checkinstall 试图
make install删除安装过程触及的每个文件,包括共享 gcc 库,如 /lib64/libgcc_s.so。
然后我尝试告诉checkinstall构建包而不安装它,希望绕过这个问题。我创建了一个虚拟 Makefile:
install:
echo "Bogus" > /bin/qwertyuiop
Run Code Online (Sandbox Code Playgroud)
然后跑了sudo checkinstall --install=no。即使未安装该包,该文件也/bin/qwertyuiop 已创建。
就我而言,我不信任安装程序 /make install不会覆盖系统文件checkinstall,因此排除了这种使用。
package-management packaging install-from-source checkinstall
packaging ×2
backport ×1
checkinstall ×1
compiling ×1
installation ×1
source-code ×1
uninstall ×1
updates ×1