RPM提取jar文件

RPM提取jar文件,jar,rpm,rpmbuild,rpm-spec,Jar,Rpm,Rpmbuild,Rpm Spec,我想创建RPM包,该包仅用于提取jar文件: 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: x8

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

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
事实证明,在RPM安装之后,一些文件被破坏了,因为有一种特殊的方法可以从jar文件中提取文件。我想可能在构建过程中使用了简单的EXATACT命令

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

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!

看起来该文件未正确提取

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

它将找到的罐子拆开并重新包装

更新的版本可能会让你控制它一点,但在我的版本中,你没有太多的发言权

对于CentOS 5中的版本,您的选择如下:

  • 定义您自己的自定义
    \uuuuu os\u install\u post
    ,它不称为脚本
  • 更新脚本,使其更智能地正确处理
    META-INF
    MANIFEST.MF
    文件
  • 从系统中完全删除该脚本
  • 从系统中完全删除
    zip
    和/或
    unzip

运行
rpm-E“{uuuu os\u install\u post}
并找到
brp java repack jars
脚本(
/usr/lib/rpm/redhat/brp java repack jars
在我的CentOS 5系统上)并查看它

它将找到的罐子拆开并重新包装

更新的版本可能会让你控制它一点,但在我的版本中,你没有太多的发言权

对于CentOS 5中的版本,您的选择如下:

  • 定义您自己的自定义
    \uuuuu os\u install\u post
    ,它不称为脚本
  • 更新脚本,使其更智能地正确处理
    META-INF
    MANIFEST.MF
    文件
  • 从系统中完全删除该脚本
  • 从系统中完全删除
    zip
    和/或
    unzip

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

%define __jar_repack %{nil}

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

%define __jar_repack %{nil}

你的问题没有列出任何与jar文件有关的内容。你能解释一下我如何解决这个问题吗?这个错误是关于jar文件本身的。
/opt/agent/deploy/System\u Install-1.0.jar
来自哪里?该文件与您包含的规范文件有什么关系?它是我的自定义jar。当我在RPM安装后手动复制jar时,它工作正常。看起来RPM构建过程正在破坏jar?这是可能的。RPM确实尝试重新打包jar以用于压缩/等目的。我想那可能是打破了你的罐子。你可以研究一下禁用它。如果这真的是问题所在,我会很惊讶。RPM安装jar后,它的内容是什么?您的问题没有列出任何与jar文件有关的内容。您能解释一下我如何修复它吗?这个错误是由于jar文件本身造成的。
/opt/agent/deploy/System\u Install-1.0.jar
来自哪里?该文件与您包含的规范文件有什么关系?它是我的自定义jar。当我在RPM安装后手动复制jar时,它工作正常。看起来RPM构建过程正在破坏jar?这是可能的。RPM确实尝试重新打包jar以用于压缩/等目的。我想那可能是打破了你的罐子。你可以研究一下禁用它。如果这真的是问题所在,我会很惊讶。RPM安装后,该jar的内容是什么?