<< Back to man.lupaworld.com


[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一頁 ]

Debian 參考手冊
第 2 章 - Debian 基礎


這一章節是針對非開發者說明 Debian 系統的原理。想要了解更細微詳盡的訊息,請參閱:

以上文件均列在 參考資料, 第 15.1 節

如果您在尋找比較淺顯易懂的 "how-to",請直接跳到 Debian 套件管理系統, 第 6 章 或其他相關的章節。

本節的寫作是基於 "Debian FAQ" 改寫,適合當作一般 Debian 系統管理者的起步文件。


2.1 Debian archives


2.1.1 目錄結構

每個被包裝好的 Debian 套件可以從其中一個 Debian mirror site 映射站台透過 FTP 或 HTTP 取得。

以下的目錄皆可在 Debian 映射站台中的 debian 目錄找到:

dists/
該目錄存放 "distributions",主要是用來取得不同發行版本的套件。有些舊套件或 Contents-*.gz Packages.gz 仍然存放在這裡。
pool/
所有 Debian releases 及 pre-releases 的套件的新的實體位址。
tools/
建立開機片,分割硬碟,解/壓縮檔案,啟動 Linux 的 DOS 工具程式
doc/
問與答,臭蟲回報等基本 Debian 文件。
indices/
Maintainers file 和 override 檔案。
project/
大多為開發者的資源,例如:
project/experimental/
該目錄存放的套件都是開發中且為 alpha 測試階段。使用者不應抓取這裡的套件,因為這些套件是危險且會對系統造成傷害。
project/orphaned/
維護者不再維護且從發行版本移除的"孤兒"軟體放在該目錄。

2.1.2 Debian distributions

stable distribution 套件的入口,Debian Woody (3.0r0),被登記到 stable (符號鏈接指向 woody/ 目錄):


2.1.3 stable 發行版本

stable版本(Debian Woody (3.0r0))的stable(連結到woody/)目錄下紀錄了不同的套件總件:

除了上述的目錄外,實體套件存在的位置為 pool 目錄(pool 目錄, 第 2.1.10 節)。

現階段 stable 版本的臭蟲報告均列在 Stable Problems 網頁上。


2.1.4 The testing distribution

testing distribution 的套件入口,Debian Sarge,在 unstable 中通過某種程度的測試後會登記到 testing (符號鏈接指向 sarge/) 目錄。現在,除了上述目錄,新上載的套件的實體儲存位置為 pool 目錄 (pool 目錄, 第 2.1.10 節)。在 testing/ 下同樣有 maincontrib ,和 non-free 子目錄,它們的作用與 stable/ 中的一樣。

這些套件必須可以同時運行於所有架構並且能正常安裝。比起在 unstable 中的對應版本,它們必需有更少的 release-critical 錯誤。這個種方式,我們將 testing 視為更接近發行的候選版本。有關 testing 機制的更多資訊請參閱 http://www.debian.org/devel/testing

testing distribution 的最新消息發佈在下列站台:


2.1.5 The unstable distribution

unstable distribution 的套件入口,總是被命名為 "Sid",被登記到 unstable (符號鏈接指向 sid/) 目錄,上傳至 Debian archive 的套件在被移至 testing/ 前就一直放在這兒。新上傳的套件的實體儲存位置為 pool 目錄 (pool 目錄, 第 2.1.10 節)。在 unstable/ 下同樣有 maincontribnon-free 子目錄, 它們的作用與 stable/ 中相同。

unstable distribution 反映了系統最新的開發進展。歡迎廣大用戶使用並測試這些套件,同時也提醒你們這些套件還不完善。使用 unstable distribution 的好處就是你可以獲得 Debian 軟體專案 — 的最新更新,不過新東西也會出新問題,你得好壞兼收 :-)

unstable distribution 的最新臭蟲報告見於 Unstable Problems 網頁上。


2.1.6 The frozen distribution

testing distribution 足夠成熟了,它便成為 frozen,表示這個版本不再加入新程式,只進行除錯工作。如果需要的話, dists 目錄中會建立新的 testing 目錄樹,並給予新的開發代號。 frozen distribution 再經過幾個月的測試、更新、再凍結也稱之為“循環測試”。(最近的 Woody 發佈進程沒有建立 frozen/ 的符號鏈接,所以 frozen 並不算 distribution,僅是 testing distribution 的一個開發階段。)

