devscripts 系列: mk-build-deps
devscripts 是給 Debian developer 用的一些好用工具的集合,今天要介紹的是 mk-build-deps
Debian distribution 中包含了許多預先編譯好的 deb 檔,通常我們只要 apt-get install 安裝即可,但是當我們需要修改編譯參數或是製作新版本的套件時,就會需要 apt-get source 取得 source package 自行編譯。要製作 deb 時會要求先安裝一些相依套件,通常是 libfoo-dev 等,此時可以用 apt-get build-dep 自動安裝相依套件。
麻煩的地方是,透過 apt-get build-dep 安裝的套件並不是因為跟任何套件有相依性才被安裝的,相等於直接 apt-get install,因此不會在你編譯完不需要的時候自動移除。如果時常要編一些東西的話,常常系統上會裝滿了許多 libxxx-dev 難以整理。有一個技巧就是利用 製作 ,把編譯需要的套件都包含進去,以後不需要了只要移除這個 metapackage 就可以把所有相依套件移除乾淨。
mk-build-deps 就是把這個技巧自動化的工具,使用範例如下:
- % mk-build-deps network-manager-gnome
- dh_testdir
- dh_testroot
- dh_clean -k
- dh_testdir
- dh_testroot
- dh_install
- dh_installdocs
- dh_installchangelogs
- dh_compress
- dh_fixperms
- dh_installdeb
- dh_gencontrol
- dh_md5sums
- dh_builddeb
- dpkg-deb: building package
network-manager-applet-build-deps' in
../network-manager-applet-build-deps_0.6.6-2_all.deb'. The package has been created.
- Attention, the package has been created in the current directory,
- not in ".." as indicated by the message above!
% dpkg -f network-manager-applet-build-deps_0.6.6-2_all.deb depends
- autotools-dev, cdbs, debhelper (>= 5.0.0), docbook-to-man, intltool,
- libdbus-glib-1-dev (>= 0.60), libgconf2-dev, libglade2-dev, libglib2.0-dev
- (>= 2.10), libgnome-keyring-dev, libgnome2-dev, libgnomeui-dev,
- libgtk2.0-dev, libiw-dev (>= 27+28pre9), libnm-util-dev (>= 0.6.6),
- libnotify-dev (>= 0.3.0), network-manager-dev (>= 0.6.6), pkg-config
而 Frank Lichtenheld 更整理了一個 apt 可以直接安裝已經製作好的 build-dep 套件!只要加入以下到 sources.list 即可:
- deb