rpm无根


12

是否可以在没有root用户访问权限的情况下使用rpm?

Answers:


2

根据软件包的内容,您可以简单地提取 rpm 的内容,并从主目录中的某个位置使用它。即使未将其标记为可重定位。如果程序包中的二进制文件具有硬编码的路径,或者如果应用程序需要root访问,则可能无法执行。


1
这实际上是不正确的,rpm没有sudo / root访问权限,您实际上无法运行命令。

8

有很多建议可重定位软件包的答案。重定位选项供管理员选择目的地(例如,使目的地为/ opt而不是/ usr / local),而实际上并不是出于用户权限。

虽然使用此方法可能可以解决一些权限问题,但是主要问题是,当您执行rpm操作时,它正在修改拥有root:root的/var/lib/rpm/__db.*数据库。因此,如JPerkSter所说,“简短答案=否”。设置sudo以满足特定需求可能是最好的选择。


8

考虑到以上所有内容,关于可重定位版本,您可以尝试按照此处列出的说明进行操作。

rpm --initdb --root /home/username/local --dbpath /home/username/local/lib/rpm
rpm --root /home/username/local --dbpath /home/username/local/lib/rpm \
 --relocate /usr=/home/username/local --nodeps -ivh package.rpm

3

RPM规范包含一个称为“可重定位”的选项。如果rpm是在启用可重定位性的情况下构建的,则可以使用'--prefix'选项将其安装在用户指定的目录中。因此,只要满足两个条件,就可以在没有超级用户访问的情况下在本地安装rpm:

  1. 该软件包最初是可重定位的
  2. 'rpm'二进制文件不会尝试将软件包添加到全局系统目录中

但是,通常,不,您需要超级用户访问权限才能安装RPM。尽管存在可重定位选项,但我几乎从未见过为支持它而构建的软件包。


3

有些软件包是可重定位的,因此它们可以在没有root用户的情况下正常工作,只需在安装时指定前缀即可:rpm -i my.rpm --prefix = / my / home / folder

如果无法重定位软件包,则仍可以从RPM中提取文件并尝试运行它。您可以使用以下示例提取RPM文件:

将文件复制到您的〜/文件夹中,添加所有其他依赖项库,并希望最好。不保证,但是您可能会以这种方式获得一些不可重定位的软件包。


2

您可以强制它使用不同的dbpath安装在不同的目录下。同样,您可能不应该在未检出脚本的情况下直接运行任何脚本。

这将在当前目录下放置一个rpm并解压缩脚本,以便您可以根据需要编辑和运行它们。

rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm

rpm --query --scripts -p package.rpm > scripts.txt

2

是的,但您可能不想这样做。我使用了自定义的人偶清单和rpm软件包来维护我没有root访问权限的计算群集上的软件。从理论上讲,它就像

rpm --inittb --root /foo 
rpm --dbpath /foo -i bar.rpm

但是,在EL4,EL5和EL6上的行为会有一些奇怪之处,因此您需要为每个步骤和步骤选择不同的步骤。我再也没有这些信息了。这些怪癖以及RPM数据库频繁出现的问题(也许是由于NFS引起的)使我后悔使用rpm。


1

您可以在没有root访问权限的情况下构建RPM,只需在您的主目录中进行。至于安装RPM,我会说简短的答案=否。


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.