如何在我不能 sudo 的远程服务器上安装鱼?

Coo*_*kie 1 linux software-installation fish not-root-user

我想在我没有 sudo 权限的远程服务器上安装 fish shell,这样我就可以在 ssh 时使用它。

Kus*_*nda 5

您将它安装在您的主目录中。

要做到这一点,你会检查出的源代码库fish从GitHub壳,然后按照下节“大厦”的安装说明README.md文件,同时告诉CMake的,你想使用另一种安装目录:

git clone --depth=1 https://github.com/fish-shell/fish-shell
cd fish-shell

mkdir build
cd build

cmake -DCMAKE_INSTALL_PREFIX=$HOME/local ..

make
make install
Run Code Online (Sandbox Code Playgroud)

这将fish$HOME/local. 该fish可执行文件将设在$HOME/local/bin(你可能要添加到您的$PATH)。

这显然假定所有需要的工具(gitmakecmake等)可用,并且构建系统找到所有需要的依赖1

例如,要检查特定的发布标签3.0.2(撰写本文时的最新版本),请git clone --branch=3.0.2 --depth=1 ...在克隆存储库时使用 。如果您不指定发布标记,您将获得代码的最新不稳定开发版本。

然后,您必须fish在启动交互式 shell 时启动普通 shell (假设您不想fish手动启动)。如果您的外壳是bash,则可以通过添加

if [ -x "$HOME/local/bin/fish" ]; then
    exec "$HOME/local/bin/fish"
fi
Run Code Online (Sandbox Code Playgroud)

或类似的东西$HOME/.bashrc。这样做会的这种特殊的方式代替bash有处理fish过程中的每一个互动的时间bash壳开始。

1在某些非 Linux 系统上,您还必须手动修补src/fallback.cpplocale.h包含标头。否则,该文件可能因uselocale()未声明而无法编译。这是代码中的一个确认错误,由于这个问题,它将在 3.1.0 版中修复。


与往常一样,另一个选择是与系统管理员交谈并让他们从预编译的软件包中安装它。然后,您就可以将登录 shell 更改为fishusingchsh或系统上可用的任何类似命令。