我在Linux上具有特定版本的软件,并且正在以rpm格式打包.jar文件(旨在升级现有软件),然后尝试重新创建符号链接以指向jar的最新版本。我尝试使用%post和%postun创建和删除符号链接(如果它已经存在),但是这不起作用。我在互联网上看到了一些帖子,但是它们没有用。
解决方法是,我尝试在puppet中创建符号链接。为此,我使用了以下内容:
if $version == ‘1.1' {
file { '/usr/share/prog/software.jar':
ensure => 'symlink',
target => '/usr/share/prog/java/software-1.1-bin.jar',
}
Run Code Online (Sandbox Code Playgroud)
但是即使在这里,也将创建新版本的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
Run Code Online (Sandbox Code Playgroud)
给定的规范文件已安装cdplayer-1.1-bin.jar,但链接到cdplayer-1.1.jar。这是一个差异,显示了我为使其能够按预期工作而进行的更改:
--- foo.spec.orig 2015-11-16 20:34:48.000000000 -0500
+++ foo.spec 2015-11-16 20:44:08.017874483 -0500
@@ -1,21 +1,25 @@
%define base_install_dir %{_datadir}/prog
+Summary: sample rpm spec-file
+License: unknown
Name:cdplayer
Version:1.1
Epoch:1
Release:2el6
-Source:cdplayer-1.1-bin.jar
+Source:%{name}-%{version}-bin.jar
BuildArch:noarch
+%global actual %{name}-%{version}.jar
+%global linked %{name}.jar
%description
%prep
%install
%{__mkdir} -p %{buildroot}%{base_install_dir}
-%{__install} -D -m 755 %{SOURCE0} %{buildroot}%{base_install_dir}
+%{__install} -D -m 755 %{SOURCE0} %{buildroot}%{base_install_dir}/%{actual}
%post
-ln -s -f /usr/share/prog/cdplayer-1.1.jar /usr/share/prog/cdplayer.jar
+ln -s -f %{base_install_dir}/%{actual} %{base_install_dir}/%{linked}
%postun
-%{__rm} -f /usr/share/prog/cdplayer.jar
+%{__rm} -f %{base_install_dir}/%{linked}
%files
%defattr(-,root,root,-)
%dir %{base_install_dir}
Run Code Online (Sandbox Code Playgroud)
您的规范文件中有一些问题需要探讨:
yum(请参阅“ 拥有的RPM软件包:例如,使symlink在更新/刷新后幸存”),该缺陷会在删除链接之前检查状态,这是软件包升级与删除的副作用)。epoch需要注意的标签,但该问题并未说明您用于升级的步骤。epoch值),则最终可能获得同一软件包的多个副本。-v在rm和ln命令中添加选项将更清楚地向您显示该软件包在安装时的作用。
| 归档时间: |
|
| 查看次数: |
7440 次 |
| 最近记录: |