這一章節是針對非開發者說明 Debian 系統的原理。想要了解更細微詳盡的訊息,請參閱:
以上文件均列在 參考資料, 第 15.1 節。
如果您在尋找比較淺顯易懂的 "how-to",請直接跳到 Debian 套件管理系統, 第 6 章 或其他相關的章節。
本節的寫作是基於 "Debian FAQ" 改寫,適合當作一般 Debian 系統管理者的起步文件。
每個被包裝好的 Debian 套件可以從其中一個 Debian mirror site
映射站台透過
FTP 或 HTTP 取得。
以下的目錄皆可在 Debian 映射站台中的 debian
目錄找到:
dists/
:Contents-*.gz
Packages.gz
仍然存放在這裡。
pool/
:tools/
:doc/
:indices/
:project/
:project/experimental/
:project/orphaned/
:
stable distribution 套件的入口,Debian Woody (3.0r0),被登記到
stable
(符號鏈接指向 woody/
目錄):
stable版本(Debian Woody
(3.0r0))的stable
(連結到woody/
)目錄下紀錄了不同的套件總件:
stable/main/
: 該目錄包含了最近發行的 Debian 系統的套件版本。
這些套件均遵循 Debian Free Software
Guidelines (DFSG)
(它位於
/usr/share/doc/debian/social-contract.txt
需安裝
debian-doc
),它們均可以自由使用和散布。
stable/non-free/
: 經過 DFSG 的驗證而無法稱為 free
的套件皆放在該目錄下。
例如,有些套件的許可證條款 (licenses) 禁止其用於商業的 distribution。有些雖可以再散布,但本身是共享套件而非自由套件。
stable/contrib/
:這部份的軟體本身是 DFSG-free
但由於某些原因使得必須依賴非 DFSG-free 的軟體才能安裝使用。
除了上述的目錄外,實體套件存在的位置為 pool
目錄(pool
目錄, 第 2.1.10 節)。
現階段 stable 版本的臭蟲報告均列在 Stable
Problems
網頁上。
testing distribution 的套件入口,Debian Sarge,在
unstable 中通過某種程度的測試後會登記到 testing
(符號鏈接指向 sarge/
)
目錄。現在,除了上述目錄,新上載的套件的實體儲存位置為 pool
目錄
(pool
目錄, 第 2.1.10 節)。在
testing/
下同樣有 main
, contrib
,和
non-free
子目錄,它們的作用與 stable/
中的一樣。
這些套件必須可以同時運行於所有架構並且能正常安裝。比起在 unstable
中的對應版本,它們必需有更少的 release-critical 錯誤。這個種方式,我們將
testing 視為更接近發行的候選版本。有關 testing
機制的更多資訊請參閱 http://www.debian.org/devel/testing
。
testing distribution 的最新消息發佈在下列站台:
update
excuses
testing
problems
release-critical
bugs
base system
bugs
bugs in standard
and task packages
other bugs and bug-squashing party
notes
unstable distribution 的套件入口,總是被命名為
"Sid",被登記到 unstable
(符號鏈接指向
sid/
) 目錄,上傳至 Debian archive 的套件在被移至
testing/
前就一直放在這兒。新上傳的套件的實體儲存位置為
pool
目錄 (pool
目錄, 第 2.1.10
節)。在 unstable/
下同樣有 main
,
contrib
和 non-free
子目錄, 它們的作用與
stable/
中相同。
unstable distribution 反映了系統最新的開發進展。歡迎廣大用戶使用並測試這些套件,同時也提醒你們這些套件還不完善。使用 unstable distribution 的好處就是你可以獲得 Debian 軟體專案 — 的最新更新,不過新東西也會出新問題,你得好壞兼收 :-)
unstable distribution 的最新臭蟲報告見於 Unstable
Problems
網頁上。
當 testing distribution 足夠成熟了,它便成為
frozen,表示這個版本不再加入新程式,只進行除錯工作。如果需要的話,
dists
目錄中會建立新的 testing 目錄樹,並給予新的開發代號。 frozen
distribution 再經過幾個月的測試、更新、再凍結也稱之為“循環測試”。(最近的
Woody 發佈進程沒有建立 frozen/
的符號鏈接,所以
frozen 並不算 distribution,僅是 testing distribution
的一個開發階段。)
我們將 frozen distribution 中可能延遲套件或整個版本發佈的錯誤都記錄在案,一但錯誤總數低於可接受的最大值,frozen distribution 就晉升成 stable,而新版本發布了,前一個 stable distribution 成為過期版 (obsolete) (並被移至相對應的目錄)。
存在於 dists
目錄下的實體目錄名稱,例如 woody/
和
sarge/
,就是 "開發代號 (codenames)"。當某個 Debian
distribution
處於開發階段,它並沒有版本號碼,取而代之的是開發代號。使用開發代號的目的在於簡化建立
Debian distributions 映射站台的工作(如果真實目錄例如 unstable
突然改名為 stable/
,許多文件都沒必要再次下載)。
現在,stable 是一個指向 Woody 的符號鏈接,testing 是指向 Sarge 的符號鏈接。也就是說 Woody 是當前的 stable distribution, Sarge 是當前的 testing distribution。
unstable/
distribution 是指向 sid/
的永久符號鏈接,即
unstable distribution 總是稱為 Sid 。
已使用過的開發代號有: "Buzz" 用在 release 1.1 , "Rex" 用在 release 1.2 , "Bo" 用在releases 1.3.x , "Hamm" 用在 release 2.0 , "Slink" 用在 release 2.1 , "Potato" 用在 release 2.2 , "Woody" 用在 release 3.0 和 "Sarge" 用在 release 3.1 。
到目前為止它們均出自 Pixar 的電影 玩具總動員 (Toy Story) 。
pool
目錄
過去,套件均放在 dists
目錄下相應的 distribution
子目錄中。這種做法產生了許多問題,例如映射站台進行新版本發佈時大量頻寬被消耗。
現在套件均依原本的套件名稱分類放進一個巨大的池子 "pool"。為了方便管理, pool 目錄下按屬性再分類 (main , contrib ,和 non-free),分類下面再按原本的套件名稱的英文字首字母歸檔。這些目錄包含的文件有:運行於各種系統架構的二進位套件,和生成這些二進制套件的源碼套件。
你可以執行命令 apt-cache showsrc mypackagename ,查看
"Directory:" 行獲知每個套件的存放位置。例如:apache
套件存放在 pool/main/a/apache/
。因為 lib*
的套件數量龐大,它們以特殊的方式歸檔:例如,libpaper
套件存放在
pool/main/libp/libpaper/
。
諸如 apt
等命令訪問的索引文件仍位於 dists
目錄中。而且,直到本文寫作之時,舊的 distributions 套件還沒轉到 pool
目錄,所以你將看到路徑中的 "Directory" 標頭欄中包含有 distribution
名稱如 potato 或 woody。
通常,你大可不必注意這些事情,新版的 apt
和舊版
dpkg-ftp
會自動處理它們。想了解更多資訊,參閱 RFC:
implementation of package pools
。
過去 Sid 並不存在, Debian archive 組織有一個主要的工作流程:它假設當前
unstable 中建立了某個軟體開發項目,它會在整個 distribution
形成一個新的 stable/
時發佈。但是因為很多軟體不是用這個方式在開發,所以一但軟體要發佈時,就必需把整個目錄都搬移到
stable 下。因為在搬移目錄時會用掉大量的頻寬,所以這個流程就顯得很不切實際。
經過幾年的研究摸索,archive 管理員提出一個方案,將未發佈的二進位檔放在一個名為 sid 的特定目錄。由於這些軟體尚未發佈,從那時起,它們就被加入到 unstable 目錄樹。當它們首次發布時,將會建立一個從當前 stable 指向 sid 的鏈接。這個方案的確會使使用者覺得困惑。
有了套件 pool 的幫助(參閱 pool
目錄, 第 2.1.10
節),在 woody distribution
開發過程中,二進位套件均按一定規範存放於 pool 目錄,而與 distribution
無關,當發佈新版本時,就不會再出現大量頻寬被消耗的問題。(不過,開發過程還是會用掉大量頻寬)。
incoming
中的上傳套件
上載的套件在經確認它們是由 Debian 開發者上載的後,會先存放於 http://incoming.debian.org/
(對於那些無維護者上載(Non-Maintainer Upload (NMU))的套件則放入
DELAYED
子目錄)。會有一天,它們將從 incoming/
移入
unstable/
。
在緊急情況下,你可能會等不及它們移入 unstable/
而直接從
incoming.
中下載安裝。
最新的 Debian distribution 存放在任何一個 Debian mirror site
的
debian
目錄下。舊版本的 Debian 如 Slink 存放在 http://archive.debian.org/
或
Debian 映射站台的 debian-archive
目錄下。
舊的 testing 和 unstable 套件存放在 http://snapshot.debian.net/
。
在每個主要目錄樹下(dists/stable/main
、
dists/stable/contrib
、 dists/stable/non-free
、
dists/unstable/main
等)按晶片架構又分了子目錄,每個子目錄中存放著在該晶片架構下編譯的二進位套件。
binary-all/
,存放與架構無關的套件,如 Perl script、純文件等。
binary-platform/
,存放運行於該平台的二進制套件。
請注意,testing 和 unstable
的二進位套件不再存放在這些目錄中,而是放在最上層 pool
目錄中。但為了向下相容,所以在目錄中仍保留有索引文件(Packages
和
Packages.gz
)。
要獲得實際上的二進制架構技術支持,請參閱各發行版的發佈記錄(Release
Notes)。它們放發佈記錄站台 stable
和
testing
。
Debian 系統中包含了所有東西的源碼,不僅如此,許可證條款規定系統中所有的程式必須和其源碼一起發行,或提供源碼。
通常源碼發佈在 source
目錄,該目錄同時處於所有特定平台的目錄中,或是把更新的源碼放在
pool
目錄中(參閱 pool
目錄, 第
2.1.10 節)。對於不太熟悉 Debian archive 目錄結構的用戶,想獲得源碼可以試試
apt-get source mypackagename 命令。
有些套件,如著名的
pine
,由於許可證限制,只提供源碼套件。(最近,pine-tracker
套件提供了一個簡易的安裝方式。)參閱 把套件引入 stable 系統, 第
6.4.10 節 和 包裝套件, 第 13.10
節 教你如何手動編建一個套件。
contrib
和 non-free
目錄中的套件可能不提供源碼,因為它們不算正式 Debian 系統的一部分。
套件通常包含了實現一系列相關命令或特性的所有必需的檔案。Debian 套件有兩種類型:
使用套件管理系統來安裝套件時會用到由套件維護者建立的"相依資訊"。這些相依資訊記錄在每個套件的
control 文件中。例如,包含 GNU C 編譯器 (gcc
)
的套件"相依"於包含連結器 (linker) 和組譯器 (assembler) 的
binutils
套件。如果用戶試圖在沒有安裝 binutils
的情況下安裝
gcc
,套件管理系統(dpkg)就會顯示錯誤信息,告訴你需要安裝
binutils
,並停止安裝 gcc
。(不過,倔強的用戶可以對這個信息視而不見,參閱 dpkg(8)
)。)更多資訊請參閱下面的 套件相依性, 第 2.2.8 節 。
Debian 套件管理工具可用來:
Debian 的"套件",或是 Debian 保存壓縮檔 (archive) 包含了與特定程式或一組相關的程式有關的可執行檔,函式庫,和文件。通常,Debian 保存壓縮檔是以 .deb 做為結尾。 [1]
Debian 二進制套件的格式說明請參閱 deb(5)
的說明文件。由於 deb
的內容是可變的(不同於各個主要 Debian 版本),所以請使用 dpkg-deb(8)
來控管 .deb 檔案。
至少從 Sarge 開始,所有的 Debian 套件檔皆可以透過傳統的 Unix 指令
ar
和 tar
來控制,即使是 dpkg
不存在也沒關係。
Debian 套件檔案名稱是採用以下的規則來命名的:
foo_ver-rev_arch.deb
通常,foo 是套件名稱, ver 是原作釋出的版本 (the upstream version number), rev 是 Debian 釋出的版本,以及 arch 是目的硬體架構。 檔案是很容易更改,這是當然的喔。 您可以執行以下指令來查詢該套件檔案名稱的資訊:
dpkg --info filename
Debian 釋出版本是由 Debian 開發者決定或製作該套件的人。 釋出版本的改變就表示套件有些許的變化。
能被系統管理者修改的檔案都放在 /etc/
目錄下。 再升級套件時,Debian
政策控制了所有的本機設定檔更新動作。
如果預設的設定檔是套件本身所有,則該檔案稱為 "conffile"。 從套件安裝後,如果 conffiles 曾被系統管理者修改過,則套件管理系統將不會更新這些 conffiles,除非系統管理者願意。換句話說,如果 conffile 都未曾修改,則在升級套件的同時也會一併更新 conffile。 對大部份的情況來說,這是值得期許的,因為方便降低 conffiles 的變更程度。
要列出套件的 conffiles,請執行下述的指令:
dpkg --status package
檔案清單則列在 "Conffiles:" 這一行。
您可以閱讀 Debian Policy Manual 中的 "Configuration files" 部份來取得更多資訊。(參閱 參考資料, 第 15.1 節)
Debian maintenance scripts 是一些在安裝前後自動執行的 scripts。連同
control
檔案,這些檔案是一個 Debian 檔案中的 "control"
段落的部份之一。
各個檔案說明:
目前所有的 control 檔案可以在 /var/lib/dpkg/info
目錄下找到。這些檔案關聯於套件 foo 開頭名稱為 "foo"
以及擁有 "preinst", "postinst"...等延伸檔案。該目錄下的
foo.list
紀錄了套件 foo
安裝到系統上的所有檔案。(要注意的是這些檔案的位置是 dpkg
內部運作之一且易被改變的。)
每個Debian套件均被維護者指定了一個優先等級,作為套件管理系統的一個輔助參數,優先等級有:
包含所有必要的系統修護工具。不要刪除這些套件,否則整個系統將受到損壞,甚至無法使用dpkg
恢復。只安裝
Required
級別套件的系統不一定能滿足所有的用途,但它可以正常開機,讓系統管理者安裝想要的軟體。
系統若缺少這類套件,將會運行困難或不好操作。該級別套件並不包括Emacs或X11或TeX或其它大型應用程式,它們只是一些實現系統底層功能的程式。
系統預設安裝就包括了它們。"Standard" 級別套件不包括許多大型應用程式,但它包括 Emacs(它比其它應用程式更低階)和Tex及LaTeX的精巧版(不支援X)。
它們包括X11,TeX完整發布版和許多應用程式。
請注意套件描述中的 "Priority: required", "Section: base"
and "Essential: yes" 這幾個的差異性。"Section: base"
是指該套件在建立新系統時一定要安裝的。大部份這類型的套件皆有
"required" 級別(Priority: required)或至少 "important"
級別(Priority: import)。且多數被標示成 "Essential:
yes"。"Essential: yes"
是指套件管理系統在處理該套件時,必需加入額外的 "暴力" 參數,例如使用
dpkg
來移除這類型的套件。舉個例子,libc6
,
mawk
和 makedev
皆為 "Priority: required"
和 "Section: base" 但並非 "Essential: yes"。
虛擬套件是一個統稱,指的一組具有相近功能的套件。舉個例子,tin
和
trn
都是新聞閱讀軟體,當系統中某個程式需要使用新聞閱讀器工作時就會產會一個關聯關係,它們必須滿足這個關聯,我們也稱之為它們提供了一個叫做
news-reader
的 "虛擬套件"。
又像是,exim
, sendmail
和
postfix
都提供郵件傳輸代理的功能。也可稱之為提供
mail-transport-agent
虛擬套件。如果安裝了其中之一,那麼任何與
mail-transport-agent 有關聯的程式會因為這個虛擬套件的存在而滿足相依性。
Debian
有個類似的機制,如果系統中提供相同的虛擬套件,系統管理員可以指定一個為首選軟體。相關的指令是
update-alternatives
,更詳細的描述參閱 Alternative 指令, 第 6.5.3 節。
Debian套件管理系統有一套套件“依賴性”定義(用一個標誌)用來描述套件需要安裝其他的軟體才能正常工作或作的更好。
各個保留字使用方法的更詳細的訊息請參閱Packaging Manual和the Policy Manual。
注意,dselect
可以對recommends和suggests類套件進行更細部的控制,apt-get
只會簡單的下載安裝depends類套件而不管recommends和suggests>類套件。這兩個程式均正式使用APT作為後端程式。
“pre-depends”是一種特殊關聯關系。對於一個普通套件,不管系統中是否存在它的相依套件,dpkg
都會將它解包。(解包主要指dpkg
從套件中取出安裝文件並放到正確的位置)。如果套件
Pre-Depends 到其他套件,則這些被 Pre-Depends
的套件會要安裝比的套件先被解包和設定。 [2] 這個相依性的用途是為了提供最小風險的升級。
套件有各種狀態:“unknown”,“install”,“remove”,“purge”和“hold”。這些“希望”
標記描述了用戶打算如何操作這些套件(既可以使用dselect
的
"Select",也可以直接使用dpkg
)。
它們的意思是:
有兩種方法阻止套件升級,使用dpkg
,或者在Woody中使用APT。
使用dpkg
,首先導出套件選擇列表:
dpkg --get-selections \* > selections.txt
接著編輯文件selections.txt
,修改想要保留的軟體所在的行,例如libc6
,則將:
libc6 install
改成:
libc6 hold
儲存設定,將它裝入dpkg
資料庫:
dpkg --set-selections < selections.txt
或者,如果你知道要保留的套件名稱,執行:
echo libc6 hold | dpkg --set-selections
這個命令將在每個套件安裝過程中保持該套件不變。
使用dselect
也可以達到同樣的效果。進入[S]elect畫面,找到想阻止其升級的套件,按“=”鍵(或者“H”)。更改在你退出[S]elect畫面後立即生效。
Woody中的APT系統有一個新機制來阻止套件升級,在下載升級檔進程中使用Pin-Priority。參閱幫助頁面apt_preferences(5)
,或閱讀http://www.debian.org/doc/manuals/apt-howto/
或apt-howto
套件。
原始碼套件發布在source目錄中,既可以手動下載可以使用
apt-get source foo
來抓取它們(參閱apt-get(8)
幫助頁面)。
對於foo套件,從原始碼編譯需要foo_*.dsc
、foo_*.tar.gz
和foo_*.diff.gz
檔案(注意,對於由Debian開發的套件,沒有.diff.gz檔案)。
當你得全了這些檔案,如果你這安裝了dpkg-dev
套件,執行:
$ dpkg-source -x foo_version-revision.dsc
它將套件解壓到一個名為foo-version的目錄。
使用下列命令建立二進制套件:
$ cd foo-version $ su -c "apt-get update ; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc
然後:
# su -c "dpkg -i ../foo_version-revision_arch.deb"
安裝新編譯的套件。參閱把套件引入 stable 系統, 第 6.4.10 節。
建立新套件的詳細訊息,參閱New Maintainers'
Guide,該文檔在maint-guide
套件中,或瀏覽http://www.debian.org/doc/manuals/maint-guide/
。
Debian的設計目標之一就是提供一個一致的升級途徑和安全的升級過程,我們致力於舊版本的平順升級,套件在升級過程中會將重要訊息提醒管理者,並提供一個可能的解決方案。你也應該閱讀發布手記(Release
Notes),該文檔描述了升級的詳細情況,它存在所有的Debian光碟中,也可以通過網站訪問http://www.debian.org/releases/stable/releasenotes
或http://www.debian.org/releases/testing/releasenotes
。
Debian 套件管理系統, 第 6 章提供了升級的實用指南,本節只作基礎細節的介紹。
dpkg
它是操作套件檔案的主要工具;參閱dpkg(8)
獲得完整訊息。
dpkg
由幾個原始的輔助程式演化而來。
dpkg-deb(1)
dpkg-ftp(1)
dpkg-mountable(1)
dpkg-split(1)
dpkg-ftp
和dpkg-mountable
已被新的APT系統取代。
APT(the Advanced Packaging Tool)是Debian套件管理系統的進階介面,由幾個名字以
"apt-"
開頭的程式組成。apt-get
、apt-cache
和apt-cdrom
是處理套件的命令列工具,它們也是其它程式的後端程式,如dselect
和aptitude
。
更多訊息,可安裝apt
套件後閱讀apt-get(8)
、apt-cache(8)
、apt-cdrom(8)
、apt.conf(5)
、sources.list(5)
、apt_preferences(5)
(woody)以及/usr/share/doc/apt/guide.html/index.html
。
另一個資源是APT
HOWTO
,如果安裝了apt-howto
包,可在/usr/share/doc/Debian/apt-howto/
中找到它。
apt-get upgrade和apt-get
dist-upgrade只抓取"Depends"類套件,它忽略"Recommend"和"Suggests"類套件,不想這樣的話,可使用dselect
。
dselect
這個程式是Debian套件管理系統中以選單驅動的用戶介面。特別適用於首次安裝和大幅度升級。參閱dselect
, 第 6.2.4 節。
更多訊息,可安裝install-doc
套件後閱讀/usr/share/doc/install-doc/dselect-beginner.en.html
或dselect
Documentation for Beginners
。
Debian系統的核心(文件系統)支持替換使用中文件。當升級新套件時如果該套件中包含daemon安裝,則會在該 RunLevel 設定好並重新啟動它們。Debian系統不需要切換到 single-user 模式就能升級運行中的系統了
如果你手動下載套件到磁碟(這完全沒有必要,請閱讀上面有關dpkg-ftp
或APT的內容),當你完成套件安裝工作後,可以從系統中刪除.deb檔案。
如果是使用APT,這些文件會快取在/var/cache/apt/archives/
目錄中。你可以在完成安裝後刪除它們(apt-get
clean)或者將它們拷貝到另一個機器的/var/cache/apt/archives/
目錄中以備以後的安裝。
dpkg
會對套件的解開、配置、刪除、完全刪除進行記錄,但不能(目前是這樣)記錄在套件操作的過程中終端機發生的事情。
最簡單的解決方法是在執行dpkg
、dselect
、apt-get
等工具的對話中加入script(1)
程式。
init
程式如同所有的Unix一樣,Debian啟動要執行init程式。init的設定檔(/etc/inittab)中指定的第一個執行 script 應該是/etc/init.d/rcS。
而接下來的程序就看 sysv-rc
或 file-rc
套件的安排。假設 sysv-rc
已安裝了(file-rc
包含自己的
/etc/init.d/rcS
script 並使用該檔案取代 rc
目錄下的軟連結來控制那一個 RunLevel 該啟動那一個服務。)
sysv-rc
套件中的 /etc/init.d/rcS
會執行
/etc/rcS.d/
所有的
script,為了進行初使化的動作,例如檢查和掛載檔案系統,載入模組,啟動網路服務,設定系統時間...等。然後,也會執行/etc/rc.boot/
下的檔案(除了以
'.'
開頭的檔案)也確保相容性。後者的目錄通常是留給系統管理員使用的但並不是很贊成使用它。更多訊息參閱
Debian Policy 說明文件中的 初始化系統的提示, 第 9.1
節和System run
levels and init.d scripts
。
Debian 不使用 BSD 風格的 rc.local 目錄。
完成系統啟動進程後,init執行預設的 RunLevel。該 RunLevel 由/etc/inittab中的id指定。Debian 使用 id=2。
Debian 使用以下的 RunLevel:
RunLevel 7, 8 和 9 也可以使用,但當套件安裝時,對應他們的 rc 目錄並不會產生。
telinit
可用來切換 RunLevel。
當切換 RunLevel 時,/etc/rcrunlevel.d/
目錄下的 script
都會被執行。這些 script 檔名的第一個字母決定該 script 執行的方式:script 以
K 開頭的會夾帶 stop 參數執行。script 以
S 開頭的會夾帶 start 參數執行;script
以字母順序來執行,所以 "stop" 會提早 "start" scripts
執行,而跟隨 K 或 S 後的兩個數字決定這些 script
執行順序。
實際上,任意目錄/etc/rcrunlevel.d/
中的script都是指向/etc/init.d/
的軟連結。這些
scripts 都接受參數"restart" and
"force-reload";後者是為了在系統開機後重新啟動服務或強迫他們重讀設定檔。
例如:
# /etc/init.d/exim4 force-reload
自訂 RunLevel 是系統管理者工作。底下的建議適用大部份的服務。 Customizing runlevels is an advanced system administration task. The following advice holds for most services.
加入service到 RunLevel
R中的方法是建立../init.d/service
的軟連結在/etc/rcR.d/Sxyservice
。xy數字必須該套件安裝時被指定的數字。
更改這個軟連結從開頭是S成K就能取消這個服務,而所填的數字是 100 減去 xy。
改用 RunLevel 編輯器 sysv-rc-conf
或
ksysv
會是比較方便的辦法。
移除特定 RunLevel 目錄下的服務的 S
軟連結也是可行的辦法。這樣作並非取消該服務但卻變成一個"懸浮"狀態直到sysv-rc
init
系統有關連到。更改 RunLevel
後,該服務並不會變成"啟動"或"關閉"的狀態,而是看它先前的設定來決定,不論現在是運行中或不是。注意,雖然該服務現在是
"懸浮"
狀態,但當它升級後就會啟動,不管在升級是否在運行或沒有。這是眾所皆知的 Debian
系統的缺點。注意,您也需要保留該服務的 RunLevel 0和6 的 K軟連結。
如果您刪除該服務所有的軟連結,再升級套件後會回復所有的軟連結到預設的狀態。
強烈建議不要更動/etc/rcS.d/
中的任何軟連結。
Debian提供幾種途徑,在不破壞系統的前提下滿足系統管理員各種要求。
dpkg-divert
,參閱dpkg-divert
指令, 第
6.5.1 節。
equivs
,參閱equivs
套件, 第 6.5.2
節。
update-alternative
,參閱Alternative 指令, 第 6.5.3 節。
make-kpkg
可以支援多種啟動載入器。參閱make-kpkg(1)
和Debian標準方式, 第 7.1.1 節。
/usr/local/
目錄下的所有檔案均屬於系統管理者,Debian不會更動它們。/etc
下的大部分(或全部)檔案屬於conffiles,
Debian不會在升級後覆蓋它們,除非系統管理員明確要求覆蓋。
Debian系統是國際化產品,不論是在主控台下還是在X下,它都提供多種語言的字元顯示和輸入支援。許多檔案、說明文件以及系統訊息都被翻譯成各種語言。在安裝過程中,Debian提示用戶選擇安裝語言(有時是當地語言的變異)。
如果你安裝的系統提供的語言特性支援不能滿足你的需要,或者你要改變當前語言或安裝別的鍵盤以適應你的語言,參閱Localization, 第 9.7 節。
首先你必須了解Debian policy並遵守標頭文件的規定。
Debian C libraries是依據核心標頭文件最新stable發布版建立的。
例如,Debian 1.2發布版使用版本號為5.4.13的頭文件。它基於所有Linux
FTP檔案站點發布的Linux核心源碼包,這些源碼包使用了最新的標頭檔。跟隨核心源碼發布的核心標頭檔位於/usr/include/linux/include/
。
如果你編譯某個程序所用的核心標頭檔案比libc6-dev
提供的標頭檔案還新,在編譯時你必須在命令行中加上-I/usr/src/linux/include/。這些情況是存在的,例如,對於automounter
daemon(amd
)套件而言,當新核心改變了對NFS的內部操作方式,amd
需要知道這些改變。這時就需要引用新的核心標頭檔案。
對於希望(或必須)使用自定核心的用戶,推薦下載kernel-package
套件。該套件包含了建立核心套件的
script。有了它,新建Debian核心套件只需在核心源碼的根目錄執行
# make-kpkg kernel_image
在核心源碼所在目錄的頂層,執行下述命令可獲得相關幫助
# make-kpkg --help
或閱讀make-kpkg(8)
幫助手冊以及Debian下的Linux核心, 第 7 章。
如果所需的kernel-source-version(version代表核心版本號)套件不存在,用戶就得從Linux檔案站點分別下載最新的(或需要的)核心源碼。Debian的initrd
啟動
script 需要一個專門的核心修正才能正確呼叫initrd
;參閱http://bugs.debian.org/149236
。
有關kernel-package
套件的用法詳述見於/usr/doc/kernel-package/README.gz。
要使用其他的開機載入器如grub
或loadlin
,請將編譯好的Linux核心bzimage
拷貝到相應的地方(例如/boot/grub
或MS-DOS分區)。
Debian的boot-floppies
套件可以幫你制作一張自定的開機磁片,
該套件通常位於Debian FTP檔案站點中的 Potato
或更舊的版本的admin分類。套件中的Shell script
按照syslinux
格式製作開機磁片。對於那些使用MS-DOS格式化的磁片,其主要開機紀錄將被修改為直接啟動Linux(或是其它在才片中的syslinux.cfg檔案裡的操作系統)。該套件中的其它
script 可製作急救援磁片甚至重建基本系統。
安裝boot-floppies
套件後,閱讀/usr/doc/boot-floppies/README
檔案可獲得更多信息。
Debian的modconf
套件提供了一個shell
script(/usr/sbin/modconf
),它可以用來自定核心模組設定。該 script
使用選單界面,用戶透過它給出系統中可掛載設備驅動的有關細節,它再將這些細節訊息生成/etc/modules.conf
檔案(其中列出了別名aliases和其它參數,用於連接各種模組),該設定檔案用來掛載/etc/modutils/
目錄下和/etc/modules
(其中列出了需要在系統啟動時掛載的模組)目錄的相關模組。
新版的Configure.help
提供建立自定核心的步驟和幫助,同樣,modconf
套件中也有一系列幫助檔案(位於/usr/share/modconf/
目錄下),告訴你如何對模組設定合適的參數。參閱模組化的2.4核心, 第 7.2
節中的例子。
kernel-image-NNN.prermscript 可用來檢查目前運行中的核心版本,以確定是否與你要移除的核心版本相同。因此你可以使用如下命令刪除不想要的核心套件:
# dpkg --purge --force-remove-essential kernel-image-NNN
(當然,要將NNN替換成你的核心版本和修訂版本。)
Debian 參考手冊
CVS, 週一 四月 3 22:58:37 UTC 2005osamu@debian.org
asho@debian.org.tw