在 ~/.local 中安装文件

在 ~/.local 中安装文件

当安装从源代码编译的软件时,我通常将它们放在 /usr/local/ 中,根据我的经验,这是迄今为止最常见的默认设置,至少在 Debian 及其衍生产品上也是标准做法。

现在我想在我的主目录中安装一些东西,虽然理论上我可以创建任何子目录并将其放置在那里,但我开始想知道不同的选项,以及是否有标准的做法。我基本上找到了两个答案:

  • 自定义子目录,命名类似程式,使用者
  • 无子目录,有子目录〜/ bin,〜/ lib64

我不喜欢其中任何一个,并且认为既然已经有一个~/.local子目录,为什么不安装在那里?它已经包含一个〜/.local/共享,这意味着本地用户的私有 /usr/share,因此安装程序、创建整个〜/.local/bin,〜/.local/libETC。

我的问题是:本地软件安装在~/.local下可以吗?

当我在 google 或 stackexchange 中搜索安装每用户软件的位置时,为什么找不到任何对此的引用?对我来说,这似乎是一个如此明显的位置,以至于缺乏暗示它的帖子意味着某个地方一定有陷阱。

也许做过这件事的人可以分享他们的经验,无论是积极的还是消极的?

答案1

没关系。

请记住,这是您的主目录;你可以在那里做任何你想做的事。如果你到处删除 .config,GNOME/KDE/无论什么都可能会抱怨,但根据定义,你在主目录中所做的任何事情只会影响。在 .local 中添加一些目录是无害的。

将某些内容放入点目录中会有些不方便,具体取决于您的工作流程。它对您有多大的影响取决于您如何浏览文件系统以及您需要多久浏览一次。如果是我,我会创建一个常规目录作为根目录(可能称之为当地的或者应用)并以这种方式使用它,但这是个人喜好。

您会遇到问题的地方是系统未设置为查看您的目录。您需要在 .bashrc 中调整 PATH、MANPATH、INFOPATH 和 LD_LIBRARY_PATH(或任何适合您的 shell 的内容)。可能还会存在其他小“陷阱”。

我愿意这里没有太多关于它的帖子,因为没有多少人需要这样做。如果是个人计算机,则没有理由不使用 /usr/local。在大多数发行版中,一切都已准备就绪。如果您只是安装一些应用程序,很多人都会在 /opt 中创建目录(例如 /opt/blender)。当您安装软件包时,Solaris 会执行此操作。

您所描述的唯一真正的用例是针对开发人员或在其计算机上没有 root 权限的人。大多数没有 root 权限的人只是要求管理员为他们安装一个程序 - 他们可能不知道如何编译程序。

答案2

通用约定(例如与某些install-home目标一起使用,例如水银,称为hg) 是将它们直接放在 下$HOME,即在$HOME/bin$HOME/etc$HOME/lib、 等中。这是从 开始的 GNUish 配置舞蹈的结果./configure --prefix=$HOME

答案3

不这样做的明显原因是:

  • 用户的主目录的大小通常受到限制(共享系统上的配额)
  • 预定义的配置文件通常已经添加~/bin到您的PATH(使其更方便安装)目录)
  • 如果您可以控制机器,那么安装到可共享位置效果很好,例如/usr/local/bin.您的点目录(通常)不可与其他用户帐户共享。
  • 在查找异常磁盘空间使用情况时,更容易忽略点目录。例如,在我注意到之前,我家的 ccache 错误功能使用了 1Gb。浏览器和桌面垃圾也是常见的罪魁祸首(15 年多来,没有一个提供合适的磁盘管理工具)。

积极的一面是:它会减少一点混乱。我的主目录中有 55 个常规目录,以及 91 个点目录。

答案4

是的,您可以,但它会受到其他软件安装的污染。我使用$HOME/local并修改 bashrc 的路径如下

export PATH=.:${HOME}/local/bin:${PATH}

export LD_LIBRARY_PATH=${HOME}/local/lib:${LD_LIBRARY_PATH}

export PREFIX=${HOME}/local

所以你知道你安装了什么,因为它们首先出现在路径堆栈上,所以它们会在其他二进制文件、库等之前找到。当使用诸如configure或cmake之类的东西时,前缀很容易记住

--prefix=${PREFIX}

相关内容