RPM打包

出自WPS For Linux

跳转到: 导航, 搜索

对于普通用户来说,完全可以使用 alien 来使用 deb 包(因为二进制包确实没啥可以改的)。。。

对于发行版打包者来说,如果你的发行版对私有/商业软件,即开源不开源这码事,要求不是特别严格或有提供对版权无要求的社区源的话,可以使用 openSUSE 的 wps-office.spec 作为 example。

#
# spec file for package wps-office
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

# 这个版权头部是 SuSE 必须的(如果软件提供商没有提供的话,因此建议 WPS 的人来做这样一份私有版权头部。
# 毕竟报 bug 的地方什么的都要改改)。其他发行版会有不同,也可能不需要,替换为你们需要的。

# 另外注意打包使用的宏变量的格式,比如 %{buildroot},至少这在 SuSE 和 Fedora 是可行的。
# 但用于 centos 这种老 RPM 发行版你可能需要替换成 $RPM_BUILD_ROOT 这种纯正的 RPM macros

Name:           wps-office
Version:	8.1.0.3117+wpp+a1
# 官方提供的版本号 ~a1 中的 ~ 号在所有 RPM 系发行版中都不能使用,建议把 deb 包也替换掉。
Release:	1
License:	Proprietary
# Proprietary(私有)或者 Commercial(商业)都可以。具体还看你的发行版
Summary:	Office easier # 根据 WPS 网站的 h2 翻译的。。。
Url:	http://linux.wps.cn
Group:	Productivity/Office/Suite
# 这里各个发行版间有很大不同,比如 Fedora 的就在 /usr/share/doc/rpm-*/GROUPS 里。
# 注意: Fedora 17 之后不再要求 Group tag。
Source1:	%{name}_8.1.0.3117+wpp~a1-0.1_i386.deb
Source2:        COPYING
# 就是复制的本 wiki 的 WPS_Office_Linux版最终用户协议
NoSource:	1
# 商业软件不可以提供 src.rpm
BuildRequires:	update-desktop-files fdupes
# 这个现代 RPM 系发行版基本就是这两个东西,第一个是更新 desktop 文件的,第二个是清理冗余文件的。
# 名字因发行版而异。但打包者都知道。
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
WPS Office Linux is a complete linux office suite by Kingsoft Software Inc. It includes a writer, a speedsheet and a slide presenter. It is compatible with Microsoft's doc and docx text formats, and provides many on-line templates and resources to help you make professional and better-looking documents. 
#瞎写的

%description -l zh_CN
中文的描述,summay 也可以用 %summary(zh_CN): 来写中文,但一般的 RPM 包管理器不认识中文,所以也没必要有,删去。

%prep
%setup -T -c %{name}-%{version}
# 建立空打包目录
cp -r %{S:1} ./
# 把 deb 复制过来
ar -x *.deb
# 解压 deb
rm -rf *.deb
# 删除 deb
rm -rf control*
# 删除对 RPM 系发行版无用的 debian control.tar.gz 文件
rm -rf debian*
# 删除对 RPM 系发行版无用的 debian.binary 文件
tar -xzvf data.tar.gz
# 解压得到二进制数据
rm -rf data*
# 删除 data.tar.gz
cp -r %{S:2} ./
# 把用户协议复制过来

%build

%install
mv opt %{buildroot}
mv usr %{buildroot}

# Fix desktop file 
# 修复 desktop 文件的 一般名称 genericname tag 和 分类 categories tag。必须要修。
sed -i "s/GenericName[zh_CN]=/GenericName[zh_CN]=金山\ WPS\ 办公套件/" %{buildroot}%{_datadir}/applications/*.desktop
sed -i "s/GenericName=/GenericName=Kingsoft\ WPS\ Office\ Suite/" %{buildroot}%{_datadir}/applications/*.desktop
sed -i "s/Exec=\"\/usr\/bin\/wpp\"/Exec=\/usr\/bin\/wpp/" %{buildroot}%{_datadir}/applications/*.desktop
sed -i "s/Categories=Office;/Categories=Office;Presentation;/" %{buildroot}%{_datadir}/applications/*.desktop

%suse_update_desktop_file %{name}-wpp Office Presentation
# 这行是 SuSE 特有的,更新桌面文件,其他发行版如果像上面一样修过了的话,可以去掉。

# Standard Fonts Dir
# 修复系统字体文件夹为 /usr/share/fonts/truetype, 这才是符合 Linux 文件层级标准 LFSB 的文件夹。
mkdir -pv %{buildroot}%{_datadir}/fonts/truetype/
mv %{buildroot}%{_datadir}/fonts/%{name}/*.TTF %{buildroot}%{_datadir}/fonts/truetype/
rm -rf %{buildroot}%{_datadir}/fonts/%{name}

# Mannual Strip
# 金山自己提供的 qt 没有 strip 掉 debuginfo。
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/imageformats/libqmng.so
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/imageformats/libqgif.so
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/imageformats/libqtiff.so
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/imageformats/libqjpeg.so
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/imageformats/libqsvg.so
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/imageformats/libqico.so
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/codecs/libqjpcodecs.so
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/codecs/libqtwcodecs.so
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/codecs/libqkrcodecs.so
strip %{buildroot}/opt/kingsoft/%{name}/office6/qt/plugins/codecs/libqcncodecs.so

# Clean dupicates
%fdupes %{buildroot}
# 这行是 SuSE 特有的,把冗余文件用 hardlink 压缩掉,安装时候再复制过去。其他发行版可不必。

# Fix rpath
export NO_BRP_CHECK_RPATH=true
# 这行也是 SuSE 特有的,因为 SuSE 禁止安装到 /opt 和 /usr/local。需要禁用这个 rpm 打包检查项目。

%post
%desktop_database_post
%run_suseconfig_fonts

%postun
%desktop_database_postun
%run_suseconfig_fonts

# 上面两行因发行版而异,第一行是用来更新 mimetype 的,第二行是用来即时刷新方正字体的缓存的。(不然就要重启)

%files
%defattr(-,root,root)
%doc COPYING
/opt/kingsoft/
%{_bindir}/wpp
%{_datadir}/applications/*.desktop
%{_datadir}/desktop-directories/
%{_datadir}/fonts/truetype/*.TTF
%{_datadir}/icons/hicolor/*/mimetypes/*.png
%{_datadir}/icons/hicolor/*/apps/*.png
%{_datadir}/mime/packages/*.xml
%dir %{_datadir}/fonts/truetype/
%dir %{_datadir}/icons/hicolor/
%dir %{_datadir}/icons/hicolor/16x16/
%dir %{_datadir}/icons/hicolor/16x16/apps/
%dir %{_datadir}/icons/hicolor/16x16/mimetypes/
%dir %{_datadir}/icons/hicolor/32x32/
%dir %{_datadir}/icons/hicolor/32x32/mimetypes/
%dir %{_datadir}/icons/hicolor/48x48/
%dir %{_datadir}/icons/hicolor/48x48/apps/
%dir %{_datadir}/icons/hicolor/48x48/mimetypes/

%changelog
# openSUSE 是采用单独的 .changes 文件替代 %changelog,内容如下,
# 需复制粘贴到 wps-office.changes

-------------------------------------------------------------------
Wed Mar 28 13:03:51 UTC 2012 - i@marguerite.su

- initial package 8.1.0.3117+wpp+a1
  * WPS app only

# 其他发行版可以像 RPM 那样写。格式为
* Wed Jun 14 2003 Joe Packager <joe at gmail.com> - 1.0-2
- Added README file (#42).
个人工具