我們將 frozen distribution 中可能延遲套件或整個版本發佈的錯誤都記錄在案,一但錯誤總數低於可接受的最大值,frozen distribution 就晉升成 stable,而新版本發布了,前一個 stable distribution 成為過期版 (obsolete) (並被移至相對應的目錄)。


2.1.7 Debian distribution 開發代號 (codenames)

存在於 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 。


2.1.8 已用過的開發代號

已使用過的開發代號有: "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 。


2.1.9 開發代號的來源

到目前為止它們均出自 Pixar 的電影 玩具總動員 (Toy Story)


2.1.10 pool 目錄

過去,套件均放在 dists 目錄下相應的 distribution 子目錄中。這種做法產生了許多問題,例如映射站台進行新版本發佈時大量頻寬被消耗。

現在套件均依原本的套件名稱分類放進一個巨大的池子 "pool"。為了方便管理, pool 目錄下按屬性再分類 (maincontrib ,和 non-free),分類下面再按原本的套件名稱的英文字首字母歸檔。這些目錄包含的文件有:運行於各種系統架構的二進位套件,和生成這些二進制套件的源碼套件。

你可以執行命令 apt-cache showsrc mypackagename ,查看 "Directory:" 行獲知每個套件的存放位置。例如:apache 套件存放在 pool/main/a/apache/ 。因為 lib* 的套件數量龐大,它們以特殊的方式歸檔:例如,libpaper 套件存放在 pool/main/libp/libpaper/

諸如 apt 等命令訪問的索引文件仍位於 dists 目錄中。而且,直到本文寫作之時,舊的 distributions 套件還沒轉到 pool 目錄,所以你將看到路徑中的 "Directory" 標頭欄中包含有 distribution 名稱如 potatowoody

通常,你大可不必注意這些事情,新版的 apt 和舊版 dpkg-ftp 會自動處理它們。想了解更多資訊,參閱 RFC: implementation of package pools


2.1.11 sid 的歷史記錄

過去 Sid 並不存在, Debian archive 組織有一個主要的工作流程:它假設當前 unstable 中建立了某個軟體開發項目,它會在整個 distribution 形成一個新的 stable/ 時發佈。但是因為很多軟體不是用這個方式在開發,所以一但軟體要發佈時,就必需把整個目錄都搬移到 stable 下。因為在搬移目錄時會用掉大量的頻寬,所以這個流程就顯得很不切實際。

經過幾年的研究摸索,archive 管理員提出一個方案,將未發佈的二進位檔放在一個名為 sid 的特定目錄。由於這些軟體尚未發佈,從那時起,它們就被加入到 unstable 目錄樹。當它們首次發布時,將會建立一個從當前 stable 指向 sid 的鏈接。這個方案的確會使使用者覺得困惑。

有了套件 pool 的幫助(參閱 pool 目錄, 第 2.1.10 節),在 woody distribution 開發過程中,二進位套件均按一定規範存放於 pool 目錄,而與 distribution 無關,當發佈新版本時,就不會再出現大量頻寬被消耗的問題。(不過,開發過程還是會用掉大量頻寬)。


2.1.12 在 incoming 中的上傳套件

上載的套件在經確認它們是由 Debian 開發者上載的後,會先存放於 http://incoming.debian.org/ (對於那些無維護者上載(Non-Maintainer Upload (NMU))的套件則放入 DELAYED 子目錄)。會有一天,它們將從 incoming/ 移入 unstable/

在緊急情況下,你可能會等不及它們移入 unstable/ 而直接從 incoming. 中下載安裝。


2.1.13 找回舊套件

最新的 Debian distribution 存放在任何一個 Debian mirror sitedebian 目錄下。舊版本的 Debian 如 Slink 存放在 http://archive.debian.org/ 或 Debian 映射站台的 debian-archive 目錄下。

舊的 testingunstable 套件存放在 http://snapshot.debian.net/


2.1.14 Architecture sections

