📄 096.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><!-- saved from url=(0056)http://data.km169.net/wsxx/showjq.asp?id=1405&type=LINUX --><html><head><title>New Page 1</title><meta content="text/html; charset=gb2312" http-equiv="Content-Type"><meta content="Microsoft FrontPage 3.0" name="GENERATOR"><meta content="FrontPage.Editor.Document" name="ProgId"><!--webbot bot="HTMLMarkup" startspan TAG="XBOT" --></SCRIPT><!--webbot bot="HTMLMarkup" endspan--><style>A:link { COLOR: #4444ff; TEXT-DECORATION: underline}A:visited { COLOR: #4444ff; TEXT-DECORATION: underline}A:active { TEXT-DECORATION: none}A:hover { COLOR: #ff0000; TEXT-DECORATION: none}BODY { COLOR: #505050; FONT-FAMILY: 宋体; FONT-SIZE: 9pt}TD { FONT-FAMILY: 宋体; FONT-SIZE: 9pt}TD.a { FONT-FAMILY: 宋体; FONT-SIZE: 9pt}TD.b { FONT-FAMILY: 宋体; FONT-SIZE: 11pt; font-color: #ff0000}.other1 { FONT-SIZE: 9pt; LETTER-SPACING: 0px; LINE-HEIGHT: 18px}.other2 { FONT-SIZE: 10.5pt}</style></head><body bgColor="#FFFFFF" leftMargin="7" topMargin="7"><hr SIZE="0"><p><b><font color="#fe3a42">标题: ■ </font><font color="#9b004e"> </font>RPM HOWTO (RPM at Idle) : Building RPMs</b><br>姓名 :Donnie Barnes<br>Email:<br>地址 :djb@redhat.com<br>转摘 :http://member.netease.com/</p><p align="center"><a href="linux.htm">返回</a></p><hr SIZE="0"><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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -