it-swarm.cn

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

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

我想知道是否有一种方法我可以下载Ubuntu软件包并将它们安装为非root用户吗?

可能在我的~/bin~/usr/share或类似的东西?那会有用吗?

122
Weboide

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

一种是使用schroot来创建非根chroot。这是一个有点 涉及的过程 ,但你可以找到社区帮助,因为许多开发人员设置chroot环境来编译代码。

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

apt-get download package

package替换为包的名称

一旦你有了deb文件,就直接从命令行调用dpkg。以下示例将package.deb安装到您的主目录中。

dpkg -i package.deb --force-not-root --root=$HOME 

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

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

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

这种方法的缺点是您需要可用于此方法的开发环境才能工作,您可能会发现自己编译了许多软件包以解决所有依赖关系。

编辑:

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

dpkg -x package.deb dir

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

106
jbowtie

我假设你要安装 jedit 。首先,你必须找到包并下载它。我只需要 某些镜像中的deb文件 并打开一个控制台/终端:

  1. mkdir /tmp/jedit && cd /tmp/jedit - 在tmp中创建一个新的diretory并更改为它。
  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. 完成:-)

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

16
qbi

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

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

例如,安装JuJu后安装jedit:

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit
9
user967489