debian官網參考資料: debian-policy-manual
該目錄包含了所有構建deb包需要的檔案,例如changelog、control、rules等
可以通過devscripts自動或者手動的方式來生成這些檔案
在/etc/apt/sources.list
檔案或/etc/apt/sources.list.d/
下的.list檔案中新增如下的軟體源配置, 然後通過# apt-get source package
獲取軟體源中的原始碼檔案。一般地,會有xx.orig.tar.gz和xx.debian.tar.gz和xx.dsc三個檔案以及乙個原始碼目錄。如果沒有原始碼目錄,就自行解壓dpkg-source -x *.dsc
。最終可以在原始碼目錄中看到debian/目錄。
deb-src xenial main restricted
必須檔案
這個檔案記錄了codename,版本號,發行日誌,開發人員簽名,發行日期等重要資訊
版本號必須遞增,且必須填寫一次發行日誌
urgency重要程度一般有low
/medium
/high
/critical
注意,如果bts(bug tracing system)平台上的bug在這次原始碼修改中修復了,可以新增closes: bug#nnnnn
欄位到發行日誌資訊中,將觸發bts平台自動關閉對應bug
發行日誌示例如下,其中方括號包含的內容是我寫的注釋
debconf[軟體包名] (1.5.58[版本號]) unstable[codename]; urgency=medium[重要程度]
show choices for teletype/readline boolean questions (closes: #802840).
move bash completion file to /usr/share/bash-completion/completions/.
– colin watson [email protected][簽名] sun, 08 nov 2015 03:27:10 +0000[日期]
這個control檔案可以算是最最重要的東西了
幾乎記錄了原始碼檔案和其所生成的二進位製包的所有資訊,包括安裝依賴,原始碼編譯依賴,軟體包描述等
每個二進位製包都會記錄在control檔案中,包括其安裝依賴,軟體包描述等
原始碼域中的以下通用字段
source (mandatory)【原始碼包名】
maintainer (mandatory)【維護者】
uploaders【上傳者】
section (recommended)【所屬元件-一般要求填寫,比如utils,misc,python等】
priority (recommended)【重要程度】
build-depends et al【編譯依賴】
standards-version (mandatory)【標準版本號】
homepage【主頁】
version control system (vcs) fields【版本控制系統】
testsuite【測試套件】
rules-requires-root【要求提權的一些操作,比如binary-target, 也可以是no】
二進位製包域中的一些字段
package (mandatory)【包名-必須有】
architecture (mandatory)【架構,比如arm64/amd64/all】
section (recommended)
priority (recommended)
essential【如果設定這裡為true,那麼這個包會禁止解除安裝,但可以公升降級】
depends et al【安裝依賴】
description (mandatory)【描述】
homepage
built-using【用來包含另乙個原始碼包中的二進位製包,**沒用過, 不太了解**】
package-type【二進位製包型別,有deb和udeb,注意deb的話一般不寫!】
control中也支援一些內建變數,沒用過,不太了解…
rules檔案是一種類似makefile的描述編譯規則的檔案
必須有可執行許可權,且要在第一行寫上#! /usr/bin/make -f
必須在rules中完成原始碼編譯和二進位製包打包工作
執行make -f debian/rules args...
或./debian/rules args
應該保持一致
rules中最重要的的幾個方法,在編包過程中會由dpkg-buildpackage
呼叫這幾個方法:
clean, binary, binary-arch, binary-indep, build, build-arch and build-indep
rules檔案中的命令不應該要求和使用者互動,否則無法自動完成編譯
rules檔案中的幾個常用編譯目標:
build:
build目標應該完成所有的配置和編譯工作build-arch:需要互動的配置工作應該在編譯開始前完成
build階段不應該要求提權
build階段可能需要先呼叫clean目標清理下環境
可以通過在build完成時生成乙個時間戳build-stamp檔案來避免每次重新編譯導致無意義的等待
應該完成所有架構相關的配置和編譯工作binary\binary-arch\binary-indep:不能提權
build目標可以依賴build-arch目標
binary:所有二進位製包的配置和編譯工作clean:binary由架構相關的binary-arch和架構無關的binary-indep一起組成
binary目標可以被binary-arch或者binary-indep依賴,避免編譯未完成
binary呼叫dpkg-deb完成二進位製包的打包工作,生成的deb包將放在原始碼目錄的根目錄下
binary-*兩個目標必須存在,且必須成功
clean目標應該把binary和build目標生成的檔案和做的改動都還原例如寫乙個foo.install檔案,裡面內容如下,其效果就是將二進位製包名為foo的deb包中的usr/lib/目錄下的***安裝到系統的/usr/lib/目錄下,有點像clean目標不應該用來刪除原始碼根目錄下的檔案,應該其可能已經存在與上游原始碼壓縮包中(如果要刪掉,應該重新壓縮原始碼包)
# install -d
命令
這個檔案是dh_install命令呼叫的,所以在rules檔案中不能將dh_install
重寫為空
如果原始碼包只生成乙個二進位制deb包,可以直接命名為install
usr/lib/*** /usr/lib/
像install檔案一樣,可以為foo二進位製包命名為foo.postinst——這樣在安裝foo二進位製包時才會呼叫這個foo.postinst
安裝後執行,用得比較多——可用來配置、啟動你的程式
需要可執行許可權
可以像普通shell指令碼一樣寫。最好借用標準的postinst模板,然後自己重寫其中的安裝後執行的函式
如上,不過是安裝前執行的,可用來提前清理環境準備安裝
也最好採用模板來改
如上,解除安裝前執行,用來停止服務、程序準備解除安裝
如上,解除安裝後執行,用來清理殘餘檔案
乙個語言國際化模板,用來翻譯顯示文字,可以參考這裡
這個目錄僅在debian/source/format檔案中寫的是3.0 (quilt)
時會有,用來存放quilt
管理的所有補丁。quilt是一種針對debian軟體包的本地版本控制管理工具。
3 程序目錄下常用檔案介紹
proc目錄下所有以數字全名的目錄,都有乙個程序id與該目錄名一一對應,如httpd的程序為8293,則可以在 proc 8293目錄下找到該程序的相關資訊 程序退出後該程序id對應的目錄也會消失 2 cwd 3 exe 4 environ cat proc 29941 environ user v...
Linux 刪除目錄下的檔案的常用方法
使用rm rf 目錄名字 命令即可 r 就是向下遞迴,不管有多少級目錄,一併刪除 f 就是直接強行刪除,不作任何提示的意思 注意 f 一定要慎重 1 最經典的方法,刪除當前目錄下的所有型別的檔案 rm f 2 用find命令查詢普通檔案並刪除or用find命令的處理動作將其刪除 find type ...
目錄下各種檔案
opt 工程關於開發環境的引數檔案。如工具條位置等資訊 clw classwizard資訊檔案,實際上是ini檔案的格式,有興趣可以研究一下.有時候classwizard出問題,手工修改clw檔案可以解決.如果此檔案不存在的話,每次用classwizard的時候繪提示你是否重建.dsp develo...