使用与 /usr 不同的目录作为标准

使用与 /usr 不同的目录作为标准

是否有可能使用与/usr标准目录不同的目录来安装东西?我问,因为我有一个/usr只读的无尽操作系统系统,因此无法以“标准”方式做事。

换句话说:有没有办法创建另一个文件夹,比如在我的主目录中(让我们称之为“ user”),并“s ”和hare之间的所有命令和依赖项?那么,例如,当我想在- 目录中安装 perl-tk 时,我可以使用在make install 期间已安装在该文件夹中的 perl 软件包吗?/usr/home/user/home/user/usr/whatever

我无法更改/usr(有一种带有覆盖层的方法,但是通过系统更新,这些更改消失了),所以我需要以某种方式“在它之外工作”,但仍然以某种方式“链接”到它。

改变系统将是一个显而易见的选择,但也只是逃避挑战;)

答案1

这可能Endless OS不是完成您想要的任务的正确工具。来自Endless OS 开发者页面,

无尽的操作系统

不是典型的 Linux 发行版。我们不使用 rpm、apt 或任何其他打包系统。我们使用由 OSTree 管理的只读根文件系统,应用程序包覆盖在顶部。我们有不同的目标用户。大多数桌面 Linux 发行版都面向精通技术的用户和开发人员。简单性是关键,因此我们精心挑选适合用户的最佳应用程序。我们的操作系统有许多核心技术,特别是 Linux 内核、OSTree、systemd、GNU、X、GNOME 和 Xapian。

答案2

是的,可以将软件安装到/usr.

一个例子(系统范围)是/usr/local. (这可能仍然无法直接帮助您,因为您的目录/usr是只读的。)目录与其布局/usr/local匹配(它有一个等)在大多数情况下,它用于区分作为基本操作系统的一部分提供的软件包(其中将进入),由 systemd 管理员从源安装(将进入)。/usr/bin/lib/usr/usr/local

还有一个/opt旨在将软件包安装到单独的每个软件包目录中。因此,例如,您可以在下面安装 Perl 6 /opt/perl6,并且它只包含 Perl 而没有其他内容。您将为单独的包保留单独的目录,这通常可以通过删除其目录来轻松“卸载”包。您通常需要进行$PATH适当的设置才能访问安装在那里的程序,或者在bin已经存在的其他目录中创建符号链接$PATH来访问这些程序。管理/opt通常是针对管理员的,考虑到您需要更新$PATH安装的每个软件包,这可能不是最好的选择......

要在目录下安装软件,一种可能的方法是在其顶部$HOME创建一个子目录并匹配或层次结构。.local/usr/usr/local

所以也许可以尝试这个:

mkdir ~/.local

然后像--prefix安装新软件包时一样使用它。例如,如果包使用 autoconf 样式的配置脚本,您可以使用以下命令构建和安装它:

./configure --prefix="$HOME/.local"
make
make install

您需要添加~/.local到您的$PATH,以便您可以访问那里的程序。所以在你的~/.bashrc

PATH=$HOME/.local:$PATH
export PATH

打开新的 shell(新终端,或注销并重新登录)以使更改生效。或者只是在现有的 shell 上运行相同的命令。您现在应该能够~/.local/bin直接执行程序。

相关内容