?? 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 + -