如何在没有root用户的情况下安装RPM?


49

如何在没有root权限的计算机上安装RPM?我只想在个人工作目录中安装供我使用的软件包。我正在运行SuSe SLES10。

请不要用“这个想法太蠢了,您不应该这样做,因为所有请求都必须经过公司的根本上帝,也许他永远活着。”

我知道我可以要求这个根神,但是我会被击落的(出于确定,无可挑剔的原因,我敢肯定...)。此外,即使他说自己会做,他也永远不会无所事事地安装它。


6
这根本不是重复的。覆盖路径并不总是允许非特权用户使用rpm。
约翰·T

谢谢HarryMC。我会检查一下。另外,将链接添加到其他人认为我的票证是重复的票证的链接。面包屑也许会帮助其他人:superuser.com/questions/160530/override-rpm-install-path
Ross Rogers 2010年

为了更好的未来,请查看appimage.org
罗斯·罗杰斯

Answers:


56
cd my-dir;
rpm2cpio to-install.rpm | cpio -idv

请参阅如何在不安装RPM软件包的情况下将其提取(rpm extract命令)


2
我这样做了,而cpio除了打印'1 block'似乎什么也没做。我做错什么了吗?
内特·帕森斯

谢谢。原来我能够从源代码安装,所以我不必为RPM烦恼
Nate Parsons 2010年

10
这只是解压缩RPM的内容并将其转储到您所在的位置。这并不意味着结果有效(其配置不在应有的位置,...)
vonbrand

希望我能给您一些慈善的名誉奖励。谢谢!
macetw

3

如何提取rpm包内容

export ins=foo-bar.rpm
rpm2cpio $ins | cpio -idv

如何提取tar.gz档案

gzip -dc foo-bar.tar.gz | tar xvf –
cd foo-bar-dir

如何将tar.gz软件包解压缩到当前目录

export file=foo-bar.tar.gz
# Note that `xovf` switch order *matters*
gzip -dc $file | tar -xovf -

如何将二进制文件作为非根目录构建

./configure --prefix=$HOME && make && make install

1

另一种选择是从源代码安装,通常您可以在其中使用--prefix开关更改安装目录。


1
那是我通常所做的,但是我希望有更多的自动化。
罗斯·罗杰斯

2
对我来说,这是行不通的,因为它试图在/ var中获取文件锁定(并且权限被拒绝)。
尼尔·弗里德曼

0

我认为“安装”没有root特权的rpm的“真正”答案是,您不能这样做。但是假设您实际上可以开始安装过程...

RPM使用通常遵循文件系统层次结构的规范文件(.spec)中提供的指令列表进行安装。该层次结构上的大多数路径几乎总是操作系统路径,而不是用户路径。因此,除非您的用户名有权访问RPM安装到的所有路径,否则它肯定会失败。如果您创建的RPM为其所有路径添加前缀/home/me(或您拥有的其他路径),则它将起作用。这将需要获取src.rpm并按照其他答案中的说明提取它,然后重新构建它。在您这样做时,您可能只考虑获得root用户访问权限或从头开始构建软件(通常,如果您不打算在许多计算机之间分发软件,通常会执行此操作)。

有一些巧妙的技巧可以帮助您进行手动构建过程。例如,您可以利用RPM中已经列出的依赖项来获取所有依赖项:https : //stackoverflow.com/a/13877738/1236128

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.