我如何删除从 post 安装的 rpm 文件中安装并且在升级时不需要的文件?

How do i delete a file that is installed from post installation of a rpm and is not needed in the upgrade of it?

以下是 rpm 规范的第一个版本

    %post
    if [ "" = "1" ];
    then
        touch /usr/bin/item1.txt
        touch /usr/bin/item2.txt
        echo "i am in and this line is written from rpm 1-1">>/usr/bin/item1.txt
        echo "i am in and this line is written from rpm 1-1">>/usr/bin/item2.txt
    fi          
    %preun    
    if [ "" = "0" ];
    then
        sed -i "/i am in and this line is written from rpm 1-1 /d" /usr/bin/item1.txt
        sed -i "/i am in and this line is written from rpm 1-1 /d" /usr/bin/item2.txt
        rm -rf /usr/bin/item1.txt
        rm -rf /usr/bin/item2.txt
    fi
    if [ "" = "1" ];
    then
     # what should be here ?
    fi 

第二版rpm spec如下

%post
if [ "" = "1" ];
then
    touch /usr/bin/item1.txt
    echo "xyz1" >> /usr/bin/item1.txt
    touch /usr/bin/item3.txt
    echo "xyz3" >> /usr/bin/item3.txt
fi

if [ "" = "2" ];
then
    # what should be here if i want to remove item2.txt file and add item3.txt
fi
%preun
if [ "" = "0" ];
then
# will i have to remove all the files item1 and item 2 along with item3.txt here 
fi

if [ "" = "1" ];
then
    ##
fi

我想简单地删除已安装在 post 基本 rpm 安装脚本中的文件 item2 并安装 item3.txt 文件作为升级的一部分。

看来您对 rpm 打包的工作原理有错误的认识。这是将创建 package-1.0.0-0.specpackage-2.0.0-0.rpm 文件的示例工作流程:

创建您要打包的两个文件(这些命令发生在 spec 文件之外,就像您编写代码时一样):

echo "i am in and this line is written from rpm 1" > item1.txt
echo "i am in and this line is written from rpm 1" > item2.txt

现在在这些部分旁边创建一个规范文件:

Version: 1.0.0
Release: 0

%install
install -d -m 0755 "${RPM_BUILD_ROOT}/usr/bin/"
cp item1.txt ${RPM_BUILD_ROOT}/usr/bin/
cp item2.txt ${RPM_BUILD_ROOT}/usr/bin/

%files
/usr/bin/item1.txt
/usr/bin/item2.txt

这将创建包含 item1.txt 和 item2.txt 的 package-1.0.0-0.rpm 现在假设我们要创建下一个版本;那么:

echo "xyz1" >> item1.txt
echo "xyz3" >> item3.txt

规范文件现在应包含:

Version: 2.0.0
Release: 0

%install
install -d -m 0755 "${RPM_BUILD_ROOT}/usr/bin/"
cp item1.txt ${RPM_BUILD_ROOT}/usr/bin/
cp item3.txt ${RPM_BUILD_ROOT}/usr/bin/

%files
/usr/bin/item1.txt
/usr/bin/item3.txt

这将创建 package-2.0.0-0.rpm。升级后,rpm 现在将删除 /usr/bin/item2.txt 并安装 item1.txt 和 item3.txt

的新版本