[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ 下一頁 ]


Debian GNU/Linux 3.1 (`sarge'), PowerPC 的發行情報
第 4 章 - 從先前的發行版進行升級


4.1 系統升級之準備

在對您的系統進行升級之前,我們強烈建議您能進行一次完整的備份,或至少您也應該把那些絕對不能出任何差錯的資料和設定資訊給備份起來。升級時所使用的工具和升級過程應該不會出什麼差錯,但在升級過程中若發生了什麼硬體錯誤可能會導致系統嚴重受損。

您可能會想進行備份的內容主要包括了 /etc 目錄和 /var/lib/dpkg 目錄中的內容,以及 dpkg --get-selections "*"(請別忘了雙引號)所輸出的資訊。

這個昇級的程序它本身並不會修改在 /home 目錄裡的任何資料,但是已經知道有某些應用程式(例:Mozilla 及部份的 KDE 應用程式)在使用者第一次以新的版本啟動時,會以新的預設值覆蓋使用者原有的設定。為了以防萬一,您也許想要針對在使用者的 home 目錄裡的隱藏檔案及目錄("dotfiles",以 . 開頭的檔案或目錄)進行備份。這個備份可以用來回復或重新建立舊有的設定。您也許有必要讓使用者知道有這個問題存在。

您應該在進行任何升級之前先把您的計畫告知所有使用者,雖然一些像是利用 SSH 從遠端來存取系統的使用者在升級過程中可能不會發現什麼異狀,而且可能還會希望他們的工作能夠不會因而中斷。如果您希望能採取額外的預防措施的話,請在升級前備份或卸載使用者的分割區 (/home)。除非您計劃同時進行 Kernel 的昇級,否則您在升級前後通常並不需要重新開機。

您應該在本機透過文字模式的虛擬主控台(或直接連線的序列終端機)或由遠端透過 ssh 連線來進行發行版的升級動作。

極重要!不應該透過 telnetrloginrsh,或是由您要進行升級的機器上的 xdmgdmkdm 等等所管理的 X 行程來進行升級。這是因為這些服務在升級的過程中都可能會被中斷,因而將會留下了一個只完成部分升級而無法存取的系統。

任何套件安裝的動作都需要有系統管理者的權限才能進行,所以您必須以 root 登入,或使用 susudo 來取得所需的權限。


4.2 檢查系統的狀況

在這個章節中所說明的昇級過程是專門為『純粹』的 woody 所寫的。它假設您的系統已經昇級至最新的 woody 發行版。如果您所使用的系統更為老舊,或您根本無從確定,請遵循在 更新您的 woody 系統, 第 A.1 節 裡的相關說明。

它同時也假設您安裝了 woody 版的 aptitude。您可以使用以下方法來檢查它是否已安裝在您的系統上:

     $ dpkg -l aptitude

如果輸出的文字並不是以 "i" 開頭的話,您必須在使用 安裝 woody 版的 aptitude, 第 A.2 節 裡的指令來進行昇級之前先行安裝這個套件。


4.2.1 關閉 APT 的釘鎖 (Pinning) 功能

如果您將 APT 設定為可以安裝除了 stable 發行版之外的套件,(像是:從 testing),您可能必須修改您的 APT 的釘鎖 (Pinning) 設定(儲存於 /etc/apt/preferences 中)來讓將會進行昇級的套件能夠昇級至新的 stable 發行版。您可以在 apt_preferences(5) 取得 APT 的釘鎖功能的更多詳盡資訊。


4.2.2 檢查套件的狀態

不論您是用什麼方式進行系統的更新,我們都建議您先檢查所有套件的狀態,並確認所有的套件都能夠被順利昇級。以下的指令會顯示所有狀態為半安裝 (Half-Installed) 或設定失敗 (Failed-Config) 或有其他任何錯誤的套件。

     # dpkg --audit

除此之外,檢查系統中所有套件狀態的方法還包括使用使用 dselectaptitude、或是利用以下的指令:

     # dpkg -l | pager

或是

     # dpkg --get-selections > ~/curr-pkgs.txt

最佳的做法是在進行系統升級前移除所有的保留 (hold) 套件。如果在升級過程中有任何的關鍵套件被設定為保留狀態,那麼升級的作業就會失敗。您可以用以下的指令找出被設定為保留狀態的套件:

     # dpkg --get-selections | grep hold

如果您自行在系統中變更並重新編譯了某個套件,但卻沒有把它更名或在版本號碼中使用 epoch(自行定義版本號碼),那您就必須把它設定為保留狀態,以防止它被升級到新的版本。 您可以使用 aptitude 來改變套件的保留狀態:

     # aptitude hold | unhold <package name>

如果還有什麼地方尚未進行調整,請最好再次確認您的 sources.list 仍然是指向 woody。請參考 檢查您的來源列表, 第 A.3 節 的說明。


4.2.3 非官方的來源及 backports

如果在您的系統裡安裝了不是由 Debian 所提供的套件,您必須要知道的是,在昇級的過程中,它們可能會因為相依性的關係而被移除掉。如果這些套件是先在 /etc/apt/sources.list 新增了額外的套件檔案庫然後再加以安裝的,您應該檢查一下那個檔案庫是否也提供了特別為 sarge 而編譯的套件,然後在替 Debian 變更套件來源時也同時適當得修改這些套件的來源項目。

也許有些使用者會在他們的 woody 上安裝了在 Debian 有套件的非官方"新" backported 版本。這些套件很可能在昇級的時候產生檔案衝突的問題[1]。在 在升級過程中可能會發生的問題, 第 4.4.5 節 那一節有一些當發生了檔案衝突時該如何解決的資訊。


4.3 APT 來源之準備工作

在開始進行升級之前,您必須先在 apt 的設定檔 /etc/apt/sources.list 中設定套件列表。

apt 會把所有可以在 "deb" 行中找到的套件全數列入考慮,並安裝其中版本號碼最高的套件,且會依序由列出的來源中取得套件(也因此,當您是由許多不同位置來取得套件時,您可以讓系統依先由本機硬碟,接下來是由光碟片,然後是遠端 HTTP/FTP 的順序來取得套件)。

發行版通常可以使用它的代碼(如,woody、sarge)或是它的狀態名稱(如,oldstable、stable、testing、unstable)來表示。使用發行版的代碼有個好處是您將不用為了新的發行版的到來而感到緊張,這也是為什麼會在此提出這個技巧的原因。理所當然的,這也表示了您必須自行去注意發行版是何時發佈的。如果您是替而使用狀態名稱的,在新的發行版發佈的同時,您將會立即發覺大量套件已有新的版本可供更新。


4.3.1 加入網際網路上的 APT 套件來源

雖然系統的預設設定是使用 Debian 在網際網路上的主要伺服器來進行安裝,但您還是可能會希望修改 /etc/apt/sources.list 來改為使用在網路上離您最近的其它鏡像站。

您也可以在 http://www.debian.org/distrib/ftplist 取得 Debian 的 HTTP 或 FTP 鏡像站的位址(請參考【Full list of mirrors】小節)。HTTP 鏡像站的傳輸速度通常會比 FTP 映網站來得快。

舉例來說,假設離您最近的 Debian 鏡像站是 http://mirrors.kernel.org/debian/。當您透過網頁瀏覽器或 FTP 程式來檢視這個網站時,您會發現其中的主要目錄架構會像是這個樣子:

     http://mirrors.kernel.org/debian/dists/sarge/main/binary-powerpc/...
     http://mirrors.kernel.org/debian/dists/sarge/contrib/binary-powerpc/...

為了要讓 apt 能夠使用這個鏡像站,請把以下的這一行加入您的 sources.list 檔案之中:

     deb http://mirrors.kernel.org/debian sarge main contrib

請注意,`dists' 將會被自動加到路徑中,而在發佈代號之後的參數則會被用來展開成多個不同目錄的路徑。

在加入了新的 APT 來源之後,請在 sources.list 中原有的 "deb" 設定行前加入井字符號 (#) 以關閉這些套件來源。

所有由網路上下載來的安裝所需套件都會被存放在 /var/cache/apt/archives 目錄中(而下載中的檔案則會被存在 partial/ 子目錄中),所以在嘗試開始安裝前請確認您是否有足夠的磁碟空間。對一個裝有大量套件的 Debian 系統來說,下載的資料量應該會超過 300 MB。


4.3.2 增加 APT 的本機鏡像套件來源

您可能也會想修改 /etc/apt/sources.list 中的設定,以使用本機(像是透過 NFS 掛載的)磁碟上的鏡像資料來取代透過 HTTP 或 FTP 存取遠端的套件鏡像站。

舉例來說,如果您的套件鏡像是放在 /var/ftp/debian/ 之下,而主要的目錄看起來是像這樣的話:

     /var/ftp/debian/dists/sarge/main/binary-powerpc/...
     /var/ftp/debian/dists/sarge/contrib/binary-powerpc/...

如果要和 apt 搭配使用,請把下行加入 sources.list 檔案之中:

     deb file:/var/ftp/debian sarge main contrib

請注意,`dists' 將會被自動加到路徑中,而在發佈代號後的參數則會被用來展開成多個不同目錄的路徑。

在您加入了新的套件來源之後,請在 sources.list 中原有的 "deb" 設定行前加入井字符號 (#) 以關閉這些套件來源。


4.3.3 增加 APT 的 CD-ROM 或 DVD 的套件來源

如果光碟是唯一您想使用的媒體,請在 /etc/apt/sources.list 中原有的 "deb" 設定行前加入井字符號 (#) 以關閉這些套件來源。

請確定在 /etc/fstab 中有著能讓您的光碟機掛載在 /cdrom 這個掛載點下的項目(apt-cdrom 限定掛載點必須是 /cdrom)。舉例來說,如果您的光碟機的裝置是 /dev/hdc,那麼 /etc/fstab 中就應該要有像這樣的一行:

     /dev/hdc /cdrom auto defaults,noauto,ro 0 0

請注意在第四欄的 defaults,noauto,ro 的字中間一定不能參雜空白字元

要確認您的設定是否正確,請放入一張光碟片,並試著執行

     # mount /cdrom    # 這樣將會將這張 CD 掛載在該掛載點上
     # ls -alF /cdrom  # 這樣將會列出 CD 的根目錄
     # umount /cdrom   # 這樣將會卸載這張 CD

接下來對每一張 Debian 的程式光碟執行

     # apt-cdrom add

來把每一張光碟的資料加到 APT 的資料庫中。


4.4 進行套件的升級

若要在 Debian GNU/Linux 的發行套件間進行昇級時,建議的工具是使用套件管理工具 aptitude。這個工具在套件安裝上會比起直接執行 apt-get 來得安全。

不要忘了用類似以下的指令把所有會用到的分割區(特別是 /usr 和 root 分割區)重新以可讀寫的模式掛載:

     # mount -o remount,rw /mountpoint

接下來,您必須再次確認在 /etc/apt/sources.list 中的 APT 來源項目 是指向 "sarge" 或是 'stable'。請注意,CD-ROM 的來源項目常常會參照至 "unstable",雖然您可能會覺得這有點奇怪,但您應該去加以更動。

我們強烈建議您使用 /usr/bin/script 這個程式來記錄升級的完整過程。因為一旦發生了任何問題,您手上就會有發生了什麼問題的確實記錄,而在必要之時,在錯誤報告中也會因而能提供確實的資訊。若要開始進行記錄,請使用

     # script -a ~/upgrade-to-sarge.typescript

或類似的指令。請不要把記錄檔放在像是 /tmp/var/tmp 之類的暫存目錄下(這些目錄中的檔案可能會在升級的過程中或在重新開機時遭到清除)。

而這個程式也允許您重新檢視那些已被捲出螢幕之外的訊息。請切換至第二個虛擬終端機 VT2(使用 alt-F2),在登入之後,使用 less ~root/upgrade-to-sarge.typescript 來瀏覽這個檔案。

在您完成昇級作業後,您可以藉由在命令列上鍵入 exit 來關閉 script


4.4.1 更新套件的列表

首先,必須從新的發行版中取得可使用套件的列表。要達到這個目的,請執行 [2]:

     # apt-get update

4.4.2 更新 aptitude

在進行昇級的測試中顯示,sarge 版的 aptitude 在昇級過程中,對於處理複雜的相依上的問題,它的表現比 apt-get 或 woody 版的 aptitude 更為出色。 因此,應該先將它進行昇級。請使用:

     # aptitude install aptitude

您應該會得到將會進行什麼樣的改變的一串列表,並詢問您是否要繼續進行。在您確認之前,您應該仔細得查看將會進行什麼樣的改變,尤其要注意在昇級的過程中將會被移除掉的那些套件。

在某些狀況之下,會列出來一大串將會被移除的套件的列表。您可以藉由使用 "預先昇級, pre-upgrading" 的方式,也就是在安裝 aptitude 的同時再多安裝另一個特定的套件,來減少這些會被移除的套件的列表。用一個範例來說明可能會比較好理解。在一個安裝了 KDE 的系統的昇級測試中,我們會發現在這個步驟裡,將會移除一大堆的 KDE 套件及/或 perl。而在此提供的解決方案就是使用 install aptitude perl 來取代 install aptitude 指令。


4.4.3 昇級 doc-base

如果系統已經安裝了 doc-base 套件的話,它也必須在昇級系統的其它部份之前就進行昇級。這是因為如果它和 perl 同時昇級的話,將可能會遭遇到失敗。您可以使用以下指令來檢查它是否已被安裝在系統上了:

     # dpkg -l doc-base

如果輸出的文字是以 "i" 開頭的話,它已經安裝在系統上了,並且在繼續下個動作之前必須先進行昇級。

     # aptitude install doc-base

4.4.4 昇級系統的其它部份

那麼,現在已經準備好可以進行昇級作業的重頭戲了。請執行:

     # aptitude -f --with-recommends dist-upgrade

這會對您的系統進行完整的更新,也就是安裝所有套件目前所提供的最新版本,並解決套件在不同發行版之間可能會有的相依性問題。如果有必要的話,它也會安裝一些新的套件(通常是新版的函式庫或是被更名的套件),並移除任何和新版套件發生衝突的過時套件(像是 console-tools-libs。)

如果您是從光碟組來進行升級的話,系統將會在升級進行時不時要求您放入某張特定的光碟片。您可能會需要反覆放入同一張光碟數次;這是由於相關的套件被分散在多張光碟之中所造成的。

如果昇級某些已安裝的套件至新版本時會改變其他套件的安裝狀態的話,這些套件就會被保留在原來的狀態(並顯示為 "留置, held back")。可以使用 aptitude 選擇這些套件並進行安裝,或是試著鍵入 aptitude -f install package,就能夠解決這個問題。

--fix-broken(或只是 -f)選項會讓 apt 嘗試適當地修正系統中錯誤的相依關係。apt 不允許系統中存在任何在相依關係上的錯誤。


4.4.5 在升級過程中可能會發生的問題

如果在使用 aptitudeapt-getdpkg 的過程中失敗了並顯示以下錯誤

     E: Dynamic MMap ran out of room

那麼,就表示預設的快取空間不夠了。您可以從 /etc/apt/sources.list 中將您不需要的項目加上註解或是乾脆將它移去,或是增加快取空間,來解決這個問題。可以經由設定 /etc/apt/apt.conf 裡的 APT::Cache-Limit 來增加快取空間。假設您還沒有在這個檔案裡替這個變數設定任何的數值,那麼以下的命令應該可以替昇級的動作設定足夠的快取空間:

     # echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf

有時候您會需要啟用 APT::Force-LoopBreak 選項讓 APT 暫時移除某個重要的套件,以解決循環的 相互衝突(Conflicts) / 相互依存(Pre-Depends) 關係。aptitude 會對此提出警告,並終止升級的進行。您可以在 aptitude 的指令行中加入 -o APT::Force-LoopBreak=1 來解決這個問題。

系統中的相依關係也可能混亂到需要手動介入才得以解決。通常這代表您需要使用 aptitude

     # dpkg --remove packagename

來清除一些會造成問題的套件,或

     # aptitude --fix-broken install
     # dpkg --configure --pending

在極端的情況下,您可能需要利用類似以下的指令來強制進行重新安裝的動作:

     # dpkg --install /path/to/packagename.deb

如果您是由一個 "純粹" 的 woody 進行昇級的話,應該不會有檔案衝突的情況發生;但如果您安裝了非官方的 backports 套件時就不一定了。如果發生檔案衝突時,會產生類似以下的錯誤:

     Unpacking replacement <package-foo> ...
     dpkg: error processing <package-name-for-foo> (--unpack):
      trying to overwrite `<some-file-name>',
      which is also in package <package-bar>

您可以強制移除出現在錯誤訊息裡最一行的那個套件,以解決檔案衝突的問題:

     # dpkg -r --force-depends packagename

在問題都修正了之後,您就應該可以重新輸入先前所描述的 dist-upgrade 指令並繼續升級的工作了。

在升級的過程中,系統可能會詢問您一些問題,以便能對套件進行設定或重新設定。當您被問到是否要把在 /etc/init.d/etc/terminfo 目錄中的檔案 或是 /etc/manpath.config 這個檔案置換成套件維護者所提供的版本時,您通常必須回答 `yes' 以維護系統的一致性。您可以在稍後再復原為舊的設定檔,因為它們都會以在檔名後附加 .dpkg-old 的方式給保留下來。

如果您不太確定要怎麼做的話,把套件或檔案的名稱寫下來,等稍後再慢慢瞭解實際的狀況。您可以在記錄檔中搜尋,以便能重新檢視在系統升級時出現在螢幕上的資訊。


4.5 在重新開機前應該完成的工作

aptitude dist-upgrade 執行完畢後,系統升級「形式上」已經完成了,但仍然有一些工作是在您下次重新啟動系統之前應該要加以注意的。

請閱讀 /usr/share/doc/xfree86-common/README.Debian-upgrade.gz 來取得在昇級 X Window System 套件時的更多相關資訊。這和使用著先前的 Debian 發行版的所有使用者都有關係,簡單得說,您必須先閱讀它。


4.5.1 替您的 Kernel 進行昇級

請注意,在這些過程中並不會進行 Linux Kernel 的昇級。您也許會想要自行手動進行,像是安裝某個 kernel-image-* 套件,或是從原始碼中編譯一個自訂的 Kernel。

在 Debian GNU/Linux 裡包含了屬於 2.4 系列的 2.6.8 Kernel,也就是較為舊式的穩定版 Linux Kernel 系列。為了得到更廣泛的硬體支援或是更高的執行效能,您也許會想要使用 2.6 系列的 Kernel。

然而,在此強烈建議您不要將 Kernel 昇級至 2.6 視為由 woody 昇級至 sarge 的計劃的一部份。一些和昇級至 2.6 的相關問題已寫在 將 Kernel 昇級至 2.6, 第 5.2 節 裡了。

若想要昇級您的 Kernel,您首先必須選定一個最符合於您所使用的平台的 Kernel。若想要取得您可以用來安裝的 Kernel 列表,您可以使用:

     # apt-cache search ^kernel-image

接下來,您應該使用 aptitude install 來進行安裝。當新的 Kernel 安裝完畢後,您應當找個適當時機重新開機,以便能享用它所帶來的種種好處。

請注意,woody(包括更之前的發行版本)所安裝的系統並沒有將 Kernel 視為系統上的一個套件。這在 sarge 裡將有所改變,而您將可以利用安裝虛擬套件的方式來持續追蹤 Kernel 的變化。這些套件是以 kernel-image-VERSION-ARCH 來命名,其中的 VERSION 是用來對應 Kernel 的版本號碼(2.4 或 2.6),而 ARCH 則對應至其所支援的硬體架構。如果您希望能將 Kernel 的安全性支援和套件管理整合在一起,請在昇級之後安裝最適用於您的硬體的 Kernel 套件。

對於那些比較富有冒險心的人,我們也提供了一個在 Debian GNU/Linux 上自行編譯 Kernel 的簡易方法。請安裝 kernel-package 工具並詳細閱讀在 /usr/share/doc/kernel-package 裡的說明文件。


4.6 被廢棄的套件

雖然在 sarge 裡採用了數千個新的套件,但它同時也撤除並捨棄了超過兩千個曾經包含在 woody 裡的舊套件。它將不會再提供這些已遭廢棄的套件任何的昇級途徑,雖然我們並不會禁止您企圖繼續使用這些已遭廢棄的套件,但依慣例,在 sarge 發佈的一年之後 Debian 專案將不會再針對它們繼續提供安全上的支援[3],而除此之外,我們在這段期間內一般並不會再提供其它方面的支援。如果可以的話,我們建議您能採用其它的替代方案來取代這些套件。

而這些套件為什麼會從發行版中移去的原因不一而足:有的是因為它的原始程式已經沒有人在繼續維護了;有的是因為已經沒有 Debian 的開發者有意願想要繼續維護這些套件了;有的是因為它們所提供的功能已經被其它的軟體(或是新的版本)所取代了;有的是因為它們本身所包含的一些 Bug 使得我們認為它們已無法和 sarge 相容。如果是最後一個情況,這些套件很可能是被放在 "unstable" 這個分類裡。

因為套件管理的前端介面會將這些套件標示為 "廢棄(obsolete)",因而我們可以很輕易得就可以判斷在一個已經過昇級後的系統裡,哪些套件已遭廢棄了。如果您所使用的是 aptitude,您可以在【廢棄及本機所建立的套件, Obsolete and Locally Created Packages】這個項目裡看到這些套件的列表。在 dselect 裡也提供了類似的功能但它所顯示的列表可能會有點不太一樣。同時,如果您之前是手動使用 aptitude 來安裝 woody 的套件,它會持續得追蹤這些您手動安裝的套件,並且如果有某個套件被移除了,而使得這些因相依關係而被安裝的套件已經不再有任何作用時,它可以找出這些套件並將其標示為 "廢棄"。而像是 deborphan 並不會將您手動安裝的套件標示為 "廢棄";但 aptitude 則是完全相反,即使這些套件是因為相依性才被自動安裝進來的。

還有一些其它的套件可以讓您用來尋找這些廢棄了的套件,像是 deborphandebfostercruft。其中推薦使用 deborphan,因為它在預設的模式下只會報告已遭廢棄了的函式庫:位於 "libs" 或 "oldlibs" 區的套件就表示它們已不再被其它的套件所使用了。但請不要輕率得依據這些工具所回報的列表就把這些套件給移掉了,尤其是您在執行時使用的不是預設的,而是較為寬鬆的選項時,它們很可能會因而做出不正確的判定。因此在此強烈建議您,在進行移除的動作之前,您必須親自再重新檢視一次這些將要被移除的套件,包括它們的內容、大小,及它們的詳細說明。

Debian 錯誤追蹤系統 裡常常會提供了為什麼某個套件會被移掉的相關資訊。您可以使用該套件本身的 bug report 資料庫,或是在 ftp.debian.org pseudo-package 裡的 bug report 資料庫來重新檢視這些資訊。


4.6.1 虛擬 (Dummy) 套件

有時為了讓系統能更易於管理,有些原來是包含於 woody 的套件在 sarge 裡已被分開成數個套件。在此況狀下,為了能讓昇級的過程更加順遂,sarge 通常會採取提供 虛擬 (Dummy) 套件的方式:使用一個和原本是包含於 woody 的套件相同名稱的套件,但它的內容卻是空的,但利用相依上的關聯性來使得新的套件能被安裝。這些虛擬套件在昇級之後就會被視同廢棄套件了,您可以放心得移除它們。

大多數(但不是所有)的虛擬套件會在套件的說明中會介紹它們的用途,雖然它們的說明的格式並不統一,所以您可能會發現 deborphan 在搭配 --guess 選項時可以輕易得把它們從您的系統中找出來。請注意,有些虛擬套件並不希望您在昇級後就將其刪除,因為日後您可以替而使用它來追蹤是否有任何新版本出現。


[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ 下一頁 ]


Debian GNU/Linux 3.1 (`sarge'), PowerPC 的發行情報

$Id: release-notes.zh_TW.sgml,v 1.11 2005/06/02 21:54:16 jseidel Exp $

Josip Rodin, Bob Hilliard, Adam Di Carlo, Anne Bezemer, Rob Bradford (current), Frans Pop (current)
debian-doc@lists.debian.org