处理将包添加到路径的“正确”方法

处理将包添加到路径的“正确”方法

我下载并安装了 Haskell 平台。它已安装(默认)到/usr/local/haskell/

我想将里面的二进制文件添加/usr/local/haskell/bin/到我的路径中。但我不想(如果可能的话)改变我的道路..

这里最好的行动方案是什么?我应该将其移至haskell/bin/*还是local/bin将 haskell 文件夹添加到路径中是最佳实践吗?

答案1

一种相当常见的替代更新方法$PATH是创建指向已在 下列出的二进制文件的符号链接$PATH,例如,在 中/usr/local/bin

您可以通过以下方式实现:

$ cd /usr/local/bin
$ sudo ln -s ../haskell/bin/* .

(但是,在执行此操作之前,请确保检查其中的二进制文件列表/usr/local/haskell/bin/并检查创建符号链接是否有意义。您可能还决定仅对文件的子集进行符号链接。)

你会这样做的原因之一不是想要移动二进制文件本身的原因是,很多时候,以二​​进制形式分发在 tarball 中的二进制文件的编写方式是,在系统中的任何位置解压时它们都可以工作。为了做到这一点,他们经常尝试检测它们的安装位置(最常见的是通过查看)。通过这样做,他们可以找到他们希望找到所需的其他库和文件的/proc/self/exe父目录。/usr/local/haskell创建符号链接通常不会干扰此类机制,因为它们仍然能够在 下找到实际的二进制文件/usr/local/haskell/bin,从而成功找到安装路径。

不移动二进制文件的另一个原因是,以后如果你想卸载 Haskell,你可以简单地删除整个/usr/local/haskell目录,而不需要记住一些二进制文件被移动到了/usr/local/bin,即使您确实记得这一点,您也不需要回忆哪些二进制文件属于 Haskell(假设您已经使用此方法安装了多个软件包。)如果你通过删除目录来卸载 Haskell,最终会出现一些损坏的符号链接/usr/local/bin,但它们是无害的,并且很容易指出哪些属于 Haskell,因为它们的../haskell/bin名称中都有,所以它们很容易也去清理。

相关内容