Как удалить файл, установленный после установки rpm и не требующий его обновления? - PullRequest
0 голосов
/ 31 августа 2018

Ниже приводится первая версия спецификации rpm

    %post
    if [ "$1" = "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 [ "$1" = "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" = "1" ];
    then
     # what should be here ?
    fi 

Версия спецификации rpm для Seacond выглядит следующим образом

%post
if [ "$1" = "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 [ "$1" = "2" ];
then
    # what should be here if i want to remove item2.txt file and add item3.txt
fi
%preun
if [ "$1" = "0" ];
then
# will i have to remove all the files item1 and item 2 along with item3.txt here 
fi

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

Я хочу просто удалить файл item2, который уже установлен в сценарии после установки базового rpm, и установить файл item3.txt в рамках обновления.

1 Ответ

0 голосов
/ 31 августа 2018

Похоже, вы неправильно поняли, как работает упаковка rpm. Вот пример рабочего процесса, который создаст файл package-1.0.0-0.spec и package-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

это создаст package-1.0.0-0.rpm, содержащий item1.txt и item2.txt теперь предположим, что мы хотим создать следующую версию; то:

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

...