我在这台机器上没有root访问权限。
我想知道是否可以下载Ubuntu软件包并将其安装为非root用户吗?
大概在我~/bin
或~/usr/share
类似的东西?那行得通吗?
我在这台机器上没有root访问权限。
我想知道是否可以下载Ubuntu软件包并将其安装为非root用户吗?
大概在我~/bin
或~/usr/share
类似的东西?那行得通吗?
Answers:
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。只要安装了二进制文件的所有依赖项,它都应正常运行。
sudo apt-get build-dep package
来安装构建软件包所需的所有内容(使用获取源代码后apt-get source
)。
--force-not-root --root=$HOME
或其变体将不起作用。Debian二进制软件包不适合在主目录下安装。或者,换一种说法。“以下示例将package.deb安装到您的主目录中。” 不,不会。
--force-not-root --root=/your/custom/path
我假设您要安装jedit。首先,您必须找到软件包并下载。我只是从某个镜像中获取deb文件,然后打开一个控制台/终端:
mkdir /tmp/jedit && cd /tmp/jedit
-在其中创建一个新目录tmp
并对其进行更改。wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb
-下载包ar x jedit_4.3.1.dfsg-0ubuntu1_all.deb
或者,易于键入ar x *.deb
-提取文件内容tar xvzf data.tar.gz
-文件data.tar.gz
包含执行软件所需的所有内容usr/bin/jedit
打开编辑器您可以将文件移动到主目录中的某个位置,然后从那里执行它们。
我写了一个叫做JuJu的程序,它基本上允许在$ HOME / .juju目录中有一个很小的linux发行版(仅包含程序包管理器)。
它允许通过proot访问位于主目录中的自定义系统,因此,您可以安装没有root特权的任何软件包。它可以在所有主要的Linux发行版上正常运行,唯一的限制是JuJu可以在最低建议版本2.6.32的linux内核上运行。
例如,在安装JuJu之后安装jedit:
$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit