二.典型spec文件分析 通過第一部分的介紹,我們對軟體包的管理以及spec文件的一些細節應該掌握的差不多了,接下來通過分析kaffeine.spec(kaffeine是linux平台下的媒體播放器)文件來讓讀者朋友實踐一回spec文件的規範和書寫。 Kaffeine.spec文件內容如下: [quotec]%define debug_package %{nil} Name: kaffeine Version: 0.4.3 Release: 25 Summary: A xine-based Media Player for KDE Group: Applications/Multimedia License: GPL URL: http://kaffeine.sourceforge.net/ Source0: kaffeine-0.4.3.tar.bz2 Source1: logo.png Source2: icon.tgz Source3: kaffeine.desktop Source4: codecs.tgz Patch: kaffeine-0.4.3-fix-hide-crash.patch Patch1:kaffeine-0.4.3-without-wizard.patch BuildRoot: /var/tmp/kaffeine-root %description Kaffeine is a xine based media player for KDE3. It plays back CDs, DVDs, and VCDs. It also decodes multimedia files like AVI, MOV, WMV, and MP3 from local disk drives, and displays multimedia streamed over the Internet. It interprets many of the most common multimedia formats available - and some of the most uncommon formats, too. Additionally, Kaffeine is fully integrated in KDE3, it supports Drag and Drop and provides an editable playlist, a bookmark system, a Konqueror plugin, a Mozilla plugin, OSD an much more.[/quotec]
以上這部分就是我們第一部分所說的文件頭。這一部分主要包括軟體包的名稱、版本、源代碼和patch等信息,通過這些關鍵字我們可以一目了然。查看以上內容,我們會全面了解該軟體包。 接下來的這一個段就是核心部分,涉及到解包、補丁、編譯、安裝的過程。 [quotec]%prep %setup -q %patch -p1 %patch1 -p1 %Build make -f admin/Makefile.common cvs ./configure --prefix=/usr make #for mo files pushd po rm *.gmo make popd %install mkdir -p $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/share/services cp $RPM_BUILD_ROOT/usr/share/apps/kaffeine/mms.protocol $RPM_BUILD_ROOT/usr/share/services cp $RPM_BUILD_ROOT/usr/share/apps/kaffeine/rtsp.protocol $RPM_BUILD_ROOT/usr/share/services #mkdir -p $RPM_BUILD_ROOT/usr/lib/firefox/plugins #cp $RPM_BUILD_ROOT/usr/lib/kaffeineplugin/kaffeineplugin.so $RPM_BUILD_ROOT/usr/lib/firefox/plugins cp %{SOURCE1} $RPM_BUILD_ROOT/usr/share/apps/kaffeine rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine.png rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine-pause.png rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine-play.png rm -rf $RPM_BUILD_ROOT/usr/share/icons/hicolor/*/apps/kaffeine-record.png mkdir -p $RPM_BUILD_ROOT/usr/share/icons/crystalsvg tar zxvf %{SOURCE2} -C $RPM_BUILD_ROOT/usr/share/icons/crystalsvg mkdir -p $RPM_BUILD_ROOT/usr/share/applnk/App/Multimedia cp -r %{SOURCE3} $RPM_BUILD_ROOT/usr/share/applnk/App/Multimedia mkdir -p $RPM_BUILD_ROOT/usr/lib/win32 tar zxvf %{SOURCE4} -C $RPM_BUILD_ROOT/usr/lib/win32 %clean rm -rf $RPM_BUILD_ROOT %post ln -s /dev/cdrom /dev/dvd ln -s /dev/cdrom /dev/rdvd %files %defattr(-,root,root) /usr[/quotec] 這部分內容與所要打的包有關係,我們要根據具體情況來寫出編譯過程。這部分內容是最複雜的內容,當然,我們也可以看出,這樣的寫法其實就是在寫一種規範化的腳本,說到腳本,讀者朋友門就應該領會到這部分內容的靈活性了。 [quotec]%changelog * Fri Jul 1 2005 AiLin Yang -0.4.3-25 - modified the fullscreen bottom control panel * Fri Jun 17 2005 xxx -0.4.3-24 - Modified to use xshm as video driver. * Thu Jun 16 2005 AiLin Yang - delete the option of Embed in system tray in configwidget * Tue Jun 14 2005 AiLin Yang - add fullscreen bottom control panel - update kaffine to support my fullscreen bottom control panel[/quotec] 這部分內容可以說是spec文件的最後內容了,它對團隊軟體開發以及後續的軟體維護至關重要,它相當於一個日誌,記錄了所有的基於該軟體包的修改、更新信息。