如何在没有 root 访问权限的情况下安装软件包?

Web*_*ide 176 software-installation

我在这台机器上没有 root 访问权限

我想知道是否有办法下载 Ubuntu 软件包并将它们安装为非 root 用户?

可能在我的~/bin~/usr/share类似的东西?那行得通吗?

jbo*_*tie 142

Apt 不直接支持它,但有办法做到这一点。

一种是用来schroot创建非root chroot。这是一个有点复杂的过程,但是您应该能够找到社区帮助,因为许多开发人员为编译代码设置了 chroot 环境。

我知道的第二种方法是从 .deb 包安装。您可以从网站下载它,或者如果它在您可以下载的 Ubuntu 存储库中。

apt-get download package
Run Code Online (Sandbox Code Playgroud)

替换package为包名

dpkg直接从命令行调用 deb 文件后。以下示例将 package.deb 安装到您的主目录中。

dpkg -i package.deb --force-not-root --root=$HOME 
Run Code Online (Sandbox Code Playgroud)

像这样使用 dpkg 的缺点是错误消息可能很神秘;dpkg 不会自动解析依赖关系或创建它期望的目录结构。

最后,您可以使用该apt-get source命令获取包的源并将其配置为在本地安装。通常这看起来像:

apt-get source package
cd package
./configure --prefix=$HOME
make
make install
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是您完全需要可用于这种方法的开发环境,并且您可能会发现自己编译了几十个包以解决所有依赖关系。

编辑:

由于dpkg -i不起作用(请参阅评论),我建议使用此替代方法:

dpkg -x package.deb dir
Run Code Online (Sandbox Code Playgroud)

这会将 .deb 包解压缩到 dir。然后您可以导出二进制文件所在的 PATH。只要安装了二进制文件的所有依赖项,它就应该正常运行。

  • 即使使用--force-not-root,我也会收到“dpkg:错误:请求的操作需要超级用户权限” (41认同)
  • 这个答案是在 2010 年写的。从那时起,这样做的方式是否有任何变化? (24认同)
  • 伙计们,`--force-not-root --root=$HOME` 或其变体将不起作用。Debian 二进制包不设计安装在主目录中。或者,换句话说,。“以下示例会将 package.deb 安装到您的主目录中。”。不,不会。 (13认同)
  • 可惜这行不通。我试过`--force-not-root --root=/your/custom/path` (3认同)
  • 如果你有 root 访问权限但不想全局安装特定的包,你可以使用 `sudo apt-get build-dep package` 来安装 *build* 包所需的一切(在使用 `apt-获取源`)。 (2认同)
  • `dpkg -x <package.deb> <dir>` 对我有用。 (2认同)

qbi*_*qbi 17

我假设您要安装jedit。首先,您必须找到该软件包并下载它。我只是从某个镜像中取出deb 文件并打开一个控制台/终端:

  1. mkdir /tmp/jedit && cd /tmp/jedit-- 创建一个新的目录tmp并改变它。
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb -- 下载包
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.deb或者,易于输入,ar x *.deb-- 这将提取文件内容
  4. tar xvzf data.tar.gz-- 该文件data.tar.gz包含执行软件所需的所有内容
  5. usr/bin/jedit 打开编辑器
  6. 完毕 :-)

您可以将文件移动到主目录中的某个位置并从那里执行它们。

  • 请注意,安装前和安装后脚本不会运行;您还需要自己解决任何依赖项或路径。但是在默认安装中,这对于许多桌面应用程序来说已经足够了。 (12认同)

小智 13

我编写了一个名为JuNest的程序,它基本上允许在您的 $HOME/.junest 目录中有一个非常小的 Linux 发行版(仅包含包管理器)。

它允许您在主目录中通过 proot 访问您的自定义系统,因此,您可以在没有 root 权限的情况下安装任何软件包。它可以在所有主要的 Linux 发行版下正常运行,唯一的限制是 JuNest 可以在 Linux 内核上运行,最低推荐版本为 2.6.32。

例如,安装 JuNest 后,安装 jedit:

$>junest -f
(junest)$> pacman -S jedit
(junest)> jedit
Run Code Online (Sandbox Code Playgroud)

  • 起初我以为你在谈论 [this](http://www.ubuntu.com/cloud/tools/juju)。第二个大写的 j 有所不同。 (3认同)