Ubuntu 後續的心得筆記
這篇主要是記錄一些跟開發相關的心得,如編譯、打包 deb 套件,建立 APT Repository 等等
如何編譯及打包 deb 套件
參考:
http://wiki.ubuntu.org.tw/index.php/DebPackaging
在我還沒學會 dpkg-buildpackage 之前,我是利用 checkinstall 這個最簡單的方式來產生 deb 檔
舉個實例來說:
cd /tmp tar zxvf wp_tray-0.5.1.tar.gz cd wp_tray-0.5.1 ./configure make # 在這裡,改用 checkinstall 來取代 make install sudo checkinstall
這樣就會產生 wp-tray 的 deb 套件了,用 checkinstall 是不是很簡單呢?
同樣一個例子,現在,我改用 dpkg-buildpackage 的方式來打包套件
cd /tmp tar zxvf wp_tray-0.5.1.tar.gz cd wp_tray-0.5.1 # 使用 dh-make 來產生 debian/* 的相關檔案 (當然,高手都是直接編寫而不靠 dh-make 的) dh_make --single --email candyz0416@mac.com --copyright GPL -p wp-tray # 接下來就視需要來修改 debian/changelog debian/control debian/rules 等檔案了 # 最後,再下 dpkg-buildpackage 來編譯及打包套件即可 dpkg-buildpackage -rfakeroot -k0x476A8659 # 若有 gpg key 時加 -k[keyid] 最後就會做 sign 的動作
其他一些相關的指令:
透過 apt-get build-dep 指令可以幫我們安裝要編譯某套件所需的相關套件
如我要編譯 mplayer,先執行
sudo apt-get build-dep mplayer
這樣就會安裝編譯 mplayer 所需的相關套件
dpkg-checkbuilddeps 指令則是跟 apt-get build-dep 功能類似的指令
能幫我們找出編譯某套件時,還需要安裝哪些相關套件
要重新編譯打包某個套件時,可以先用 apt-get source 來取得 source code
apt-get source mplayer # 下載完還會自動幫我們解開 cd mplayer-0.99+1.0pre7try2+cvs20060117 # 打包套件 dpkg-buildpackage -rfakeroot -k0x476A8659
若我不是透過 apt-get source 去取得 source code 的話,而是直接下載 source code 及 .dsc 檔
那可以利用 dpkg-source -x 來解開
dpkg-source -x mplayer_0.99+1.0pre7try2+cvs20060117-0ubuntu8.dsc # 然後進去目錄打包套件 cd mplayer-0.99+1.0pre7try2+cvs20060117 dpkg-buildpackage -rfakeroot -k0x476A8659
dpkg-sig 指令可以用來對 deb 套件做 sign 的動作
dpkg-sig --sign candyz wp-tray_0.5.1-2_i386.deb # 然後可以用 gpg --verify 來驗證 gpg --verify wp-tray_0.5.1-2_i386.deb
dpkg-repack 用來對已經安裝的套件重包,再產生 deb 檔
dpkg-repack wp-tray
建立自己的 APT Repository
參考:
http://www.debian.org/doc/manuals/repository-howto/repository-howto.en.html
這裡我以 Trivial Repository 為主來介紹
假設我是使用 ftp 的方式,因此,我架了一個 ftp server,ftp root 位於 /var/ftp
cd /var/ftp # 我建了一個 ubuntu 的目錄來放 ubuntu 相關的檔案 mkdir ubuntu cd ubuntu # 我分別建了 i386 ppc source 三個子目錄來放 i386 binary、powerpc binary 及 source mkdir i386 ppc source
接下來,把所有打包好的 deb 檔分別放到 i386 或 ppc 目錄中,把 source 相關的 dsc or tarball 等,放到 source 目錄中
接下來要產生 Packages、Sources 及 Release 等相關檔案
cd /var/ftp/ubuntu # 產生 Packages 及 Packages.gz # for i386 apt-ftparchive packages i386 > i386/Packages apt-ftparchive packages i386 |gzip -9c > i386/Packages.gz # for powerpc apt-ftparchive packages ppc > ppc/Packages apt-ftparchive packages ppc |gzip -9c > ppc/Packages.gz # 產生 Sources 及 Sources.gz # for source apt-ftparchive sources source > source/Sources apt-ftparchive sources source |gzip -9c > source/Sources.gz # 產生 Release apt-ftparchive release i386 > i386/Release apt-ftparchive release ppc > ppc/Release apt-ftparchive release source > source/Release
但目前產生的 Release 檔只有 MD5Sum 及 SHA1 的值,還缺少一些相關的標頭資訊
Date: Wed, 19 Jul 2006 01:46:11 UTC MD5Sum: cac43f889883a750d5710ca046cd6b16 13197 Packages 0d65b1fe38374275626f98ce2a7d48bb 3687 Packages.gz SHA1: 617df84dbc9c6b90c0fbd3a8cba556807cf9d301 13197 Packages d56cd3ea7cd16fe1a26887577950434c58b36982 3687 Packages.gz
因此,我們必須加入一些相關的 Origin Label Suite Version Architectures Codename Components 等資訊
最後修改完的 Release 檔看起來如下:
Origin: Ubuntu Label: Ubuntu Suite: dapper Version: 6.06 Architectures: i386 Codename: i386 Components: ./ Description: Candyz's Packages for Ubuntu Dapper Date: Wed, 19 Jul 2006 01:46:11 UTC MD5Sum: cac43f889883a750d5710ca046cd6b16 13197 Packages 0d65b1fe38374275626f98ce2a7d48bb 3687 Packages.gz SHA1: 617df84dbc9c6b90c0fbd3a8cba556807cf9d301 13197 Packages d56cd3ea7cd16fe1a26887577950434c58b36982 3687 Packages.gz
最後一個步驟,再產生 Release.gpg 簽名檔即可
gpg -a -b -o i386/Release.gpg i386/Release gpg -a -b -o ppc/Release.gpg ppc/Release gpg -a -b -o source/Release.gpg source/Release
如何把建好的 APT Repository 加到 /etc/apt/sources.list 中
在 /etc/apt/sources.list 中加上:
# for i386 deb ftp://my.ftp.site/ubuntu i386/ # for powerpc deb ftp://my.ftp.site/ubuntu ppc/ # for source deb ftp://my.ftp.site/ubuntu source/
MultiMedia for PowerPC
目前,在我的 iBook 上使用 Ubuntu 已經都可以播放 mov avi wmv 及 rmvb 等格式的檔案了
我是使用 mplayer + 然後加上 jserv 的 patch file – wmv3-support-via-vc1.diff.gz
另外,下載及安裝 https://helixcommunity.org/download.php/1346/realplay-10.0.5.756-linux-2.2-libc6-gcc32-powerpc.bin
把 [RealPlayer]/codecs/ 下的檔案複製一份到 /usr/lib/win32 底下
這樣就可以用 mplayer 來播放 rmvb 的檔案了
我打包好的 mplayer 等相關套件,可以到 這裡 把我的 APT Repository 加進去 sources.list 中,然後利用 apt 來下載
另外,我也打包好了 Gnash 套件,有一些 flash 的網頁在裝了 gnash-plugin 後,就可以看了
不過,到目前為主,YouTube 及 Google Video 還是無法看的