首先,我不會寫有關如何撰寫 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 或者 去找。 如果找不到 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 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏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.