古詩詞大全網 - 個性簽名 - 如何使用源代碼構建可用的Ubuntu軟件包

如何使用源代碼構建可用的Ubuntu軟件包

使用dpkg-source -x

Foo.dsc從Foo.diff.gz和foo.diff.gz創建工作目錄foo:壹個分發中立的源目錄,加上壹個debian目錄和目錄下的meta文件,構成了壹個可以生成二進制deb包的源工作目錄。實際上,來自apt-get

源捕獲的目錄已被dpkg-source -x X. dpkg-source解壓縮

主要的事情——x做的是1。解壓;2.在原始文檔中鍵入foo.diff.gz的補丁。生成的foo目錄中的源文件都已經在deb源碼包中打了補丁。

在foo目錄中,執行dpkg-buildpackage -us。

-uc構建包。-us和-uc參數是無符號的,適合本地構造和本地使用。這個命令有兩個輸出,壹個是二進制deb包,另壹個是源碼包。為什麽需要在這裏生成壹個源碼包?因為您可能會更改壹些文件,所以會生成壹個新的diff.gz來記錄您對原始源代碼的所有更改。發布或保存更改更加方便。下壹次,您只需要對生成的new執行dpkg-source -x。dsc文件生成壹個相同的源代碼。如果您沒有做任何更改,那麽新生成的源包與您構建的源包是壹樣的。您還可以使用參數-b和-S來控制這個構建是只生成二進制包還是只生成源代碼包。

兩個最重要的元文件,debian/control和debian/rules。控制文件決定了將從這個源目錄構建哪些二進制包,壹個源目錄通常是幾個二進制包的輸入源。妳不想生成,就屏蔽。二進制包的運行時依賴也可以在包聲明中看到,控制文件也聲明了構造過程中的依賴,但是妳可以將-d參數傳遞給dpkg-buildpackage來忽略構建依賴。

Debian/rules文件實際上是壹個Makefile。可以執行make -f debian/rules target單獨執行某個目標。規則文件基本上就是對debhelper腳本函數的調用,比如dh_*,負責大部分的構造過程。規則文件中也有常見的清理和安裝目標,基於源碼包在Makefile上做的壹些事情,比如make clean,需要用make-f debian/ruleclean替換。

與傳統的Make過程稍有不同的是,默認情況下,每次生成dpkg-buildpackage,實際上都是從configure.ac開始做,生成壹個configure腳本,生成壹個Makefile,構建壹個源碼,安裝二進制,即使妳沒有更改configure.ac,也沒有更改源碼. c文件。如果構建失敗,您需要嘗試更改源代碼並重新構建。有時您需要反復嘗試這個過程,直到構建成功。如果包裹很大,就要花很長時間。這時候傳入-nc參數讓dpkg-buildpackage保持當前的構建結果,就像傳統的make壹樣,只會從錯誤的地方開始。當然,在終止對源代碼的修改時,需要再次執行不帶-nc參數的命令“dpkg-buildpackage -us -uc”才能完全重建,否則生成源代碼包時可能會出現錯誤。

不要擔心dpkg-buildpackage會自動改變妳的源文件(即通過dpkg-source)

-x文件),當然前提是妳確實更改了“源”文件,比如用configura.ac代替configure,用dkms.confin代替dkms.conf。

構建軟件時最常做的事情是調整。/根據您自己系統的要求配置參數,例如–- enable-XXX或–- disable-XXX。在規則文件中,您可以通過帶有override前綴的目標來定制默認目標的參數,例如override_dh_auto_xconfigure:

修改源碼包時最好通過dch -i生成壹個新的changelog文件。每個變更項的標題部分都標明了本次變更的最新版本號,dpkg-buildpackage的輸出二進制包的版本號實際上是從changelog中提取出來的(不是寫在控制文件中)。