在每個主要目錄樹下(dists/stable/maindists/stable/contribdists/stable/non-freedists/unstable/main 等)按晶片架構又分了子目錄,每個子目錄中存放著在該晶片架構下編譯的二進位套件。

請注意,testingunstable 的二進位套件不再存放在這些目錄中,而是放在最上層 pool 目錄中。但為了向下相容,所以在目錄中仍保留有索引文件(PackagesPackages.gz)。

要獲得實際上的二進制架構技術支持,請參閱各發行版的發佈記錄(Release Notes)。它們放發佈記錄站台 stabletesting


2.1.15 源碼

Debian 系統中包含了所有東西的源碼,不僅如此,許可證條款規定系統中所有的程式必須和其源碼一起發行,或提供源碼。

通常源碼發佈在 source 目錄,該目錄同時處於所有特定平台的目錄中,或是把更新的源碼放在 pool 目錄中(參閱 pool 目錄, 第 2.1.10 節)。對於不太熟悉 Debian archive 目錄結構的用戶,想獲得源碼可以試試 apt-get source mypackagename 命令。

有些套件,如著名的 pine,由於許可證限制,只提供源碼套件。(最近,pine-tracker 套件提供了一個簡易的安裝方式。)參閱 把套件引入 stable 系統, 第 6.4.10 節包裝套件, 第 13.10 節 教你如何手動編建一個套件。

contribnon-free 目錄中的套件可能不提供源碼,因為它們不算正式 Debian 系統的一部分。


2.2 Debian 套件管理系統


2.2.1 Debian 套件概觀

套件通常包含了實現一系列相關命令或特性的所有必需的檔案。Debian 套件有兩種類型:

使用套件管理系統來安裝套件時會用到由套件維護者建立的"相依資訊"。這些相依資訊記錄在每個套件的 control 文件中。例如,包含 GNU C 編譯器 (gcc) 的套件"相依"於包含連結器 (linker) 和組譯器 (assembler) 的 binutils 套件。如果用戶試圖在沒有安裝 binutils 的情況下安裝 gcc,套件管理系統(dpkg)就會顯示錯誤信息,告訴你需要安裝 binutils,並停止安裝 gcc 。(不過,倔強的用戶可以對這個信息視而不見,參閱 dpkg(8) )。)更多資訊請參閱下面的 套件相依性, 第 2.2.8 節

Debian 套件管理工具可用來:


2.2.2 Debian 套件格式

Debian 的"套件",或是 Debian 保存壓縮檔 (archive) 包含了與特定程式或一組相關的程式有關的可執行檔,函式庫,和文件。通常,Debian 保存壓縮檔是以 .deb 做為結尾。 [1]

Debian 二進制套件的格式說明請參閱 deb(5) 的說明文件。由於 deb 的內容是可變的(不同於各個主要 Debian 版本),所以請使用 dpkg-deb(8) 來控管 .deb 檔案。

至少從 Sarge 開始,所有的 Debian 套件檔皆可以透過傳統的 Unix 指令 artar 來控制,即使是 dpkg 不存在也沒關係。


2.2.3 Debian 套件檔名的命名

Debian 套件檔案名稱是採用以下的規則來命名的:

     foo_ver-rev_arch.deb

通常,foo 是套件名稱, ver 是原作釋出的版本 (the upstream version number), rev 是 Debian 釋出的版本,以及 arch 是目的硬體架構。 檔案是很容易更改,這是當然的喔。 您可以執行以下指令來查詢該套件檔案名稱的資訊:

     dpkg --info filename

Debian 釋出版本是由 Debian 開發者決定或製作該套件的人。 釋出版本的改變就表示套件有些許的變化。


2.2.4 保留本機設定檔

能被系統管理者修改的檔案都放在 /etc/ 目錄下。 再升級套件時,Debian 政策控制了所有的本機設定檔更新動作。

如果預設的設定檔是套件本身所有,則該檔案稱為 "conffile"。 從套件安裝後,如果 conffiles 曾被系統管理者修改過,則套件管理系統將不會更新這些 conffiles,除非系統管理者願意。換句話說,如果 conffile 都未曾修改,則在升級套件的同時也會一併更新 conffile。 對大部份的情況來說,這是值得期許的,因為方便降低 conffiles 的變更程度。

