Answers:
最好的办法是自己制作更新版本的Debian软件包。dpkg
该apt
工具可以完成您提到的所有三件事,并且都是为此目的而设计的。使用它们而不是重新发明轮子。有很多包装指南。如果软件库中已经存在该软件,则可能会获得源软件包(apt-get src
),可用于研究和启动自己的软件包。
对此/ubuntu//a/485230/158442的回答可能作为一般准则很有用。
尽管checkinstall
这对于快速而又肮脏的解决方案而言非常有用,但长期而言,您应该使用适当的包装。
首先,很大程度上取决于您如何管理源代码。我创建一个类似的目录~/sources
,并将每个程序放在其子目录中,而其他人将为每个程序创建一个新目录。
类似地,像我这样的人,为每个新版本创建一个新的子子目录,并仅在确保新版本中没有任何会导致我停止工作的重大错误时才删除旧版本。
没有唯一的方法可以执行此操作,但是无论选择哪种方法,都应选择一种最容易管理的方法。
干净卸载
我建议创建一个rem_dep.sh
看起来像这样的脚本。
#! /bin/bash
sudo apt-get remove dep1 dep2 ... depn
dep1, dep2, depn
依赖关系在哪里。
干净便捷的升级
如果您是从自动版本控制系统(例如git
或)获得源代码,bazaar
或者链接是可预测的,则可以创建一个shell脚本,该脚本将
#1 make a backup of earlier version
#2 get new source
#3 configure, build/make the source
#5 if make went correctly, remove earlier version.
#6 make install new version, update dependencies if required.
在其他情况下,您也可以在某种程度上通过手动创建此类脚本。
冲突管理
--prefix
在安装软件及其相关性时使用该选项。注意:如果发现自己编译的软件超出了应有的数量(
max_limit
为自己设置a ,例如5或10或100),最好离开Ubuntu并转到Arch Linux。
AFAIK它们应手动记录。您可以创建类似README的文件来保留手动安装的依赖项列表。
如果该软件已经在Ubuntu或PPA存储库中建立了二进制文件。在安装过程中跟踪依赖关系应该更容易:
sudo apt-get build-dep target_package
保留已配置并已安装的源文件夹。如果将所有源与已安装的依赖项文件一起收集在特定文件夹中,则更好。
将它们安装在特定的位置--prefix
(最好是--prefix=/opt/software_name-version/
)。
这将解决许多问题:与版本库中的并发版本;干净升级;如果源被删除,则更容易进行脏卸载。
作为@muru的答案,更复杂或最好的方法是,构建Debian软件包(适用于Ubuntu / PPA存储库中的软件包)
apt-get src
在这种情况下可能无济于事。