2014-05-07 4 views
2

Создаю какой-то файл в% после сценария оборотов в минуту, как следоватьОбороты Понизить сценарий в файле спецификации

--spec версии файла 1.1 -

%post 
    echo %{version} `date` > /var/info 

Над сценарием нет старому оборотов в минуту (т.е. версия < = 1,0)./Вар Информация о файле/создается, когда новая (версия 1.1) Обороты установлен

Я понижаем пакет как следовать

rpm -Uvh --oldpackage myrpm-1.0.rpm 

Я хочу удалить/уаг/информационный файл, когда понижение оборотов в минуту.

Если я включил следующий сценарий, следуя ниже, удалите файл при удалении, но не обновите. --- спецификация файла ---

%postun 
    if [ $1 =="0" ] 
     rm /var/info 
    fi 

Можете ли вы помочь мне, чтобы удалить файл, если я понизить до версии < 1,1

ответ

1

Я не верю, что вы можете сделать это только с помощью скриптлетов. Говоря, что создание таких файлов с использованием сценариев - плохая идея (именно по такой причине).

Что вы хотите за это:

The %ghost Directive

Как мы уже упоминали в разделе под названием Список% файлов, если файл указан в списке% файлов, то этот файл будет автоматически включается в упаковке. Бывают случаи, когда файл должен принадлежать пакету , но не установлен - файлы журналов и файлы состояний хороши примеры случаев, которые могут возникнуть у вас.

Способ достижения этого - использовать директиву% ghost. Добавив эту директиву в строку, содержащую файл, RPM будет знать о ghosted файле , но не добавит его в пакет. Однако все равно должен быть в buildroot. Вот пример% призрака в действии.

Пакет blather-1.0 регистрируется в /var/log/blather.log по умолчанию config. В файле spec файл /var/log/blather.log включен в список 0 файлов: . Мы видим, что blather.log принадлежит к пакету, и удаляется, когда пакет.

% установить
сенсорный $ RPM_BUILD_ROOT% {_} localstatedir /log/blather.log
...
% файлов
...
% привидение% {_} localstatedir /log/blather.log
...
# rpm -qf /var/log/blather.log
blather-1.0-1
# rpm -ql blather | Grep blather.log

# оборотов -e болтовни & & Ls /var/log/blather.log
лс/уаг/Журнал/болтовню.протоколировать: Нет такого файла или каталога

Там файл прикоснулся в% установки этапа не будет установлена ​​ /var/log/blather.log хотя он будет добавлен в базу данных оборотов в минуту, а мы можем видеть из запросов файл, однако он не отображается из списка , но, поскольку он принадлежит пакету, он будет удален , когда пакет будет удален. Кроме того, можно использовать setperms для исправления разрешений на файл% ghost.

# Ls -al /var/log/blather.log
-RW-R - r-- 1 корень корень 3448 18 июня 17:00 /var/log/blather.log
#chmod 666/var/log/blather.log
# ls -al /var/log/blather.log
-rw-rw-rw- 1 корень корня 3448 18 июн 17:00 /var/log/blather.log
# RPM --setperms болтовня
# Ls -Al /var/log/blather.log
-rw-р - r-- 1 корень корень 3448 Jun 18 17:00 /var/log/blather.log

+0

Спасибо, но в моем случае, если мое имя файла и каталог не будет фиксированной, она будет рассчитываться в зависимости от другого пакет как perl (perl sitelibe). это может быть различным, если enduser будет использовать/opt/custpmeper/bin/perl. мой файл установки должен идти туда, а это будет исправление, поскольку я использую/usr/local/bin/perl в сборке env. можете ли вы удовлетворить любое решение для него, на самом деле я создаю ссылку на файлы в пользовательском каталоге perl. чтобы избежать проблемы. –

+0

Я не думаю, что понимаю ваше утверждение как таковое. Вы запускаете perl, который существует в пути в установленной системе, чтобы восстановить свой каталог 'sitelib', а затем связать ваши упакованные файлы в этот каталог (из любой директории, на которой вы их фактически установили), чтобы гарантировать, что они будут доступны по умолчанию system perl (который может быть или не быть официальным RPM perl)? –

2

Я думаю, что следующий %triggerin скриптлет в 1.1 спецификации можно удалить /var/info на понижение до 1,0:

%triggerin -- %{name} < 1.1 
rm /var/info 

но RPM запускает этот %triggerin при обновлении до 1.1 тоже. Подробности ниже:

Обновление: Я написал RPM для обходного пути:

 Смежные вопросы

  • Нет связанных вопросов^_^