nun*_*axe 6 osx path directory-structure package-management
我在 Mac OS X 上工作,它附带了几个主要位于/usr/bin/
和 的二进制文件/usr/sbin/
。由于它没有像某些 Linux 发行版那样的本地包管理器,我习惯于管理自己的二进制文件,在/usr/local/<package_name>/
.
通过这种方式,我能够以手动更新文件中的PATH
和MANPATH
变量为代价从我的系统中完全删除一个包.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/ant
to/usr/bin/ant-old
以使用最新版本。
虽然这有效,但我想知道是否有更好的方法来替换系统二进制文件(主要是为了避免最后一次重命名)。
更换系统二进制文件应该是最后的手段。
我的建议是:
/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/bin
在PATH
所有。这边走:
/usr/local/bin
)会覆盖系统默认值。/usr/local/bin/ant
提醒您从何处获得该版本的ant
./usr/local/bin
从您的设置中删除即可PATH
。