要列出套件的 conffiles,請執行下述的指令:

     dpkg --status package

檔案清單則列在 "Conffiles:" 這一行。

您可以閱讀 Debian Policy Manual 中的 "Configuration files" 部份來取得更多資訊。(參閱 參考資料, 第 15.1 節)


2.2.5 Debian maintenance scripts

Debian maintenance scripts 是一些在安裝前後自動執行的 scripts。連同 control 檔案,這些檔案是一個 Debian 檔案中的 "control" 段落的部份之一。

各個檔案說明:

preinst
該 script 在 Debian 壓縮檔 (.deb) 被解開前才被執行。許多的 "preinst" scripts 將會停止服務直到套件升級或安裝完成 (完成之後,接下來就是 "postinst" script)。
postinst
該 script 用在 Debian 壓縮檔 (.deb) 被解開後完成設定套件的手續。"postinst" 通常用來等待使用者輸入或提醒使用者,假如他接受預設的設定值,記得重新設定套件。許多的 "postinst" scripts 負責在套件安裝或升級後重新啟動服務。
prerm
該 script 負責停止與套件關聯的daemon服務。它在刪除套件關聯的文件之前執行。
postrm
該 script 負責修改套件連結或文件關聯或刪除由它建立的檔案。(參閱 虛擬套件, 第 2.2.7 節)。

目前所有的 control 檔案可以在 /var/lib/dpkg/info 目錄下找到。這些檔案關聯於套件 foo 開頭名稱為 "foo" 以及擁有 "preinst", "postinst"...等延伸檔案。該目錄下的 foo.list 紀錄了套件 foo 安裝到系統上的所有檔案。(要注意的是這些檔案的位置是 dpkg 內部運作之一且易被改變的。)


2.2.6 套件的優先等級

每個Debian套件均被維護者指定了一個優先等級,作為套件管理系統的一個輔助參數,優先等級有:

請注意套件描述中的 "Priority: required", "Section: base" and "Essential: yes" 這幾個的差異性。"Section: base" 是指該套件在建立新系統時一定要安裝的。大部份這類型的套件皆有 "required" 級別(Priority: required)或至少 "important" 級別(Priority: import)。且多數被標示成 "Essential: yes"。"Essential: yes" 是指套件管理系統在處理該套件時,必需加入額外的 "暴力" 參數,例如使用 dpkg 來移除這類型的套件。舉個例子,libc6, mawkmakedev 皆為 "Priority: required" 和 "Section: base" 但並非 "Essential: yes"。


2.2.7 虛擬套件

虛擬套件是一個統稱,指的一組具有相近功能的套件。舉個例子,tintrn 都是新聞閱讀軟體,當系統中某個程式需要使用新聞閱讀器工作時就會產會一個關聯關係,它們必須滿足這個關聯,我們也稱之為它們提供了一個叫做 news-reader 的 "虛擬套件"。

又像是,exim, sendmailpostfix都提供郵件傳輸代理的功能。也可稱之為提供 mail-transport-agent 虛擬套件。如果安裝了其中之一,那麼任何與 mail-transport-agent 有關聯的程式會因為這個虛擬套件的存在而滿足相依性。

Debian 有個類似的機制,如果系統中提供相同的虛擬套件,系統管理員可以指定一個為首選軟體。相關的指令是 update-alternatives,更詳細的描述參閱 Alternative 指令, 第 6.5.3 節


2.2.8 套件相依性

Debian套件管理系統有一套套件“依賴性”定義(用一個標誌)用來描述套件需要安裝其他的軟體才能正常工作或作的更好。

各個保留字使用方法的更詳細的訊息請參閱Packaging Manual和the Policy Manual。

注意,dselect可以對recommendssuggests類套件進行更細部的控制,apt-get只會簡單的下載安裝depends類套件而不管recommendssuggests>類套件。這兩個程式均正式使用APT作為後端程式。


2.2.9 何為“pre-depends”

“pre-depends”是一種特殊關聯關系。對於一個普通套件,不管系統中是否存在它的相依套件,dpkg都會將它解包。(解包主要指dpkg從套件中取出安裝文件並放到正確的位置)。如果套件 Pre-Depends 到其他套件,則這些被 Pre-Depends 的套件會要安裝比的套件先被解包和設定。 [2] 這個相依性的用途是為了提供最小風險的升級。


