我想知道是否可以下载Ubuntu软件包并将其作为非root用户安装?
可能在我的
~/bin
或~/usr/share
或类似的东西?那行得通吗?#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
评论
希望他们会尽快支持。您可以为Linux使用便携式应用程序:无需安装,无需root。在appimage.org上找到它。甚至Linus Torvalds也喜欢它。奇怪,因为莱纳斯从不喜欢任何东西。
我建议尝试fakechroot。
dpk -x和mv的组合为我工作。或者,即使没有dpk,ar和配管/与tar结合也可以在非常受限的系统上为我工作,请参见此处
与Unix和Linux相关:非根软件包管理器