找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 服务器 Linux/BSD 查看内容

RPM Rebuild

2009-12-20 13:49| 发布者: admin| 查看: 64| 评论: 0|原作者: 夙玉



首先,我不會寫有關如何撰寫 RPM 的 spec 檔案。有關這個題目在網際網路已經有很多的 howto。撰寫一個
RPM spec 檔案可能很簡單或可能很複雜。這要看你要撰寫 RPM spec 檔案的程式本身。無論如何,這會需要蠻
多時間。

如果我要撰寫一個 RPM spec 檔案的話,我主要參考資料如下:

http://www.rpm.org/max-rpm/

http://www.rpm.org/RPM-HOWTO/
我從來不願意從來源程式安裝。不是因為難。相反的,蠻容易。只是,我不願意搞亂我的系統。如果我將從來源安裝
的程式更新,常常會發生的問題是還有一些檔案沒有被刪除的乾淨。有時候這種情況會產生問題。如果要刪除這個程式,
你怎麼保證所有被安裝的檔案都被刪除?
盡可能,我寧願用 RPM 來安裝。用 RPM 來更新和刪除,RPM 做的很乾淨。
所以,我在這邊想談的是:如果你只有來源程式,是否有辦法將來源程式轉換成 RPM 包裝?
如果我需要一個特定的程式,我會先到安裝 CD 找這程式。找不到的話,我會到
freshmeat
,然後到
sourceforge.net 或者
google
去找。
如果找不到 RPM 包裝,我會去找
rpmfind.
問題是:如果還是找不到這程式的 RPM 包裝呢?該怎麼辦才好?以下討論可能會解決這個問題,就是建 RPM
包裝終究是可能的。
你要建或重建 RPM 之前,你必須先安裝 rpm-build 包裝:
rpm -Uvh rpm-build-4.3.2-21.i386.rpm
註:我使用 Fedora Core 3,所以我會用 Fedora Core 3 所提供的 RPM 包裝。
要建或重建 RPM 的話,專家建議以一般使用者﹝不是 root﹞的身分來做這個工作。但做這個工作之前,
你必須建所謂的 RPM build directories ﹝建 RPM 所需要的子目錄﹞。現在以一般使用者身分登入,
然後建以下子目錄:
mkdir rpmbuild
mkdir rpmbuild/BUILD
mkdir rpmbuild/RPMS
mkdir rpmbuild/RPMS/athlon
mkdir rpmbuild/RPMS/i386
mkdir rpmbuild/RPMS/i486
mkdir rpmbuild/RPMS/i586
mkdir rpmbuild/RPMS/i686
mkdir rpmbuild/RPMS/noarch
mkdir rpmbuild/SOURCES
mkdir rpmbuild/SPECS
mkdir rpmbuild/SRPMS
現在建一個檔案,檔名為 .rpmmacros ﹝請注意這是所謂的 dot file,就是檔案名稱第一個字元是一個句點﹞,內容為:
%_topdir /home/username/rpmbuild
username 應該改為真正一個使用者的帳號名稱。
我們現在已經就緒建 RPM 包裝了。
Source RPM
如果你想安裝
ClamAV
防毒程式,從

crash-hat
你可以下載 RPM 包裝。
這個地方也提供 source rpm (.src.rpm)。我自己喜歡下載 source RPM 然後重建一個 RPM。這樣的做法是
完全針對我的系統來編譯。
重建就執行以下指令:
rpmbuild --rebuild clamav-0.83-1.src.rpm
重建 source RPM 之後,會建三個檔案如下:
rpmbuild/RPMS/i386/clamav-0.83-1.i386.rpm
rpmbuild/RPMS/i386/clamav-milter-0.83-1.i386.rpm
rpmbuild/RPMS/i386/clamav-devel-0.83-1.i386.rpm
Source Tarball with spec file
假如你想安裝
SpamAssassin

在這網頁沒有提供 RPM 包裝。但是所提供的 source tarball 已包含了 RPM spec 檔﹝Mail-SpamAssassin-3.0.2.tar.bz2
和 Mail-SpamAssassin-3.0.2.tar.gz﹞。
你怎麼知道在 source tarball 裡有 RPM spec 檔?拿上段兩個檔案做例子,執行以下指令就會知道的:
tar fzt Mail-SpamAssassin-3.0.2.tar.gz | grep .spec
tar fjt Mail-SpamAssassin-3.0.2.tar.bz2 | grep .spec
(注:有RPM档的tar.gz\tar.bz,才能被rpmbuild,也就是说不是所有的tarball都能被rpmbuild,应该是这样,我非本文原作者,在此添了这句话,提醒自己罢了)
用這種方式建 RPM 包裝:
rpmbuild -tb Mail-SpamAssassin-3.0.2.tar.gz
rpmbuild -tb --define "srcext .bz2" Mail-SpamAssassin-3.0.2.tar.bz2
Source tarball without spec file
我上面已提過,我不喜歡從來源程式安裝。但是來源程式沒有 spec 檔案,怎麼辦?請你安裝
CheckInstall
讓它幫你建 RPM。
建 RPM 包裝的程序如下:
tar xvfz program_name-version.tar.gz
cd program_name-version
./configure
make
下一部本來要下:
make install
但是,這一次應該下:
checkinstall
Perl Modules
我好討厭 perl!要管理在系統已經安裝的 perl module 包裝是相當麻煩的事。我絕對拒絕從來源程式安裝
perl modules。因為這樣做會產生很多問題。如果你用來源程式更新的話,有可能你的應用程式已經不正常的運
作了。
但是我需要一個特定的 perl module 包裝。哪我該怎麼辦?譬如,在我們學校我們使用
OpenWebMail
來處理我們的電子郵件。但是 OpenWebMail 需要一個
perl module
Text-Iconv
。 因為我不喜歡從來源程
式安裝,所以我到網際網路找 Text-Iconv 的 RPM。我下載和安裝之後,OpenWebMail 仍然抱怨找不到 Text-Iconv。
抓頭了好幾天之後,我才發現這個 perl-Text-Iconv 的 RPM 包裝是在不同的 perl 版本編譯的。所以沒有用。
現在怎麼辦?
我終於找到
cpan2rpm
這個程式幫我解決這個問題。將這個
程式下載和安裝。然後執行:
cpan2rpm Text-Iconv-1.4.tar.gz
這樣就會產生以下兩個檔案:
rpmbuild/RPMS/i386/perl-Text-Iconv-1.4-1.i386.rpm
rpmbuild/SRPMS/perl-Text-Iconv-1.4.1.src.rpm
現在你可以沒有問題的安裝這個 RPM 包裝了。
蔡由世神父
2005/03/21
另外可参见:
http://www.howtoforge.com/installing-courier-imap-courier-authlib-maildrop-fedora-redhat-centos












最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 03:20 , Processed in 0.231937 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部