首先,如果你不理解debian/rules檔案,可以先檢視一下《not your grandpa's debhelper》
一、建立環境(設定環境變數)
二、檢查依賴和衝突
三、用-t選擇乙個目標,或呼叫fakeroot debian/rules clean 清除生成樹。
四、呼叫dpkg-source產生原始碼包(如用-b,產生二進位製包)
五、呼叫debian/rules build,然後fakeroot debian/rules binary-target
六、使用gpg標記.dsc檔案
七、呼叫dpkg-genchanges生成乙個.changes檔案
八、gpg標記.changes檔案
九、如使用-tc,再次呼叫fakeroot debian/rules clean
詳細過程:
一、建立環境
設定環境變數。
二、檢查依賴和衝突
檢查包名、版本號、體系結構等。
三、用-t選擇乙個目標,或呼叫fakeroot debian/rules clean 清除生成樹
呼叫debian/rules中的dh clean。
dh clean 執行的動作是
dh_testdir,測試正確的建包目錄,看debian/control等目錄是否已經存在。
dh_auto_clean,呼叫makefile中clean目標。
dh_clean,對包進行清理,它與dh_auto_clean不同,不會呼叫makefile檔案。
這樣,清理工作就結束了。
四、呼叫dpkg-source產生原始碼包(如用-b,產生二進位製包)
五、呼叫debian/rules build
呼叫debian/rules中dh build。
dh build 執行的動作是
dh_testdir,再次測試正確的建包目錄,看debian/control等目錄是否已經存在。
dh_auto_configure,在建包前進行配置,一般它會尋找使用者目錄下的configure指令碼並進行呼叫。
dh_auto_build,用於建包,相當於make,使用makefile建立相應的檔案。
dh_auto_test,自動執行makefile中的test或check目標項。
六、呼叫fakeroot debian/rules binary-target(如果使用-s,只建立原始檔,將不執行這一項)
這裡的binary-target是binary、binary-target、binary-indep,binary是預設的,這裡使用預設設定來講。
呼叫debian/rules中dh binary。
dh binary執行的動作是
dh_testroot,確保包是由root建立的,當然你可以使用fakeroot工具。
dh_prep,當建立二進位製包時,先對建包目錄(這裡是debian)、debian/tmp等進行清理。
dh_installdirs,在建包目錄下建立子目錄。
dh_auto_install,自動執行makefile中的make install,預設安裝在debian/下面。
dh_install,把檔案安裝在建包目錄下,這裡有兩種用法,只有一兩個檔案時,用dh_install把這一兩個檔案移到建包目錄的相應位置;當有多個二進位制檔案時,先執行上游檔案包的makefile檔案,再把生成的檔案移入到建包目錄下。
dh_installdocs,安裝文件到建包目錄的usr/share/doc/
dh_installchangelogs,安裝changelogs檔案到建包目錄的usr/share/doc/下
dh_installexamples,在建包目錄下增加example檔案。
dh_installman,man page相關。
dh_installcatalogs,自動新增維護指令碼片段,用於註冊和登出catalogs和supercatalogs。這些指令碼片段將被dh_installdeb插入到維護指令碼檔案中。
dh_installcron,安裝cron指令碼到建包目錄的etc下。
dh_installdebconf,安裝debconf使用的檔案到建包目錄下。
dh_installemacsen,註冊emacs。
dh_installifupdown,安裝網路hook指令碼(if-up、if-down)
dh_installinfo,安裝info檔案到建包目錄的usr/share/info下。
dh_pysupport,新增python支援。
dh_installinit,upstart jobs和init指令碼相關。
dh_installmenu,menu files相關。
dh_installmime,mime相關。
dh_installmodules,註冊核心模組。
dh_installlogcheck,logcheck rulefiles 相關。
dh_installlogrotate,config相關。
dh_installpam,pam相關。
dh_installppp,ppp指令碼相關(ip-up和ip-down)
dh_installudev,udev rules相關。
dh_installwm,註冊到window manager。
dh_installxfonts,註冊x fonts,會新增依賴到control中。
dh_bugfiles,bug相關。
dh_lintian,lintian相關。
dh_gconf,自動產生postinst和prerm片段,用於註冊和登出gconf-schemes。
dh_icons,桌面圖示相關。
dh_perl,計算perl依賴。
dh_usrlocal,當有usr/local目錄時,刪除掉,用維護指令碼片段(安裝時建立子目錄,解除安裝時刪除)來代替。
dh_link,在建包目錄中建立syslinks。
dh_compress,壓縮建包目錄下的檔案,確保新檔案中的符號鏈結被更新。
dh_fixperms,把建包目錄下usr/share/doc下的檔案都chmod 644,把owner給root,把bin、sbin等下的檔案設為可執行,去除所有包中檔案的uid和gid位。
dh_strip,拆分可執行檔案、共享庫、靜態庫。
dh_makeshlibs,自動建立shlibs,呼叫dpkg-gensymbols產生標誌檔案。
dh_shlibdeps,計算出包對共享庫的依賴,呼叫dpkg-shlibdeps。
dh_installdeb,安裝檔案到建包目錄的debian資料夾下(包含postinst、preinst、prerm、preinst等)
dh_gencontrol,呼叫dpkg-gencontrol,產生control files,並以適當的許可權把它們安裝到debian下。
dh_md5sums,生成md5sums檔案,其中包含每個檔案的md5sums。
dh_builddeb,建立debian二進位製包。
七、使用gpg標記.dsc檔案
當然,如果有的話。
八、呼叫dpkg-genchanges生成乙個.changes檔案
生成.changes。
九、gpg標記.changes檔案
這裡的gpg是你提前設定的,在debian/control檔案中可以看到。
十、如使用-tc,再次呼叫fakeroot debian/rules clean
dh clean,與第三步相似,用於清理。
deb包 建包原理
首先,如果你不理解debian rules檔案,可以先檢視一下 not your grandpa s debhelper 一 建立環境 設定環境變數 二 檢查依賴和衝突 三 用 t選擇乙個目標,或呼叫fakeroot debian rules clean 清除生成樹。四 呼叫dpkg source產...
將 rpm包轉 deb包,並檢視 deb包內容
使用的是debian系統 1.alien有正常的debian儲存庫,我們可以安裝它 apt get install alien 2.將.rpm包轉為.deb包 alien rpm 檢視alien的其他功能可以 man alien dpkg deb 是用來製作 debian 包的工具,同時也可以檢視 ...
dpkg解除安裝deb包
一 背景 乙個指令碼安裝mysql,結果提示缺少依賴庫,安裝失敗。二 查詢 此時查詢deb檔案已經安裝的情況,得到這個結果 root debian dpkg l grep mysql server iu mysql server 5.7.19 1debian8 amd64 mysql server ...