覆盖 RPM 安装路径

覆盖 RPM 安装路径

我从 Oracle 下载了一个 RPM,想要安装在 /usr 中,但由于我们的系统管理员设置工作站的方式,/usr 中没有足够的磁盘空间。/usr 所在的根分区上的大部分空间都被 /usr/lib 和 /usr/lib64 占用,我无法真正进入那里进行清理。

有没有办法将 RPM 安装重定向到另一个路径,例如 /opt 或 /home/oracle?

答案1

嗯,是的,有点:

--重新定位 OLDPATH=NEWPATH

对于可重定位二进制包,将包重定位提示中以 OLDPATH 开头的所有文件路径转换为 ​​NEWPATH。

(手动转速)。

但是,软件的通常安装位置可能已硬编码在各个位置。如果 RPM 不是要像这样重新定位(请注意“对于可重新定位的二进制包”),则此方法可能不起作用。

在这种情况下,最好的选择可能是手动解压 RPM(rpm2cpio package.rpm | cpio -di在临时目录中),然后手动将内容放到应该去的地方。

最重要的是,大声抱怨分区布局有问题的管理员。在现代 Linux 系统上,几乎没有理由使用单独的分区。通常 / 和 /boot 就足够了……

答案2

还有另一种方法适用于不可重定位的软件包。使用以下命令检查占用最多磁盘空间的文件所在的路径:

rpm -qpl package.rpm

示例输出:

/u01/file1
/u01/file2
...

创建一个与该目录同名的符号链接,指向具有更多可用磁盘空间的目录

mkdir /var/lots_of_space
ln -s /var/lots_of_space /u01

然后按通常的方式安装:

rpm -i package.rpm

答案3

您可以使用 rpm -i --relocate OLD=NEW --badreloc package-1.0.elX.rpm

这会强制将不可重定位的软件包放入新位置。OLD 可能是 /,而 NEW 可能是您的目标位置(例如 /opt)。

如果没有‘--badreloc’,您可能会收到“包 X 不可重定位”的提示。

查克

编辑:这已经在 RHEL 6.10 和 8.3 上测试过。

相关内容