我主要在 Linux 远程机器上工作,我有一个帐户,但我不是 root 用户。我从来没有真正理解这对我安装东西的能力意味着什么。
我知道pip install
如果我添加,我可以在“系统的一部分”上安装东西--user
。我还看到我可以在我的 conda 环境中安装东西。
我想安装tmux
。我知道我可以通过以下方式安装sudo apt-get install tmux
,但显然我不能,sudo
因为我不是 root 用户。我可以通过其他方式安装它吗?还是只有系统管理员才能这样做?如果是后者,为什么我可以安装某些东西,但不能安装其他东西?
谢谢。
答案1
pip 用于 Python 库和其他东西,它支持在您的主目录中无需 root 身份安装它们。apt-get 用于 Linux 发行版的二进制包,它不支持此功能,并且通常您无法在没有 root 身份的情况下安装二进制包。
迄今为止最简单的解决方案是让您的系统管理员或具有 root 权限的人安装 tmux,这对他们来说很容易。
如果您不能这样做并且盒子上安装了编译器,您可以从源代码构建 tmux,如果您还不熟悉在 Linux 上构建 C 软件,这是一个大问题,并且可能或多或少涉及哪些依赖项已经安装以及您还需要从源代码构建。
要构建 tmux 3.0a,您需要:C 编译器、make、yacc 或 bison、libevent、ncurses。
如果您有另一个与您远程使用的 Linux 机器属于同一时代的机器,并且您有 root 权限,那么一个不错的选择是构建一个静态 tmux 并将 tmux 二进制文件复制到您没有 root 权限的远程主机 - 这样您就可以安装使用包管理器构建所需的所有依赖项,而无需构建它们。例如,要在 Debian 机器上执行此操作,您需要执行以下操作:
sudo apt-get install build-essential bison ncurses-dev libevent-dev
wget https://github.com/tmux/tmux/releases/download/3.0a/tmux-3.0a.tar.gz
tar -zxf tmux-3.0a.tar.gz
cd tmux-3.0a
./configure --prefix=$HOME/local --enable-static
make
scp tmux myuser@myhost:~
如果您不能这样做,并且您的远程 Linux 机器有一个编译器(使用 检查gcc -v
)和 yacc(尝试yacc -V
),那么您可以首先构建 ncurses 和 libevent,这里有一篇文章向您展示了如何为稍旧的 tmux 版本执行此操作 - 如果您搜索,还会发现许多其他文章:https://jdhao.github.io/2018/10/16/tmux_build_without_root_priviledge/本文没有提到的是,您还需要执行export LD_LIBRARY_PATH=$HOME/local/lib
与PATH
运行 tmux 相同的操作,您可以将两个导出文件都放在 shell 启动文件(.profile 或 .bashrc 或其他)中。
一个好的开始是下载并解压 tmux 压缩包并运行./configure --prefix=$HOME/local
,看看会发生什么 - 如果失败它应该给你一个线索你还需要构建什么,如果成功你可以运行make && make install
然后从 运行 tmux $HOME/local/bin/tmux
。
答案2
现在也有一个 AppImage 分发,无需 root 访问权限即可使用。 https://github.com/tmux/tmux/releases