RPM 提取 jar 文件

use*_*928 1 jar rpm rpmbuild rpm-spec

我想创建仅用于提取 jar 文件的 RPM 包:

Name:           pack-agent
Version:        1.0
Release:        1%{?dist}
Summary:        Linux Agent installation script
Group:          Utilities
License:        license
Source0:        pack-agent-1.0.tar.gz
BuildArch:      x86_64
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description

%prep
%setup -q -n opt

%build

%install
#install -m 0755 -d $RPM_BUILD_ROOT/agent
#cp -ap agent/* $RPM_BUILD_ROOT/agent/

install -m 0755 -d %{buildroot}/opt
#cp -a * %{buildroot}/agent
cp -a * %{buildroot}/opt

%clean
rm -rf $RPM_BUILD_ROOT

%files
/opt
%defattr(-,root,root,-)

%doc
%changelog
Run Code Online (Sandbox Code Playgroud)

事实证明,在 RPM 安装后,一些文件被损坏,因为有一种特殊的方法可以从 jar 文件中提取文件。我想也许在构建过程中使用了简单的 extract 命令。

有什么办法可以解决这个问题吗?我现在得到这个错误:

org.osgi.framework.BundleException: The bundle file:/opt/agent/deploy/System_Install-1.0.jar does not have a META-INF/MANIFEST.MF! Make sure, META-INF and MANIFEST.MF are the first 2 entries in your JAR!
Run Code Online (Sandbox Code Playgroud)

看起来该文件未正确提取。

Cla*_*uds 5

如果您的 tarball 包含应保持原样的 jar 文件,请禁用 jar 文件的重新打包。将以下内容添加到规范文件的顶部:

%define __jar_repack %{nil}
Run Code Online (Sandbox Code Playgroud)