deb包 建包原理

2021-05-24 03:29:53 字數 3678 閱讀 5545

首先,如果你不理解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 ...