对于那些在没有 root 权限的机器上工作的人来说,一个常见的事情是在本地构建自己喜欢的工具的小套装。
工作流程有点像这样:
tar xvzf fav_tool.tar.xvzf
cd fav_tool
./configure --prefix=$HOME
make install
它往往会变得有点混乱。您的主文件夹中会出现类似bin/, etc/, include, lib/
和 的文件夹。source/
您必须管理依赖项和$PATH
.有一个聪明的方法来做到这一点吗?有没有工具可以在本地跟踪您的包裹?
答案1
它往往会变得有点混乱。您的主文件夹中会出现 bin/、etc/、include、lib/ 和 source/ 等文件夹。
通过选择,是的。如果这看起来不整洁,你可以使用
./configure --prefix=$HOME/mytools
反而。然后您将需要将其添加到您的 $PATH,或者,如果$HOME/bin
已经是其中的一部分,您可以将当前的所有内容移入$HOME/mytools/bin
并
rm ~/bin
ln -s ~/mytools/bin ~/bin
如果您的工具将内容放入~/mytools/lib
,您还需要LD_LIBRARY_PATH
在某处进行适当的设置。
如果您使用通常用于设置环境变量的任何初始化文件,则这只需要完成一次,并且需要大约一分钟的时间。
你必须管理依赖关系
如果“管理”是指解决安装问题,那么这就是 的主要目的./configure
。如果它不能正确完成这项工作,第三方工具不太可能做得更好。它可能,但也可能会这样做更差。
如果您的意思是其他东西,那么“依赖”概念中确实不涉及任何其他内容。如果您的意思是您想要解决此问题的工具,下载依赖项并为您安装它,那么这就是普通包管理器的用途 - 但请记住您决定不需要预构建的二进制文件。您正在从源头构建。
非常不幸的是,Linux 包管理器对于非特权用户来说大多不友好或无用,但这是一个单独的问题(也是一个单独的问题,根据发行版有不同的答案)。
有没有工具可以在本地跟踪您的包裹?
是的,源代码包本身。当你构建时,解压到~/mytools/src
.您可以将构建目录保留在那里,或者只保留 tarball。当你想卸载某些东西时,你只需进入相关目录(如果需要,再次解压它)和make uninstall
.
系统永远不会将该src
目录用于任何用途。它只包含您放入其中的内容,因此只要您不删除下载的内容,您就会有一个本地安装的源构建软件的整洁列表,其中包含实际用于构建所有内容的源。