У меня есть специальная версия программного обеспечения для Linux, и я упаковываю файл .jar (предназначенный для обновления существующего программного обеспечения) в rpm, а затем пытаюсь воссоздать символическую ссылку, чтобы указать на последнюю версия фляги. Я попытался использовать %post
и %postun
, чтобы создать и удалить символическую ссылку (если она уже существует), однако это не сработает. Я видел несколько сообщений в Интернете, но они не работали.Создать символическую ссылку в RPM
Как обходной путь, я попытался создать символическую ссылку в марионетке. Для этого я использовал что-то вроде ниже:
if $version == ‘1.1' {
file { '/usr/share/prog/software.jar':
ensure => 'symlink',
target => '/usr/share/prog/java/software-1.1-bin.jar',
}
Но даже здесь, в новой версии банка становится создана, но не симлинк.
Пожалуйста, дайте мне знать, если кто-либо решил эту проблему раньше.
Ниже файл спецификации, который я использовал:
%define base_install_dir %{_datadir}/prog
Name:cdplayer
Version:1.1
Epoch:1
Release:2el6
Source:cdplayer-1.1-bin.jar
BuildArch:noarch
%description
%prep
%install
%{__mkdir} -p %{buildroot}%{base_install_dir}
%{__install} -D -m 755 %{SOURCE0} %{buildroot}%{base_install_dir}
%post
ln -s -f /usr/share/prog/cdplayer-1.1-bin.jar /usr/share/prog/cdplayer.jar
%postun
%{__rm} -f /usr/share/prog/cdplayer.jar
%files
%defattr(-,root,root,-)
%dir %{base_install_dir}
%{base_install_dir}/*
%changelog
RPM является более гибким в этом отношении, чем кукольный. Если вы покажете spec-файл, который вы использовали, кто-то может предложить совет. –
Я добавил упрощенную версию спецификации – Arani
Просто прочитав ее, '/ usr/share/prog' не соответствует'% {base_install_dir} '(она находится за пределами этого дерева каталогов). –