debian目錄下常用檔案的介紹

2021-10-14 01:23:08 字數 4083 閱讀 7555

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階段不應該要求提權

build階段可能需要先呼叫clean目標清理下環境

可以通過在build完成時生成乙個時間戳build-stamp檔案來避免每次重新編譯導致無意義的等待

build-arch:

應該完成所有架構相關的配置和編譯工作

不能提權

build目標可以依賴build-arch目標

binary\binary-arch\binary-indep:

binary:所有二進位製包的配置和編譯工作

binary由架構相關的binary-arch和架構無關的binary-indep一起組成

binary目標可以被binary-arch或者binary-indep依賴,避免編譯未完成

binary呼叫dpkg-deb完成二進位製包的打包工作,生成的deb包將放在原始碼目錄的根目錄下

binary-*兩個目標必須存在,且必須成功

clean:

clean目標應該把binary和build目標生成的檔案和做的改動都還原

clean目標不應該用來刪除原始碼根目錄下的檔案,應該其可能已經存在與上游原始碼壓縮包中(如果要刪掉,應該重新壓縮原始碼包)

例如寫乙個foo.install檔案,裡面內容如下,其效果就是將二進位製包名為foo的deb包中的usr/lib/目錄下的***安裝到系統的/usr/lib/目錄下,有點像# 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...