在 $HOME 中安装较新版本的应用程序,无需 root 访问权限并链接到已安装的应用程序

在 $HOME 中安装较新版本的应用程序,无需 root 访问权限并链接到已安装的应用程序

我有一个没有 root 权限的 Linux 盒子,里面有一个相当旧的 emacs,所以我下载了最新版本并构建如下:

  • 下载到$HOME/SRC
  • $HOME/BLD配置并内置--prefix=$HOME
  • makemake install

因此,这会bin在我的主目录中创建一个文件夹,这正是我所期望的。

现在,当我直接从终端输入 emacs 时,它仍然打开旧的(如预期的那样)。所以,我必须这么做~/bin/emacs。我将其添加alias emacs=$HOME/bin/emacs到我的.bash_profile作品中。但我也可以添加~/bin$PATH.不过,不太确定推荐哪一个。两个版本的 emacs 是否可以在没有任何冲突的情况下工作,例如~/.emacs每次打开不同版本时都共享和覆盖。

如果我遵循的步骤是正确的,那么在旧版本已经存在的情况下,这是在没有 root 访问权限的情况下安装新应用程序的最佳方法。

答案1

调整你的PATH.它简化了执行,按预期工作,一旦您安装了更多带有$HOMEas 前缀的应用程序,它们都会按预期工作。我会在我的 RC 文件中做这样的事情:

PATH=$HOME/bin:$PATH
LD_RUN_PATH=$HOME/lib:$LD_RUN_PATH
export PATH LD_RUN_PATH

设置LD_RUN_PATH应该允许本地安装的 DSO 也能工作。

到目前为止,您安装 emacs 的方式与在多用户环境中安装的方式基本相同。

说明:Unix(以及使用它们的其他软件,从 DOS 到 TeX)中的路径就像位置列表一样,从左到右搜索。在 Unix 上,我们使用冒号 ( :) 来分隔条目。如果您有一个PATHlike /usr/local/bin:/bin:/usr/bin,并且您正在寻找一个名为 的程序foo,则会按顺序搜索这些路径:

  1. /usr/local/bin/foo
  2. /bin/foo
  3. /usr/bin/foo

使用第一个找到的。因此,根据您插入目录的具体位置,您可以使安装的二进制文件“覆盖”其他二进制文件。从概念上讲,传统上的顺序PATH是特定到通用或本地到全局。 (当然,我们经常添加奇怪的路径来支持独立的第三方应用程序,这可以打破这个类比)

相关内容