替换系统二进制文件时的最佳做法是什么?

nun*_*axe 6 osx path directory-structure package-management

我在 Mac OS X 上工作,它附带了几个主要位于/usr/bin/和 的二进制文件/usr/sbin/。由于它没有像某些 Linux 发行版那样的本地包管理器,我习惯于管理自己的二进制文件,在/usr/local/<package_name>/.

通过这种方式,我能够以手动更新文件中的PATHMANPATH变量为代价从我的系统中完全删除一个包.bashrc

这是一个简单的例子:

Mac OS X 附带 ant 1.7.0,位于/usr/bin. 我需要使用最新版本,所以我从 Apache 下载它,然后将它解压缩(构建)到/usr/local/apache-ant-1.8.2. 然后我更新我的.bashrc文件:

# Mac OS X original PATH
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
# Apache Ant 1.8.2
PATH="$PATH:/usr/local/apache-ant-1.8.2/bin"
export PATH
Run Code Online (Sandbox Code Playgroud)

我确保导出/usr/bin//usr/sbin/之前,ant/bin/因为除了ant我不想覆盖的之外,通常还有其他二进制文件。

问题是,当我输入时,which ant我得到/usr/bin/. 因此,我将其重命名为/usr/bin/antto/usr/bin/ant-old以使用最新版本。

虽然这有效,但我想知道是否有更好的方法来替换系统二进制文件(主要是为了避免最后一次重命名)。

Gil*_*il' 5

更换系统二进制文件应该是最后的手段。

我的建议是:

  • /usr/local/bin前面的/usr/bin和其他的系统目录PATH
  • 建立/usr/local/bin/ant一个符号链接到/usr/local/apache-ant-1.8.2/bin/ant.
  • 不要包括/usr/local/apache-ant-1.8.2/binPATH所有。

这边走:

  • 您的自定义(在 中/usr/local/bin)会覆盖系统默认值。
  • 符号链接会/usr/local/bin/ant提醒您从何处获得该版本的ant.
  • 如果您想使用默认设置测试某些内容,只需在测试期间/usr/local/bin从您的设置中删除即可PATH