RPM解压缩jar文件

时间:2015-08-23 21:13:21

标签: jar rpm rpmbuild rpm-spec

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

var i = 0;
while(i < 100){
    document.getElementById("demo").innerHTML += "<p>The number is " + i + "</p>";
    i++;
}

事实证明,在RPM安装后,一些文件已损坏,因为有一种从jar文件中提取文件的空间方式。也许在构建期间,我想使用简单的exatract命令。

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

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

看起来文件未正确提取。

2 个答案:

答案 0 :(得分:3)

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

%define __jar_repack %{nil}

答案 1 :(得分:2)

运行rpm -E '%{__os_install_post}'并在我的CentOS 5系统上找到brp-java-repack-jars脚本(/usr/lib/rpm/redhat/brp-java-repack-jars)并查看它。

它解包并重新包装它找到的罐子。

较新的版本可能会让你控制一下,但在我所拥有的版本中,你对事物没有多少发言权。

对于CentOS 5中的版本,您的选择似乎是:

  • 定义您自己的自定义__os_install_post,不要将其称为该脚本
  • 更新脚本以更加智能地正确处理META-INFMANIFEST.MF文件。
  • 完全从系统中删除该脚本
  • 完全从系统中删除zip和/或unzip