【问题标题】:rpm package installation issue with nodeps flag带有 nodeps 标志的 rpm 软件包安装问题
【发布时间】:2020-11-03 01:19:01
【问题描述】:

我正在尝试使用以下命令安装 rpm 包:

rpm -Uvh --root=/mnt/bank_a rpm/app_name.rpm --nodeps

它是一个应用程序包,它是 linux 下挂载设备的根文件系统安装的一部分,因此根标志对于指定安装路径至关重要。

--prefix 不能使用,因为它是一个不可重定位的包。 nodeps 标志用于抑制以下错误(sh 作为 /bin 文件夹下 bash 的软链接存在):

依赖失败:xxx 需要 /bin/sh

但是 pre scriplet 对我来说失败并出现以下错误

错误:%pre(app_name.rpm) scriptlet 失败,退出状态 255 错误:安装:%pre scriptlet 失败 (2),跳过 app_name.rpm

我不明白为什么 --root 和 --nodeps 不能一起工作,也不明白这里应该做什么。

【问题讨论】:

    标签: embedded-linux rpm rpmbuild rpm-spec rpm-maven-plugin


    【解决方案1】:

    此时正确的做法是不使用 RPM。通过弄乱根,然后说“我不在乎依赖关系”,你就进入了无人区。脚本试图做他们不能做的事情,而您没有提供足够的信息来实际告诉您出了什么问题。

    最简单的解决方案是转到一个临时目录并运行rpm2cpio your.rpm | cpio -div,然后将生成的文件树复制到需要安装的位置。

    所以我没有被指责没有回答实际问题,你可以--noscripts,但是你明天会在这里问为什么程序没有工作而你没有工作'首先不要使用 RPM 等支持基础架构来完成它。

    【讨论】:

    • 问题是,如果单独使用 --nodeps 标志并且不使用 root 标志,则 rpm 安装工作正常。由于 rootfs 在我的控制之下,我几乎检查并确保在用户空间触发应用程序之前,包的依赖关系在目标上。但是,我无法使其适用于已安装的分区。为此,我需要知道如何将 --root 选项与 nodeps 一起使用。该脚本正在 %pre 部分中创建组和用户,并在 %post 部分中删除一些文件
    • 另一种可能的方法是从目标根文件系统运行rpm,例如通过chroot。在使用基于 RPM 的发行版时,我经常这样做。
    • chroot 需要围绕它构建更多内容(例如 glibc 和你的 shell)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    相关资源
    最近更新 更多