2015-08-23 76 views
-1

我想新建這是用來只提取jar文件的RPM包: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文件。也許在構建簡單的exatract命令的時候我會使用。

有什麼辦法解決這個問題嗎?我現在得到這個錯誤:

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! 

看起來像文件沒有正確提取。

+0

您的問題沒有列出任何與jar文件。 –

+0

你能解釋我如何解決這個問題嗎? – user1285928

+0

這個錯誤是抱怨jar文件本身。 '/ opt/agent/deploy/System_Install-1.0.jar'從哪裏來?該文件如何與您包含的spec文件相關聯? –

回答

1

如果壓縮包裏面包含的是應該保持原樣,禁用的jar文件重新打包jar文件。將以下內容添加到您的規格文件的頂部:

%define __jar_repack %{nil} 
+0

非常感謝! – user1285928

2

運行rpm -E '%{__os_install_post}'並找到brp-java-repack-jars腳本(我的CentOS 5系統上的/usr/lib/rpm/redhat/brp-java-repack-jars)並查看它。

它解包並重新打包找到的罐子。

較新的版本可能會讓你控制一下,但在一個我你沒有太多的事情發言。

對於CentOS 5的版本,它看起來像你的選擇是:

  • 定義自己的自定義__os_install_post不把它叫做腳本
  • 更新腳本是有關處理META-INFMANIFEST.MF更聰明文件正確。
  • 刪除腳本從你的系統完全
  • 從系統中刪除zip和/或unzip完全