2.2.10 套件狀態

套件有各種狀態:“unknown”,“install”,“remove”,“purge”和“hold”。這些“希望” 標記描述了用戶打算如何操作這些套件(既可以使用dselect的 "Select",也可以直接使用dpkg)。

它們的意思是:


2.2.11 阻止套件升級

有兩種方法阻止套件升級,使用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套件。


2.2.12 原始碼套件

原始碼套件發布在source目錄中,既可以手動下載可以使用

     apt-get source foo

來抓取它們(參閱apt-get(8)幫助頁面)。


2.2.13 編譯原始碼套件

對於foo套件,從原始碼編譯需要foo_*.dscfoo_*.tar.gzfoo_*.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 節


2.2.14 新建Debian套件

建立新套件的詳細訊息,參閱New Maintainers' Guide,該文檔在maint-guide套件中,或瀏覽http://www.debian.org/doc/manuals/maint-guide/


2.3 Debian系統升級

Debian的設計目標之一就是提供一個一致的升級途徑和安全的升級過程,我們致力於舊版本的平順升級,套件在升級過程中會將重要訊息提醒管理者,並提供一個可能的解決方案。你也應該閱讀發布手記(Release Notes),該文檔描述了升級的詳細情況,它存在所有的Debian光碟中,也可以通過網站訪問http://www.debian.org/releases/stable/releasenoteshttp://www.debian.org/releases/testing/releasenotes

Debian 套件管理系統, 第 6 章提供了升級的實用指南,本節只作基礎細節的介紹。


2.3.1 dpkg

它是操作套件檔案的主要工具;參閱dpkg(8)獲得完整訊息。

dpkg由幾個原始的輔助程式演化而來。

dpkg-ftpdpkg-mountable已被新的APT系統取代。


2.3.2 APT

APT(the Advanced Packaging Tool)是Debian套件管理系統的進階介面,由幾個名字以 "apt-" 開頭的程式組成。apt-getapt-cacheapt-cdrom是處理套件的命令列工具,它們也是其它程式的後端程式,如dselectaptitude

更多訊息,可安裝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 upgradeapt-get dist-upgrade只抓取"Depends"類套件,它忽略"Recommend"和"Suggests"類套件,不想這樣的話,可使用dselect


2.3.3 dselect

這個程式是Debian套件管理系統中以選單驅動的用戶介面。特別適用於首次安裝和大幅度升級。參閱dselect, 第 6.2.4 節

更多訊息,可安裝install-doc套件後閱讀/usr/share/doc/install-doc/dselect-beginner.en.htmldselect Documentation for Beginners


2.3.4 在運行中的系統升級

Debian系統的核心(文件系統)支持替換使用中文件。當升級新套件時如果該套件中包含daemon安裝,則會在該 RunLevel 設定好並重新啟動它們。Debian系統不需要切換到 single-user 模式就能升級運行中的系統了


2.3.5 下載和快取.deb檔案

如果你手動下載套件到磁碟(這完全沒有必要,請閱讀上面有關dpkg-ftp或APT的內容),當你完成套件安裝工作後,可以從系統中刪除.deb檔案。

如果是使用APT,這些文件會快取在/var/cache/apt/archives/目錄中。你可以在完成安裝後刪除它們(apt-get clean)或者將它們拷貝到另一個機器的/var/cache/apt/archives/目錄中以備以後的安裝。


2.3.6 升級記錄

dpkg會對套件的解開、配置、刪除、完全刪除進行記錄,但不能(目前是這樣)記錄在套件操作的過程中終端機發生的事情。

最簡單的解決方法是在執行dpkgdselectapt-get等工具的對話中加入script(1)程式。


2.4 Debian 開機程序


2.4.1 init 程式

如同所有的Unix一樣,Debian啟動要執行init程式。init的設定檔(/etc/inittab)中指定的第一個執行 script 應該是/etc/init.d/rcS

而接下來的程序就看 sysv-rcfile-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 目錄。


2.4.2 Runlevels

完成系統啟動進程後,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 執行,而跟隨 KS 後的兩個數字決定這些 script 執行順序。

實際上,任意目錄/etc/rcrunlevel.d/中的script都是指向/etc/init.d/的軟連結。這些 scripts 都接受參數"restart" and "force-reload";後者是為了在系統開機後重新啟動服務或強迫他們重讀設定檔。

例如:

     # /etc/init.d/exim4 force-reload

2.4.3 自訂 RunLevel

自訂 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/Sxyservicexy數字必須該套件安裝時被指定的數字。

更改這個軟連結從開頭是SK就能取消這個服務,而所填的數字是 100 減去 xy

改用 RunLevel 編輯器 sysv-rc-confksysv會是比較方便的辦法。

移除特定 RunLevel 目錄下的服務的 S 軟連結也是可行的辦法。這樣作並非取消該服務但卻變成一個"懸浮"狀態直到sysv-rcinit 系統有關連到。更改 RunLevel 後,該服務並不會變成"啟動"或"關閉"的狀態,而是看它先前的設定來決定,不論現在是運行中或不是。注意,雖然該服務現在是 "懸浮" 狀態,但當它升級後就會啟動,不管在升級是否在運行或沒有。這是眾所皆知的 Debian 系統的缺點。注意,您也需要保留該服務的 RunLevel 0和6 的 K軟連結。 如果您刪除該服務所有的軟連結,再升級套件後會回復所有的軟連結到預設的狀態。

強烈建議不要更動/etc/rcS.d/中的任何軟連結。


2.5 多樣性支援

Debian提供幾種途徑,在不破壞系統的前提下滿足系統管理員各種要求。

/usr/local/目錄下的所有檔案均屬於系統管理者,Debian不會更動它們。/etc下的大部分(或全部)檔案屬於conffiles, Debian不會在升級後覆蓋它們,除非系統管理員明確要求覆蓋。


2.6 國際化

Debian系統是國際化產品,不論是在主控台下還是在X下,它都提供多種語言的字元顯示和輸入支援。許多檔案、說明文件以及系統訊息都被翻譯成各種語言。在安裝過程中,Debian提示用戶選擇安裝語言(有時是當地語言的變異)。

如果你安裝的系統提供的語言特性支援不能滿足你的需要,或者你要改變當前語言或安裝別的鍵盤以適應你的語言,參閱Localization, 第 9.7 節


2.7 Debian和系統核心

參閱 Debian下的Linux核心, 第 7 章


2.7.1 編譯非 Debian 核心的原碼

首先你必須了解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需要知道這些改變。這時就需要引用新的核心標頭檔案。


2.7.2 自定核心建立工具

對於希望(或必須)使用自定核心的用戶,推薦下載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


2.7.3 其餘的開機載入器

要使用其他的開機載入器如grubloadlin,請將編譯好的Linux核心bzimage拷貝到相應的地方(例如/boot/grub或MS-DOS分區)。


2.7.4 製作開機磁片

Debian的boot-floppies套件可以幫你制作一張自定的開機磁片, 該套件通常位於Debian FTP檔案站點中的 Potato 或更舊的版本的admin分類。套件中的Shell script 按照syslinux格式製作開機磁片。對於那些使用MS-DOS格式化的磁片,其主要開機紀錄將被修改為直接啟動Linux(或是其它在才片中的syslinux.cfg檔案裡的操作系統)。該套件中的其它 script 可製作急救援磁片甚至重建基本系統。

安裝boot-floppies套件後,閱讀/usr/doc/boot-floppies/README檔案可獲得更多信息。


2.7.5 模組處理措施

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 節中的例子。


2.7.6 移除舊版核心套件

kernel-image-NNN.prermscript 可用來檢查目前運行中的核心版本,以確定是否與你要移除的核心版本相同。因此你可以使用如下命令刪除不想要的核心套件:

     # dpkg --purge --force-remove-essential kernel-image-NNN

(當然,要將NNN替換成你的核心版本和修訂版本。)


[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一頁 ]

Debian 參考手冊

CVS, 週一 四月 3 22:58:37 UTC 2005

青木 修 (Osamu Aoki) osamu@debian.org
翻譯者:葉信佑 (Shine-Yoh Yeh) asho@debian.org.tw
作者, 第 A.1 節