2 根据软件包的内容,您可以简单地提取 rpm 的内容,并从主目录中的某个位置使用它。即使未将其标记为可重定位。如果程序包中的二进制文件具有硬编码的路径,或者如果应用程序需要root访问,则可能无法执行。 — Zoredache source 1 这实际上是不正确的,rpm没有sudo / root访问权限,您实际上无法运行命令。
8 有很多建议可重定位软件包的答案。重定位选项供管理员选择目的地(例如,使目的地为/ opt而不是/ usr / local),而实际上并不是出于用户权限。 虽然使用此方法可能可以解决一些权限问题,但是主要问题是,当您执行rpm操作时,它正在修改拥有root:root的/var/lib/rpm/__db.*数据库。因此,如JPerkSter所说,“简短答案=否”。设置sudo以满足特定需求可能是最好的选择。 — 亚历克斯 source
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 — 李基 source
3 RPM规范包含一个称为“可重定位”的选项。如果rpm是在启用可重定位性的情况下构建的,则可以使用'--prefix'选项将其安装在用户指定的目录中。因此,只要满足两个条件,就可以在没有超级用户访问的情况下在本地安装rpm: 该软件包最初是可重定位的 'rpm'二进制文件不会尝试将软件包添加到全局系统目录中 但是,通常,不,您需要超级用户访问权限才能安装RPM。尽管存在可重定位选项,但我几乎从未见过为支持它而构建的软件包。 — 斯科特·帕克 source
3 有些软件包是可重定位的,因此它们可以在没有root用户的情况下正常工作,只需在安装时指定前缀即可:rpm -i my.rpm --prefix = / my / home / folder 如果无法重定位软件包,则仍可以从RPM中提取文件并尝试运行它。您可以使用以下示例提取RPM文件: rpm2cpio 或午夜指挥官 将文件复制到您的〜/文件夹中,添加所有其他依赖项库,并希望最好。不保证,但是您可能会以这种方式获得一些不可重定位的软件包。 — 数据极客 source
2 您可以强制它使用不同的dbpath安装在不同的目录下。同样,您可能不应该在未检出脚本的情况下直接运行任何脚本。 这将在当前目录下放置一个rpm并解压缩脚本,以便您可以根据需要编辑和运行它们。 rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm rpm --query --scripts -p package.rpm > scripts.txt — 用户名 source
2 是的,但您可能不想这样做。我使用了自定义的人偶清单和rpm软件包来维护我没有root访问权限的计算群集上的软件。从理论上讲,它就像 rpm --inittb --root /foo rpm --dbpath /foo -i bar.rpm 但是,在EL4,EL5和EL6上的行为会有一些奇怪之处,因此您需要为每个步骤和步骤选择不同的步骤。我再也没有这些信息了。这些怪癖以及RPM数据库频繁出现的问题(也许是由于NFS引起的)使我后悔使用rpm。 — 松鼠 source
rpm
没有sudo / root访问权限,您实际上无法运行命令。