是可以使用没有root权限的rpm?
根据软件包的内容,您可以简单地提取 rpm 的内容 ,并从主目录的某个地方使用它。 即使它没有被标记为可重定位。 如果软件包中的二进制文件具有硬编码path,或者如果应用程序需要root访问权限,那么它可能是不可能的。
有很多的答案,build议可重新定位的软件包。 重定位选项是为pipe理员select目的地(例如,使目的地为/ opt而不是/ usr / local),而不是用户权限。
虽然使用此方法可能会解决某些权限问题,但主要问题是执行rpm操作时,它将修改拥有root:root的/var/lib/rpm/__db.*数据库。 正如JPerkSter所说:“简短答案=否”。 设置sudo来满足特定的需求可能是最好的select。
考虑到以上所有内容,关于可重定位的版本,您可以尝试按照此处列出的说明进行操作。
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
RPM规范包含一个名为“relocatable”的选项。 如果rpm是build立在可重定位性打开的情况下,那么可以使用'–prefix'选项将其安装在用户指定的目录中。 所以假设一个rpm可以在没有超级用户访问的情况下在本地安装,只要满足两个条件:
但是,一般来说,不,您需要超级用户访问才能安装RPM。 虽然可重定位选项存在,但我几乎从来没有见过一个为支持它的软件包。
有些软件包是可重定位的,所以它们可以在没有root的情况下正常工作,只需在安装时指定前缀:rpm -i my.rpm –prefix = / my / home / folder
如果包不可重定位,则可能仍然从RPM中提取文件并尝试运行它。 您可以使用以下方式提取RPM文件:
将文件复制到你的〜/文件夹,添加任何额外的依赖库,并希望最好的。 不能保证,但你可能会得到一些不可重新定位的软件包。
您可以强制它使用不同的dbpath安装在不同的目录下。 另外你也许不应该直接运行任何脚本而不检查它们。
这将在当前目录下放置一个rpm并提取脚本,以便可以编辑并在必要时运行它们。
rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm rpm --query --scripts -p package.rpm > scripts.txt
你可以在没有root权限的情况下构buildRPM,只要在你的home目录下就可以。 至于安装RPM的,我会说简短的答案=没有。
是的,但你可能不想。 我使用了自定义puppet清单和rpm包来维护我没有root权限的计算集群上的软件。 从理论上讲,它就像一样简单
rpm --inittb --root /foo rpm --dbpath /foo -i bar.rpm
然而,在EL4,EL5和EL6中这种行为有些怪异,所以你需要为每一个步骤和选项设置不同的设置。 我没有这方面的信息了。 这些怪癖,以及频繁的RPM数据库问题(可能是由于NFS),使我很后悔使用rpm。
没有它不可能的转速与根,su或sudo访问