******************
我們需要這項資訊,以及其他任何和各平台移植相關的細節。
******************
以下套件的名稱已經如所示的改變了。在大部分(即使不是全部)的情況下,開發人員都已經提供了適當的 Conflicts:、Replaces:、和 Provides: 欄位,使得新的套件能夠自動地被安裝好,並且(或)安全地取代並移除舊的套件。這也包含了被合併到其他套件中的套件,因為最後的結果和重新名命是相同的。
gimp -> gimp1.2 (只限於 GIMP1.2 版)
dict-web1913 -> dictgcide
amcl -> gnome-mud
rstart -> xutils
rstartd -> xutils
xbookss -> xspecs
xfonts-cjk -> xfonts-base
xcontrib -> xbase-clients
xlib6g-static -> xlibs-dev
listar -> ecartis
cln -> libcln2
cln-dev -> libcln-dev
pgp-i, pgp-us -> pgp
cvs-doc -> cvs
acm -> acm4
user-ja -> language-env
expect5.31, expect5.24 -> expect
sgml-tools -> linuxdoc-tools
sgmltools-2 -> sgmltools-lite
bonnie -> bonnie++
c2ps -> a2ps
camlp4 -> ocaml
corel-util -> nwutil
crossfire-sounds -> crossfire-client-sounds
cslatex, csplain, cstexfonts -> tetex
cspsfonts -> tetex-extra
custom-mule -> mule2-support
docbook2x, cygnus-stylesheets -> docbook-utils
db -> db2
dgs -> xfree86
docbook-stylesheets -> docbook-dsssl
genius, drgeo -> drgenius
egcs1.0 -> egcs1.1
emacs19 -> emacs20
f77reorder -> g77
flim1.13 -> flim
gdict -> gnome-utils
libgmp2, gmp, gmp1 -> libgmp3
gnome-users-guide-en -> gnome-user-docs
gnomehack -> nethack
gpasm -> gputils
gsl-ref-pdf -> gsl-ref-ps
gstep-core -> gnustep-core
gstep-extensions -> gnustep-extensions
gstep-guile -> gnustep-guile
gzilla -> dillo
hanterm -> hanterm-xf
imap -> uw-imap
iplogger -> ippl
jgroff -> groff
lib-sax-java, lib-xp-java, lib-xt-java -> xalan2, libxt-java
libansicolor-perl -> perl
libape -> libcommonc++
libgc4 -> libgc6
libgcj -> libgcj2
libid3 -> id3lib
libmalaga1 -> malaga
libmpeg-mp3info-perl -> libmp3-info-perl
libpth -> pth
libv1.22 -> libv1.25
listar -> ecartis
lvm -> lvm10
mdutils -> raidtools2
mutt-ja -> mutt
myodbc2.50.26 -> libmyodbc
oldncurses, ncurses3.4, ncurses4.2 -> ncurses (5.2)
nfs-server -> nfs-user-server
palm-doctoolkit -> pyrite-publisher
pbm2ppa -> pnm2ppa
pcre, pcre2 -> pcre3
puzzle -> tree-puzzle
rt -> root-tail
selfhtml -> chaos, t-gnus
sgmlspm -> libsgmls-perl
synaptics -> tpconfig
tknamazu -> namazu2
typist -> gtypist
umich-ldap -> openldap
wanderlust2 -> wl-beta
wdsetup -> nictools-nopci
wnn6-dev -> wnn6-sdk
wxftp -> axyftp
xacc -> gnucash
xjscal -> libjsw
zope-siteaccess -> zope
雖然我們盡全力加入所有相關的資訊,但還是有被更名或合併的套件沒有被包含在這份列表之中。
在 2.2 (`potato') 和 3.0 (`woody') 版的發行之間,有些套件已經被分割成兩個以上的套件了。一般而言,套件會被分割的原因是它提供了許多不同的功能,而只有極少數的使用者會用到所有的功能。有些套件會在安裝時顯示關於套件分割的警告訊息,有些會在套件的說明文件中加入相關的訊息,而有些則沒有提供任何說明。
如果您發現一個您熟悉的套件缺少了它部分或全部的功能,請檢查以下的列表,以決定您是否需要安裝額外的套件來取得原先所有的功能。如果還是找不到相關資訊的話,請檢視在
/usr/share/doc/package/changelog.Debian.gz
中的套件改版記錄。
以下是已經被分割的套件列表(這份列表可能並不完全):
isdnutils -> ipppd, isdnlog, isdnutils-doc, isdnutils-xtools,
isdnvboxserver, isdnvboxclient
xpdf -> xpdf-reader, xpdf-utils, xpdf-chinese-simplified,
xpdf-chinese-traditional, xpdf-cyrillic, xpdf-japanese,
xpdf-korean,xpdf-thai
cupsys -> cupsys (CUPS daemon), cupsys-client (CUPS client),
cupsys-pstoraster (postscript rasterizer)
groff -> groff-base, groff, groff-x11
xspectemu -> spectemu-common, spectemu-svga, spectemu-x11
ecpg -> libecpg3 (library), postgresql-dev (development
files)
postgresql-pl -> libpgperl, libpgtcl
netbase -> netbase, portmap, ifupdown, ipautofw, ipchains,
ipfwadm, ipmasqadm, iputils, net-tools, netkit-base
uqwk -> uqwk, uqwk-spool
tetex-bin -> tetex-bin, texi2html
xproxy -> lbxproxy, proxymngr, xfwp
xlib6g -> xlibs, libxaw6
xlib6g-dev -> libxaw6-dev, xlibs-dev
xbase-clients, xlib6g-dev, xcontrib -> xutils
xconq -> xconq, xconq-common
python-imaging-doc -> python-imaging-doc,
python-imaging-doc-html, python-imaging-doc-pdf
gnumeric -> gnumeric, gnumeric-doc, gnumeric-python
latex2rtf -> latex2rtf, latex2rtf-doc
glade -> glade, glade-gnome, glade-gnome-db, glade-common,
glade-doc
apmd -> apmd, xapm, libapm1, libapm-dev, powermgmt-base
uudeview -> uudeview, xdeview, libuu-dev
sysklogd -> sysklogd, klogd
xtide -> xtide, xtide-data
snack -> libsnack2, libsnack2-dev, libsnack2-doc
gnapster -> gnapster, gnapster-gtk
proftpd -> proftpd, proftpd-common, proftpd-doc, proftpd-ldap,
proftpd-mysql, proftpd-pgsql
alsaplayer -> alsaplayer-common, alsaplayer-gtk,
alsaplayer-nas, alsaplayer-text, libalsaplayer-dev,
libalsaplayer0
Debian 的原則是儘量避免修改原作者發行的套件,因此在原作者發行套件中的改變也會反應在 Debian GNU/Linux 之中。
在 Debian GNU/Linux 2.2 'Potato' 發行中 tar 是使用
-I
參數來代表 bzip 壓縮,而現在您則必需改用
-j
參數。您可能也需要依同樣的方法改變腳本程式的內容。
在對您的系統進行升級之前,我們強烈建議您做一次完整的備份,至少您也應該把不可或缺的資料和設定資訊給備份起來。升級所用的工具和過程都是十分可靠的,但在升級過程中發生的硬體錯誤會使得您的系統停留在嚴重受損的狀態之中。
您會想要備份的內容包括 /etc 目錄和 /var/lib/dpkg
目錄中的內容,以及 dpkg --get-selections \* 所輸出的資訊。
您應該在進行任何升級之前先把您的計畫告知使用者,不過至少利用 ssh
從遠端存取系統的使用者在升級過程中可能不會發現任何異狀,而會希望持續進行他們的工作。如果您要採取額外的預防措施的話,請在升級前備份或卸載使用者的分割區
(/home)。您在升級前後通常並不需要重新開機。
您應該在本地端透過文字模式的虛擬終端機(或直接連線的序列終端機)或從遠端透過
ssh 連線進行發行升級的動作。
重要:您不應該透過
telnet、rlogin、rsh、或是由您所要升級的系統上的
xdm 管理的 X
行程進行升級。這是因為這些服務在升級的過程中都可能會中斷,而留下一個只完成了部分升級而無法存取的系統。
不論您是用什麼方式進行系統的更新,我們都建議您先檢查所有套件的狀態,並確認所有的套件都能夠被順利更新。以下的指示會顯示所有狀態是半安裝 (Half-Installed) 或設定失敗 (Failed-Config) 或有其他任何錯誤的套件。
# dpkg --audit
除此之外,檢查系統中所有套件的方法還包括使用 dselect
或利用以下的指令:
# dpkg -l | pager
或是
# dpkg --get-selections > ~/curr-pkgs.txt
在理想的狀況中,您應該在進行系統升級前移除所有的保留 (hold) 旗標。如果有任何應該升級的關鍵套件被設定為保留狀態,升級的動作就會失敗。您可以用以下的指令找出被設定為保留狀態的套件:
# dpkg --audit
如果您自行在系統中編譯了改變過的套件,而沒有把它更名或在版本號碼中使用
epoch,那您就必須把它設定為保留狀態,以防止它被升級到新的版本。您可以用
dselect 來改變套件的保留狀態(在套件選單中使用 `H' 和 `G'
分別設定和解除套件的保留狀態),或是在
dpkg --get-selections > ~/curr-sels.txt
指令產生的檔案之中把 "hold" 改成 "install"(反之亦然),然後以 root 的權限執行
dpkg --set-selections < ~/curr-sels.txt
2.2 版以前的發行在 ssh 套件中,或 2.2 版發行在
ssh-nonfree 套件中的商用版 SSH 在這次的發行中已經被符合 DFSG
自由定義的 ssh 套件 (OpenSSH) 所取代了。我們已經不提供商用的 SSH
實作了,而現在 ssh-nonfree 只是一個會安裝 OpenSSH ssh
套件的假套件。ssh 套件中會透過 Debconf 詢問您是否要重新產生和
OpenSSH 相容的設定檔。
請注意這一次發行中的 ssh 套件預設是允許 root 登入的(在 2.2
中預設是關閉這項功能)。如果您不需要這項從遠端存取您的系統的功能,為了安全上的理由,您應該在升級後確認在
/etc/ssh/sshd_config 中的 PermitRootLogin 選項是設成
no。您只要自行修改這個檔案的內容,就可以防止 dpkg
自動依照新的預設值來修該它的內容。通常您只需要加上一個空白行就足以達成這個目的了。
您應該確定 /etc/rcS.d 目錄在升級前就已經存在;不然在安裝
libc6 套件時會發生錯誤。
如果 /usr/share/doc 目錄已經存在的話,它一定不能是個(指向
/usr/doc
的)符號連結,不然會使某些套件發生問題。然而,系統允許您把
/usr/doc 連結到 /usr/share/doc
目錄去。如果您使用了這樣的符號連結,您就會看到許多關於無法移除/usr/doc
目錄的訊息。這是完全正常的,所以您可以直接忽略這些訊息。
我們建議的升級方式是直接依以下的指示使用 apt-get。APT
的內建相依性分析能力使得升級安裝的動作變得平順而簡單。
您不應該在 dselect 中使用除了 apt
之外的任何方法來進行主要的套件升級,因為其他的方法不像 apt
一樣能在安裝時自動計算套件在邏輯上的先後順序,因此會比較不那麼可靠。除此之外,這些方法並沒有經過詳細的測試,而也不被
Debian 所支援。
任何套件安裝的動作都需要有系統管理者的權限才能進行,所以您必須以 root
登入,或使用 su 或 sudo 來取得所需的權限。
在開始進行升級前,您必須先設定 apt 的套件列表設定檔
/etc/apt/sources.list。
apt 會把所有可以在 "deb"
行中能找到的套件列入考慮,並安裝其中版本號碼最高的套件,並優先從前面列出的來源取得套件(因此當您在許多不同位置都有套件可供使用時,您可以讓系統依本地端硬碟、光碟片、遠端
HTTP/FTP 的順序取得套件)。
雖然系統的預設設定是由 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/woody/main/binary-alpha/...
http://mirrors.kernel.org/debian/dists/woody/contrib/binary-alpha/...
要讓 apt 使用這個映射網站,請把以下的這一行加入您的
sources.list 檔案之中:
deb http://mirrors.kernel.org/debian woody main contrib
請注意 `dists' 是會被自動加到路徑中的,而在發佈名稱後的參數則會被用來展開成多個不同目錄的路徑。
在您加入了新的 APT 來源之後,請在 sources.list 中原有的
"deb" 設定行前加入井字符號 (#)
以關閉這些套件來源。
所有從網路上下載安裝的套件都會被存放在 /var/cache/apt/archives
目錄中(而下載中的檔案則會被存在 partial/
子目錄中),所以在嘗試開始安裝前請確保您有足夠的磁碟空間。對一個裝有相當套件的
Debian 系統來說,下載的資料量應該會超過 300 MB。
注意:如果您使用的是靜態連結的 apt 和 dpkg
套件,您將無法使用主機和網域名稱查詢的功能(這也就是為什麼透過網路升級時應該要使用一般的
apt 的原因)。這個問題的解決方法是直接在
"deb" 行中填入映射網站的 IP 位址。(提示:您可以使用
nslookup some-server)
您可能也會想修改 /etc/apt/sources.list
中的設定,以使用本地端(包括透過 NFS 掛載的)磁碟上的映射資料來取代透過 HTTP 或
FTP 存取遠端的套件映射網站。
舉例來說,如果您的套件映射是放在 /var/ftp/debian/
之下,而主要的目錄看起來是像這樣的話:
/var/ftp/debian/dists/woody/main/binary-alpha/...
/var/ftp/debian/dists/woody/contrib/binary-alpha/...
您如果要讓 apt 使用這個本機上的映射,請把以下的設定行加入
sources.list 檔案之中:
deb file:/var/ftp/debian woody main contrib
請注意 `dists' 是會被自動加到路徑中的,而在發佈名稱後的參數則會被用來展開成多個不同目錄的路徑。
在您加入了新的 APT 來源之後,請在 sources.list 中原有的
"deb" 設定行前加入井字符號 (#)
以關閉這些套件來源。
請參考以上的說明,以決定您是否需要依以上的步驟安裝新版本的 apt 和
dpkg 套件。
如果您只要使用光碟,請在 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 (這會把光碟掛在掛載點下)
ls -alF /cdrom (這會顯示光碟的根目錄的內容)
umount /cdrom (這會卸載光碟)
接下來對每一張 Debian 的程式光碟執行
apt-cdrom add
以把每一張光碟的資料加到 APT 的資料庫中。
不要忘了用類似以下的指令把所有的分割區(特別是 /usr
和根分割區)重新以可讀寫的模式掛載:
mount -o remount,rw /mountpoint
假設您已經依以上的說明把 apt 的 sources.list
給設定好了,接下來請以 root 的權限執行:
apt-get update
這會把套件綜觀檔案和它的來源進行同步化的動作,同時更新系統中關於新增和新版套件的資訊。
我們強烈建議您使用 /usr/bin/script
程式來記錄升級的完整過程。如果發生了任何問題,您就有了所發生問題的確實記錄,如果有必要的話,也能在錯誤報告中提供確實的資訊。要開始記錄的工作,請使用
script -a ~/upgrade-to-woody.typescript
或類似的指令。請不要把記錄檔放在像是 /tmp 或 /var/tmp
之類的暫存目錄下(這些目錄中的檔案可能會在升級途中或重新開機時遭到清除)。
在您開始進行主要的升級之前,您應該先升級 apt、dpkg、和 debconf 這三個套件。APT 從上一次發行到現在已經有了許多的改進。Debconf 則是一個被新近的套件廣泛使用的重要工具。
apt-get install dpkg apt debconf
這會把其餘的安裝步驟所需的最新版 dpkg、apt、和
debconf
安裝到系統之中。它同時也會把一些必須的系統函式庫升級到最新的版本。
當 debconf 詢問它所要詢問的問題種類時,請不要選擇 'critical' 選項,因為那會使您錯失許多重要的問題。
有些人會喜歡用以下的指令先排練升級的過程
apt-get --fix-broken --show-upgraded --simulate dist-upgrade | pager
雖然這會花上不少的時間,但它可以避免在真正的升級過程中遭遇不在預期中的問題。它會告訴您系統出了什麼問題(以及解決的方式),或者是,在大多數的情況下,告訴您在升級過程中所會完成的工作。請注意所有會被“移除 (REMOVED)”的套件,其中不應該包含任何重要的套件。
在您確定了 apt-get 應該沒有問題後,執行女7
apt-get --fix-broken --show-upgraded dist-upgrade
這會對您的系統進行完整的更新,也就是安裝所有套件所提供最新版本,並解決在不同發行版本之間的套件可能會有的相依性問題。如果有需要的話,它也會安裝一些新的套件(通常是新版的函式庫或是被更名的套件),並移除任何和新版套件發生衝突的過時套件。
如果您是從光碟集進行升級的話,系統將會在升級進行時要求您更換某張特定的光碟片。您可能會需要反覆插入同一張光碟數次;這個由於相關的套件被分散在多張光碟之中所造成的。
如果更新某些已安裝的套件會改變其他套件的安裝狀態的話,這些套件就會被保留在原來的狀態(並顯示為
"held back")。因此,您可能需要使用 dpkg 或
dselect
來移除或重新安裝一些損壞的套件或相依關係。除此之外,您也可以在 apt-get -f
dist-upgrade 後輸入 apt-get dselect-upgrade 指令(請參考
apt-get(8) 的手冊文件)。
--fix-broken(或只是 -f)選項會使得 apt
嘗試就地修正系統中錯誤的相依關係。apt
不允許系統中有任何相依關係的錯誤。
有時候您會需要開啟 APT::Force-LoopBreak 選項讓 APT
暫時移除一個重要的套件,以解決循環的 Conflicts/Pre-Depends
關係。apt-get 會對此提出警告,並終止升級的過程。您可以靠著在
apt-get 的指令行加入 -o APT::Force-LoopBreak=1
來解除這個問題。
系統中的相依關係也可能混亂到需要人工介入才得以解決。通常這代表您需要使用
dselect 或
dpkg --remove packagename
來清除一些會造成問題的套件,或
apt-get --fix-broken --show-upgraded install
dpkg --configure --pending
在極端的情況下,您可能需要利用以下的指令來進行強制重新安裝的動作
dpkg --install /path/to/packagename.deb
在問題都修正了之後,您就應該可以重新輸入先前所描述的 dist-upgrade 指令以繼續升級的工作。
在升級的過程中,系統可能會詢問您一些問題,以對套件做設定或重新設定的工作。當您被問到是否要把在
/etc/init.d 或 /etc/terminfo 目錄中的檔案或
/etc/manpath.config 置換成套件維護者所提供的版本時,您通常必須回答
`yes'
以維護系統的一致性。您可以稍後再選擇復原舊的設定檔,因為它們都會以在檔名後附加
.dpkg-old 的方式被保存起來。
如果您不太確定要怎麼做的話,把套件或檔案的名稱寫下來,等到有時間的時候再慢慢瞭解實際的狀況。您可以在記錄檔中搜尋在系統升級時出現在螢幕上的資訊。
當 apt-get dist-upgrade 執行完畢後,“形式上的”系統升級就已經完成了,但仍然有一些工作是在您下次重新啟動系統之前應該要完成的。
最重要的是,您可能需要安裝 locales 和 util-linux
套件。您可以靠著以下的指令完成這項工作:
apt-get install locales util-linux
如果您是從 Debian 2.0 或更早以前的發行升級上來的,這將會移除 getty
套件,因為 getty 套件現在已經是 util-linux
套件的一部分了。
有些同樣也需要安裝的套件可能沒有被 apt-get 察覺,因為
apt-get 不會自動選擇不是其他套件所需要(例如被列在 Recommends: 及
Suggests: 欄位中)的套件。您可以輕易地用dselect
或其他視覺化的前端介面程式來找到這些套件。在 dselect 的 [A]ccess
畫面中選擇 `apt' 方法(如果您還沒有這麼做的話)並利用 [U]pdate
更新資料庫中的套件資訊。然後,在 [S]elect 畫面中,按下 `o',`o',`v' 和 Shift-d
然後尋找
--- Obsolete and local packages present on system ---
這樣的標頭。在這一節中您就會看到所有這樣的套件。舉例來說,舊的
gimp 套件已經被 gimp1.2 所取代了。您可以透過
dselect 安裝新的套件(這會顯示一個 ``dependency conflict
resolution'' 畫面,指出您應該移除舊版的套件),或使用
apt-get install gimp1.2
這會立刻移除舊版的套件(您可能需要確認這個動作)。
另一個連在 dselect 中都不會顯示出來的例子,是 telnet 和 talk
的伺服器和客戶端程式,以及 NFS 伺服器,因為它們都是從原本的 netstd
套件中分割出來的。您可以用類似以下的指令安裝這些套件:
apt-get install telnet telnetd talk talkd nfs-server
從 manpages 中分割出來的 manpages-dev
套件的狀況也十分相似。
請參考 Debian GNU/Linux 前一個發行版本的發行情報以取得在那次發行中被分割的套件資訊;然後再回來閱讀 名稱改變的套件, 第 3.1.1 節 和 被分割的套件, 第 3.1.2 節 以瞭解有哪些套件在這一次的發行中被分割了。
請注意以上的程序並不會更新您的系統核心。您可能會想自己透過安裝
kernel-image-*
其中之一的套件,或從原始碼編譯一個新的系統核心來進行更新的動作。
Debian GNU/Linux 中所附的是比較老舊的 2.2 系列穩定系統核心 2.2.20。您可能會因為更廣泛的系統支援或更好的執行效能而希望改用 2.4 系列的系統核心。從第三張光碟開機會自動改用 2.4 系列的核心,您也可以直接安裝已經編譯好的核心套件。
apt-get install kernel-image-2.4.18-{386,586tsc,686}
對於那些比較富有冒險心的人,我們也提供了一個在 Debian GNU/Linux
編譯自製核心的簡易方法。請安裝 kernel-package 並詳細閱讀在
/usr/share/doc/kernel-package 中的說明文件。
請盡情享受您新的 Debian GNU/Linux 3.0 系統! :-)
Debian GNU/Linux 3.0 (`woody'), Alpha 發行情報
$Id: release-notes.zh_TW.sgml,v 1.1 2003/01/04 00:37:57 joy Exp $debian-doc@lists.debian.org