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

我想知道是否可以下载Ubuntu软件包并将其作为非root用户安装?

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

评论

希望他们会尽快支持。

您可以为Linux使用便携式应用程序:无需安装,无需root。在appimage.org上找到它。甚至Linus Torvalds也喜欢它。奇怪,因为莱纳斯从不喜欢任何东西。

我建议尝试fakechroot。

dpk -x和mv的组合为我工作。或者,即使没有dpk,ar和配管/与tar结合也可以在非常受限的系统上为我工作,请参见此处

与Unix和Linux相关:非根软件包管理器

#1 楼

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。只要安装了二进制文件的所有依赖项,它都应照常运行。

评论


如果您具有root用户访问权限,但又不想在全球范围内安装特定的软件包,则可以使用sudo apt-get build-dep软件包来安装构建软件包所需的所有内容(在使用apt-get源获取其源代码之后)。

–弗拉基米尔·潘捷列夫(Vladimir Panteleev)
13年1月14日在22:25

该答案写于2010年。自那时以来,此方法的执行方式是否有任何变化?

–壁虎
2014-09-16 18:30



即使使用--force-not-root,我也会收到“ dpkg:错误:请求的操作需要超级用户特权”

–Clément
16 Apr 19 '13:37

普通用户,--force-not-root --root = $ HOME或其变体将不起作用。 Debian二进制软件包不适合在主目录下安装。或者,换一种说法。 “以下示例将package.deb安装到您的主目录中。”不,不会。

– Faheem Mitha
17年6月13日在17:54



不幸的是,这行不通。我试过--force-not-root --root = / your / custom / path

–越南
17年6月22日在10:12

#2 楼

我假设您要安装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打开编辑器
完成:-)

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

评论


请注意,安装前和安装后脚本不会运行。您还需要自己解决所有依赖关系或路径。但是在默认安装下,这对于许多桌面应用程序而言已足够。

– jbowtie
2010年7月29日在12:01

您也可以不搜索就下载该软件包,只需执行apt-get下载(请参见其他答案)

–lib
15年7月23日在14:59

我相信您的链接已断开。

– Winnemucca
17年4月13日在22:33

#3 楼

我写了一个叫做JuNest的程序,它基本上允许在$ HOME / .junest目录中有一个很小的Linux发行版(仅包含软件包管理器)。
它使您可以通过以下位置访问主目录中的自定义系统: proot,因此,您可以安装没有root特权的任何软件包。它可以在所有主要的Linux发行版上正常运行,唯一的限制是JuNest可以在最低建议版本2.6.32的Linux内核上运行。
例如,在安装JuNest之后,要安装jedit:
$>junest -f
(junest)$> pacman -S jedit
(junest)> jedit


评论


这样可以在Ubuntu上正常运行,对吗?

–赛斯
2014年11月2日在21:27

是的,如果ubuntu的Linux内核版本大于或等于2.6.32,它将起作用。

–user967489
2014年11月4日,0:47

起初我以为你在谈论这个。第二个大写的j会有所不同。

– kon psych
15年5月6日在21:42

问题是我们是否可以安装Ubuntu软件包。使用junest,我们将只能安装ArchLinux软件包,而不能安装Ubuntu软件包。例如如果没有相同的软件包可用于ArchLinux,那么这将无济于事。就是说,谢谢朱斯特。

–基兰
16-2-20在10:24

枣现在是纯正的,并且因为有毒而起作用

–彩虹
20年6月26日在10:04