📄 096.htm
字号:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->Linux HowTo 中译版-->RPM HOWTO (RPM at Idle) : Building RPMs</TITLE>
<META NAME="keywords" CONTENT=" Linux HowTo 中译版 RPM HOWTO (RPM at Idle) : Building RPMs">
<META NAME="description" CONTENT=" - Linux HowTo 中译版 - RPM HOWTO (RPM at Idle) : Building RPMs">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋体"}
.tt2 {font: 12pt/15pt "宋体"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%" bgcolor="#e0e0e0"><strong><A HREF="097.htm">后一页</A><BR>
<A HREF="095.htm">前一页</A><BR>
<A HREF="index.html">回目录</A><BR>
<A HREF="../../../../index.htm">回首页</A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷体_GB2312">RPM HOWTO (RPM at Idle) : Building RPMs</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
姓名:Donnie Barnes<br>
Email:<br>
地址 :djb@redhat.com<br>
转摘 :http://member.netease.com/</p>
<BR>
<BR>
<hr SIZE="0">
<BR>
<p><br>
<br>
6. Building RPMs <br>
如果您可以自个儿取得所需的软体,那麽建造 RPM
档案也是非常简单的。 <br>
<br>
建造 RPM 档案的基本步骤如下: <br>
<br>
确定您的 /etc/rpmrc 已经符合系统所需, 完成设定。 <br>
取回所要建造的 source code。 <br>
进行所需的 source 档案 patch 动作, 以使得我们能顺利地 build
整个程式。 <br>
为程式套件撰写一份 spec 档案。 <br>
确认每个档案都在正确的目录位置。 <br>
使用 RPM 来 build 整个程式套件。 <br>
<br>
如果一切操作正确, RPM 便能顺利 build 完成 binary 与 source
程式套件。 <br>
<br>
6.1. The rpmrc File <br>
目前为止, RPM 系统唯一的设定档, 是透过 /etc/rpmrc
档案来管理。其内容□例如下: <br>
<br>
require_vendor: 1 <br>
distribution: I roll my own! <br>
require_distribution: 1 <br>
topdir: /usr/src/me <br>
vendor: Mickiesoft <br>
packager: Mickeysoft Packaging Account <packages@mickiesoft.com> <br>
<br>
optflags: i386 -O2 -m486 -fno-strength-reduce <br>
optflags: alpha -O2 <br>
optflags: sparc -O2 <br>
<br>
signature: pgp <br>
pgp_name: Mickeysoft Packaging Account <br>
pgp_path: /home/packages/.pgp <br>
<br>
tmppath: /usr/tmp <br>
<br>
<br>
档案中的 require_vendor 这一行叙述, 用以控制 RPM 是否须要找寻 vendor
那一行叙述, 而 verdor 的资讯可能来自 /etc/rpmrc 或是 spec 档案的
header 处。 如果您把上述的号码改为 0, 便能把这项寻找功能关闭。
这样的设定方式,同样适用於 require_distribution 与 require_group
的叙述上。 <br>
<br>
接下来, 我们看到 distribution 这一行, 您可以在此设定,
或是日後在 spec 档案的 header 处设定。 当我们在某个 distribution 上
build 程式套件时,就算不需要查询设定, 此行内容的设定正确,
也是能够带来许多便利。 vendor 那一行的作用, 和上述的 distribution
非常相似,但其内容并不限定 ( 例如是 Joe's Software 或 Rock Music Emporium
)。 <br>
<br>
RPM 目前支援「多平台架构」的程式套件 build 功能, 我们可以在 rpmrc
档案里指定 ``optflags'' 变数, 当进行程式套件 build
动作时,便可依据所需的平台类型, 应用特定的变数内容。
我们将会在接下去的章节里,说明如何使用这些变数。 <br>
<br>
除了上述的 macro 设定外, 还有许多其他的设定方式, 您可以使用:
<br>
<br>
rpm --showrc <br>
<br>
来查看系统的 tag 与可供使用的 flag 有哪些。 <br>
<br>
6.2. The Spec File <br>
在此我们将讨论 spec 档案的设定。 build 一个程式套件时,
我们需要使用到 spec 档案, 其内容为该程式套件的说明,
额外还包括一些指令,用以指示整个 build 的过程,
还有一份档案列表,
用以表示程式套件中的档案,分别被安装到哪里。 <br>
<br>
spec 档案的命名方式, 最好是遵循标准的惯例, 其格式应该为 package
name-dash-version number-dash-release number-dot-spec。 <br>
<br>
这里我们举一个小型的 spec 档案为例 (vim-3.0-1.spec): <br>
<br>
Summary: ejects ejectable media and controls auto ejection <br>
Name: eject <br>
Version: 1.4 <br>
Release: 3 <br>
Copyright: GPL <br>
Group: Utilities/System <br>
Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz <br>
Patch: eject-1.4-make.patch <br>
Patch1: eject-1.4-jaz.patch <br>
%description <br>
This program allows the user to eject media that is autoejecting like <br>
CD-ROMs, Jaz and Zip drives, and floppy drives on SPARC machines. <br>
<br>
%prep <br>
%setup <br>
%patch -p1 <br>
%patch1 -p1 <br>
<br>
%build <br>
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" <br>
<br>
%install <br>
install -s -m 755 -o 0 -g 0 eject /usr/bin/eject <br>
install -m 644 -o 0 -g 0 eject.1 /usr/man/man1 <br>
<br>
%files <br>
%doc README COPYING ChangeLog <br>
<br>
/usr/bin/eject <br>
/usr/man/man1/eject.1 <br>
<br>
<br>
6.3. The Header <br>
档案 header 的部份, 有几个特定的栏位内容,
您必须加以设定完成,另外还有几点注意事项。
您必须设定完成的栏位内容如下: <br>
<br>
Summary: 以一行长度的描述, 来说明程式套件的内容。 <br>
Name: 这个档案名称必须与您准备使用的 rpm 档名一致。 <br>
Version: 这个版本名称必须与您准备使用的 rpm 档名一致。 <br>
Release: 这个发行序号必须与您准备使用的 rpm 档名一致。 (
也就是说, 如果我们完成一个程式套件,
但事後发现它有些小小的问题,必须重新 build 一次,
此时新的程式套件, 其发行序号便是 2 号 )。 <br>
Icon: 如果您使用了其他高阶的安装工具程式 ( 像是 Red Hat 的 ``glint''
程式 ), 那麽这里可以指定其相对应的图示档,它必须是一个 gif
档案, 而且必须位於 SOURCES 目录。 <br>
Source: 这里指定了那些「未经处理过的 source 档案」的 HOME 目录,
当您想要重新取得 source 档案,
或是检察是否有新版本时,就需要用到这个设定。 注意事项:
这里的档名, 「务必」与您系统上的档案名称一致 ( 也就是说,
下载 source 档案後, 不要去变更其档案名称 )。同时,
您可以指定一个以上的 source 档案, 方式如下: <br>
Source0: blah-0.tar.gz <br>
Source1: blah-1.tar.gz <br>
Source2: fooblah.tar.gz <br>
<br>
这些档案都会到 SOURCES 目录底下 ( 相关的目录结构说明,会在後面的
"The Source Directory Tree" 章节里加以讨论 )。 <br>
Patch: 如果您需要重新下载 patch
档案,那麽其目录位置设定於此。注意事项: 这里的档名,
必须与您系统上使用的 patch 档案名称相符,另一方面, 和前述多个
source 档案的设定一样, 您也可以指定多个 patch 档案名称。
其格式□例如下: <br>
Patch0: blah-0.patch <br>
Patch1: blah-1.patch <br>
Patch2: fooblah.patch <br>
<br>
这些档案都会到 SOURCES 目录底下。 <br>
Copyright: 这里的设定, 用以说明程式套件采用何种版权声明。像 GPL、
BSD、 MIT、 public domain、 distributable、 commercial
等,都是您可以指定的。 <br>
BuildRoot: 您可以指定一个目录,它会被当作是 build 与 install
新程式套件的 ``root'' 目录,如果您想在实际安装之前,
先行测试程式内容, 可以善用此项设定。 <br>
Group: 这里的设定, 用於高阶的安装工具程式 ( 例如 Red Hat 的 ``glint''
程式 ) 当中, 用以说明程式所属的群组位置。目前的群组架构,
大致如下所述: <br>
Applications <br>
Communications <br>
Editors <br>
Emacs <br>
Engineering <br>
Spreadsheets <br>
Databases <br>
Graphics <br>
Networking <br>
Mail <br>
Math <br>
News <br>
Publishing <br>
TeX <br>
Base <br>
Kernel <br>
Utilities <br>
Archiving <br>
Console <br>
File <br>
System <br>
Terminal <br>
Text <br>
Daemons <br>
Documentation <br>
X11 <br>
XFree86 <br>
Servers <br>
Applications <br>
Graphics <br>
Networking <br>
Games <br>
Strategy <br>
Video <br>
Amusements <br>
Utilities <br>
Libraries <br>
Window Managers <br>
Libraries <br>
Networking <br>
Admin <br>
Daemons <br>
News <br>
Utilities <br>
Development <br>
Debuggers <br>
Libraries <br>
Libc <br>
Languages <br>
Fortran <br>
Tcl <br>
Building <br>
Version Control <br>
Tools <br>
Shells <br>
Games <br>
<br>
%description 这个并非真的是 header
项目,但您应该连同上述的项目一同填写,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -