一、准备工作
1.要打包套件,必须先安装 rpm-build 套件
sudo yum install rpm-build
2.建立打包套件的环境
在 FC5 后,并不建议用 root 来打包套件,所以请改用一般的使用者身分来打包套件
首先要安装 fedora-rpmdevtools 这个套件
sudo yum install fedora-rpmdevtools
接著执行 fedora-buildrpmtree 来建立打包的环境
fedora-buildrpmtree
执行完后,在 Home 目录底下就产生 rpmbuild 的目录
在 rpmbuild 目录底下又有 BUILD RPMS SOURCES SPECS SRPMS 五个子目录
BUILD 编译时所用的暂存目录
RPMS 放置打包好的套件
SOURCES 放置套件的源代码及修补档等等
SPECS 放置 .spec 档
SRPMS 放置 Source RPMS (.src.rpm)
-bp 只作准备 (解压和打补丁)
-bc 准备并编译
-bi 编译并安装
-bl 检验文档是否齐全
-ba 编译后做成*.rpm和src.rpm
-bb 编译后做成*.rpm
-bs 只做成*.src.rpm
-tc -ti -ta -tb -ts 的功能类似,只是所需参数由spec文档变成tar包。
3.建立 ~/.rpmmacros 档案
编辑 ~/.rpmmacros,主要是设定 %packager 及 %vendor 等等:
%_topdir %(echo $HOME)/rpmbuild
%_smp_mflags -j3
%__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot
%packager Chung-Yen Chang
%vendor Chinese Linux Extensions
假如有 GPG Key 能够加上类似底下几行,到时候要 GPG Sign 时会用到:
%_signature gpg
%_gpg_path ~/.gnupg
%_gpg_name Chung-Yen Chang (candyz)
%_gpgbin /usr/bin/gpg
二、建立 spec 档案
我以打包 pcmanfm-0.3.0-beta3.tar.gz 为例
假设这个套件没有人打包过,因此必须自行建立 pcmanfm.spec 档案
先进到 ~/rpmbuild/SPECS 目录底下:
cd ~/rpmbuild/SPECS
1.利用 fedora-newrpmspec 工具程式来产生一个 spec 档的样本,然后再慢慢来修改
fedora-newrpmspec pcmanfm
执行完后,就会产生 pcmanfm.spec
spec 档的命名规则为 %{name}.spec
spec 档的 Encoding 必须为 UTF-8
2.编辑 pcmanfm.spec
2.1.Version、Release 及 Summary
Version: 0.3.0
Release: 0.1.beta3%{?dist}
Summary: PCMan File Manager
Version Tag 及 Release Tag 的命名规则,请参考:
http://fedoraproject.org/wiki/Packaging/NamingGuidelines
Version Tag 要是数字才行
pcmanfm-0.3.0-beta3 算是 Pre-release packages
(Version 中包含 “alpha”, “beta”, “rc”, “cvs”)
我们不能直接用在 Version 中,beta3 的部份要改放到 Release 中
Release Tag for Pre-Release Packages:
格式: 0.%{X}.%{alphatag}
0 不变
%{X} 从 1 开始递增
%{alphatag} 来自於 Version Tag 中的字串
所以 pcmanfm-0.3.0-beta3 的 Release Tag 就是 0.1.beta3
至於后面的 Dist Tag (%{?dist}) 则是给 mock build 时用的
Dist Tag 请参考: http://fedoraproject.org/wiki/Packaging/DistTag
2.2.Group、License、URL、Source、Patch 及 BuildRoot
Group: Applications/System
License: GPL
URL: http://pcmanfm.sourceforge.net
Source0: http://jaist.dl.sourceforge.net/sourceforge/pcmanfm/pcmanfm-0.3.0-beta3.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Group 部份请参考:
/usr/share/doc/rpm-*/GROUPS 或是 http://fedoraproject.org/wiki/RPMGroups
Source 部份,最好是包含整个网址,而不要只有档名而已
若有好几个 Source 则用 Source0 Source1 Source2 … 依此类推
若有 Patch 档就需要用到 (例: Patch0: pcmanfm-0.3.0-beta3-Makefile.patch)
若有好几个 Pacth 则用 Patch0 Patch1 Patch2 … 依此类推
必要时需要自己制作 patch 档案,例:
cd ~/rpmbuild/BUILD/pcmanfm-0.3.0-beta3
cp Makefile Makefile.orig
然后修改 Makefile
cd ~/rpmbuild/BUILD
gendiff pcmanfm-0.3.0-beta3 .Makefile
2.3.BuildRequires 及 Requires
BuildRequires: automake >= 1.9, gtk2-devel >= 2.6, gamin-devel
Requires: gtk2 >= 2.6, gamin
BuildRequires 及 Requires 的部份就要看原作者是否有提到需要哪些套件
不然,就得从 mock build 时的 build.log 中
慢慢去找出所需要的 BuildRequires 及 Requires
2.4.辳cription
辳cription
PCMan File Manager
An extremly fast and lightweight file manager which features tabbed browsing
and user-friendly interface
Features:
Extremly fast and lightweight
Can be started in one second on normal machine
Tabbed browsing (Similar to Firefox)
Drag & Drop support
Files can be dragged among tabs
Load large directories in reasonable time
File association support (Default application)
Basic thumbnail support
Bookmarks support
Handles non-UTF-8 encoded filenames correctly
Provide icon view and detailed list view
Standard compliant (Follows FreeDesktop.org)
Clean and user-friendly interface (GTK 2)
辳cription 要注意的是,每一行最长不要超过 79 个字元
2.5.%changelog
%changelog
* Fri Aug 18 2006 Chung-Yen Chang - 0.3.0-0.1.beta3
- Initial RPM release
%changelog 部份,就是日期、打包者的姓名及 E-mail 等等
最后面则是要包含这次的 %{version}-%{release}
若有使用 Epoch Tag 则是 %{Epoch}:%{version}-%{release}
2.6.%prep
%prep
%setup -q -n pcmanfm-0.3.0-beta3

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!