【问题标题】:RPM doesnot take care of deleting the directories which are created as part of RPM relocationRPM 不负责删除作为 RPM 重定位的一部分创建的目录
【发布时间】:2019-10-11 16:12:20
【问题描述】:

我必须重新定位一个 rpm,因此我在我的规范文件中添加了前缀。

rpm.spec:

前缀:/etc

前缀:/usr

前缀:/var

当我搬家时:

rpm -ivh --relocate /etc=/akshatha/test/ --relocate /usr=/akshatha/test/ --relocate /var=/akshatha/test/ (rpm_package)

等有目录:aaa bbb ccc

usr 有目录:ddd eee fff

var 有目录:hhh iii jjj

所以我看到里面 /akshatha/test/

$cd /akshatha/test/

$ ls -ltr

aaa bbb ccc ddd eee fff hhh iii jjj(和 some_other_contents_which 不是 rpm 包)

搬迁成功..为此非常高兴。

但是当我卸载那个 rpm 时:

rpm -e (rpm_package_name)

我看到目录 aaa bbb ccc ... 中的内容被删除了。

但目录不会在卸载过程中被删除。

如果我在卸载过程中强行删除这些文件夹:

rpm 需要 RPM_PREFIX_INSTALL=/akshatha/test

这实际上删除了整个测试文件夹(其中还有一些不属于该 rpm 包的其他内容)

【问题讨论】:

    标签: directory rpm uninstallation prefix relocation


    【解决方案1】:

    在 %files 部分中,您可以定义属于 rpm 的内容以及删除 rpm 时将删除的内容。

    如果你输入:

    %files
    /etc/test/*
    

    /etc/test 中的所有文件都属于 rpm,但不属于test 目录。如果你把

    %files
    /etc/test
    

    那么 /etc/test 目录及其所有内容将属于 ​​rpm,并且在卸载时也会被删除。

    【讨论】:

    • 但我不知道什么是重定位路径..它只能在安装期间知道..我无法硬编码 /etc/test.. 用户可以将 /etc 重新定位到他们想要的任何其他位置。 .RPM 在打包时不识别 $RPM_PREFIX_INSTALL.. 它只在 pre 和 post 期间这样做
    • @AkshathaRamesh 你有%files 部分吗?我想在你的%files 部分你现在有类似/etc/file 的东西。我的意思是,如果您希望在使用重定位安装后删除/akshatha/test;您必须在 rpm 中指定 etc 目录;映射到/akshatha/test/ 属于你的rpm。因此,您需要将/etc%dir /etc 添加到您的%files 部分。
    • 是的,它确实有效.. 我正在尝试使用 /etc/file.. 因此它曾经只删除文件.. 现在我尝试使用 /etc.. 这反过来又删除了整个 etc..非常感谢
    猜你喜欢
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2011-07-30
    • 1970-01-01
    • 2014-10-21
    相关资源
    最近更新 更多