Debian APT HOWTO
LYOO 翻譯 轉自 www.linuxsir.com
概要
本文檔的寫作目的是幫助使用者了解Debian包管理工具——APT的工作原理,我們的目标是簡化Debian新使用者的生活以及為那些希望深入了解系統管理的人提供幫助。它也是為Debian項目組而作的,以幫助改善其為發行版提供技術支援的工作品質。
版權聲明
Copyright ? 2001, 2002 Gustavo Noronha Silva
This manual is licensed under the terms of the GNU FDL (Free Documentation License). It has been written in the hope that it will be useful to the community but it comes with no warranty; use it at your own risk.
目錄
1.導言
2.基礎設定
2.1 /etc/apt/sources.list檔案
2.2 怎樣在本地使用APT
2.3 選擇最佳鏡像釋出站點加入source.list檔案:netselect,netselect-apt
2.4 将CD-ROM加入source.list檔案
3.軟體包管理
3.1 更新可用軟體包清單
3.2 安裝軟體包
3.3 移除軟體包
3.4 更新軟體包
3.5 更新到新版本
3.6 移除無用軟體封包件:apt-get clean and autoclean
3.7 在dselect中操作APT
3.8 如何keep a mixed system
3.9 如何從Debian的專用版本下更新軟體包
3.10 如何維護已安裝軟體包的多個版本(複雜)
4.非常有用的助手
4.1 如何安裝本地編譯的軟體包:equivs
4.2 移除無用的locale files檔案:localepurge
4.3 如何知曉哪些軟體包可以更新
5.擷取軟體包資訊
5.1 獲得軟體包名稱
5.2 使用dpkg查找軟體包名稱
5.3 如何“按需”安裝軟體包
5.4 如何知道檔案屬于哪個軟體包
5.5 如何掌握軟體包的變化情況
6.操作源碼包
6.1 下載下傳源碼包
6.2 編譯源碼包所需的軟體包
7.如何處理錯誤
7.1 一般錯誤
7.2 在哪兒獲得幫助?
8.哪些版本支援APT?
9.感謝
10.本使用指南的新版本
Debian APT HOWTO 第一章 導言
APT HOWTO
第一章 導言
最初隻有.tar.gz的打封包件,使用者必須編譯每個他想在GNU/Linux上運作的軟體。使用者們普遍認為系統很有必要提供一種方法來管理這些安 裝在機器上的軟體包,當Debian誕生時,這樣一個管理工具也就應運而生,它被命名為dpkg。進而著名的“package”概念第一次出現在 GNU/Linux系統中,稍後RedHat才決定開發自己的“rpm”包管理系統。
很快一個新的問題難倒了GNU/Linux制作者,他們需要一個快速、實用、高效的方法來安裝軟體包,當軟體包更新時,這個工具應該能自動管理關聯檔案和維護已有配置檔案,再次,Debian率先解決了這個難題,APT(Advanced Packaging Tool)誕生了。APT後來還被Conectiva改造用來管理rpm,并被其它Linux發行版本采用為它們的軟體包管理工具。
本文檔不打算講解apt-rpm相關知識,因為Conectiva port of APT已很有名了,不過提供有關這部分的補充文檔還是歡迎的。
本文檔是基于Debian下一個發行版的,長官。
Debian APT HOWTO 第二章 基礎設定
APT HOWTO
第二章 基礎設定
2.1 /etc/apt/sources.list檔案
=============================
作為操作的一部分,APT使用一個檔案列出可獲得軟體包的鏡像站點位址,這個檔案就是/etc/apt/sources.list。
檔案中的各項資訊通常按如下格式列出:
deb http://site.http.org/debian distribution section1 section2 section3
deb-src http://site.http.org/debian distribution section1 section2 section3
當然,上面所列的位址項都是假設的不可用的。每行的第一個單詞deb或deb-src,描述了檔案類型,目錄中包含的是二進制軟體包(deb),即 我們通常使用的已編譯好的軟體包;或包含的是源碼包(deb-src),源碼包包含源程式編碼、Debian管理檔案(.dsc)和“Debian化”該 程式所做更改的記錄檔案diff.gz。
通常可以看出如下Debian預設的sources.list:
# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free
# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable non-US
這些是Debian基本安裝所需的軟體包來源位址,第一個deb行指向官方正式軟體包來源,第二個deb行指向non-US軟體包來源,第三deb行指向Debian安全更新檔更新包來源。
最後兩行被注釋掉了(在句首加#),是以apt-get将忽略它們。這些是deb-src行指向Debian源碼包來源,如果你常下載下傳程式源碼來測試或重編譯,可取消對它們的注釋。
/etc/apt/sources.list檔案可包含多種類型的位址,APT知道如何處理這些不同的位址類型:http,ftp,file(本地檔案,例如:一個加載了ISO9600檔案系統的目錄)和ssh。
别忘了在修改完/etc/apt/sources.list檔案後運作apt-get使更改生效。你必須完成這個步驟,以便讓APT從你指定的地方獲得新的軟體包清單。
2.2 如何在本地使用APT
=====================
有時你硬碟上有許多軟體包,你會希望通過APT來安裝它們,以便讓它去處理軟體包廂複雜的依賴關系。
想這麼做,就建一個目錄,将所有你想要安裝的.deb檔案放入其中。例如:
mkdir /root/debs
你可以使用一個重載檔案(override file)直接去修改軟體包中管理檔案中的定義(definitions),使之符合你的軟體儲藏庫管理規則,在這個重載檔案中,你可能希望定義一些選項來重載那些軟體包的定義,如下所示:
package priority section
package是軟體包的名稱,priority有三個級别low,medium或high,section是軟體包所屬的section,重載文 件可任意命名,檔案名将在接下來的步驟中做為參數傳遞給dpkg-scanpackages。如果你不想寫重載檔案,隻需在調用dpkg- scanpackages時使用/dev/null就行了。
仍是在/root目錄下執行:
dpkg-scanpackages debs file | gzip > debs/Packages.gz
在上述的指令行中,file為重載檔案,指令生成一個Packages.gz檔案,它包含了APT所需的各種軟體包資訊,要使用這些軟體包,在sources.list中加上:
deb file:/root debs/
完成了上面的工作,就可以通常那樣使用APT指令操作這些軟體包了。你可以使用同樣的方法生成一個源碼庫,但請記住你需要将. orig.tar.gz檔案、.dsc檔案和.diff.gz檔案包含在目錄中,要生成Source.gz檔案而不是Packages.gz檔案。所使用 的指令也不相同,要使用dpkg-scansources,指令如下所示:
dpkg-scansources debs | gzip > debs/Sources.gz
注意dpkg-scansource不需要重載檔案,在sources.list中的引用法是:
deb-src file:/root debs/
2.3 選擇最佳鏡像釋出站點加入source.list檔案:netselect,netselect-apt
=====================================================================
一個新使用者經常問到的問題:“該将哪個Debian鏡像釋出站點加入source.list檔案?”。有很多方法來選擇鏡像釋出站點,專家們可能會寫一個腳本去測試不同站點的ping time,不過有一個現成的程式可以幫你:netselect。
安裝netselect
apt-get install netselect
不帶參數運作它時會顯示它的幫助資訊。運作它時加上以空格分隔的鏡像主機清單,它會傳回一個分值和清單中的一個主機名。這個分值通過評估ping time和hops number(一個網絡請求封包到達目标主機所經過的轉發主機的個數)得出,它與鏡像站點預計下載下傳速度成反比(數值越小越好)。傳回的主機名是主機清單中得分最低的那個(檢視清單中是以主機的得分情況可使用-vv選項)。看出下的例子:
bash$ netselect ftp.debian.org http.us.debian.org ftp.at.debian.org download.unesp.br ftp.debian.org.br
365 ftp.debian.org.br
bash$
它表示,在netselect後列出的所有主機中,ftp.debian.org.br是下載下傳速度最快的主機,其得分為365。(注意!!這是在我電腦上的測試結果,不同的網絡節點網速會大不相同,是以這個分值不一定适用于其它電腦)
現在将netselect找到的連接配接速度最快的鏡像站點加入/etc/apt/sources.list檔案(see The /etc/apt/sources.list file, Section 2.1)and follow the tips in Managing packages, Chapter 3.
注意:鏡像站點清單通常包含在檔案http://www.debian.org/mirror/mirrors_full。
從0.3版開始,netselect軟體包包含了netselect-apt腳本,它使上述操作自動完成。隻需将釋出目錄樹做為參數(預設為 stable)輸入,sources.list檔案就會生成速度最快的main和non-US鏡像站點清單,并儲存在目前目錄下。下面的例子生成一個包含 stable釋出鏡像站點清單的sources.list
bash$ ls sources.list
ls: sources.list: File or directory not found
bash$ netselect-apt stable
(...)
bash$ ls -l sources.list
sources.list
bash$
記住:sources.list生成在目前目錄下,必須将其移至/etc/apt目錄。
Then, follow the tips in Managing packages, Chapter 3.
2.4 将CD-ROM加入source.list檔案
===============================
如果你用APT從CD-ROM上安裝及更新軟體包,你可以将它加入到sources.list檔案中。完成該操作,可使用apt-cdrom程式:
apt-cdrom add
将DebianCD光牒放入光驅,它将加載CD光牒目錄,并在CD光牒上查找軟體包資訊。如果你的光驅需要額外設定,可使用以下選項:
-h - program help
-d directory - CD-ROM mount point
-r - Rename a recognized CD-ROM
-m - No mounting
-f - Fast mode, don't check package files
-a - Thorough scan mode
例如:
apt-cdrom -d /home/kov/mycdrom add
你還可以掃描一張CD光牒,但不将其加入清單:
apt-cdrom ident
注意,隻有當你在系統的/etc/fstab中正确設定了光驅後,該程式才會工作。
Debian APT HOWTO 第三章 軟體包管理
APT HOWTO
第三章 軟體包管理
3.1 更新可用軟體包清單
======================
軟體包管理系統使用一個私有資料庫跟蹤清單中軟體包的目前狀态:已安裝、未安裝或可安裝。apt-get通過該資料庫來确定如何安裝使用者想用的軟體包以及正常運作軟體包所必須的其它關聯包。
你可以使用apt-get update來更新資料庫清單。這個指令将掃描/etc/apt/sources.list檔案中所指路徑中的軟體包清單檔案。有關該清單檔案的更多資訊請查閱 第二章 /etc/apt/source.list檔案。
定時運作這個程式是個好主意,它将使你和你的系統獲得最新的軟體包更新和安全更新等資訊。
3.2 安裝軟體包
==============
現在,終于到了你一直期待的階段!準備好了sources.list和最新版的的可用軟體包,你所需做的就是運作apt-get來安裝你渴望已久的軟體了。例如,你可以這樣:
apt-get install xchat
APT會掃描它的資料庫找到最新的版本的軟體包,并将它從sources.list中所指的地方下載下傳到本地。如果該軟體包需要其它軟體包才能正常運作——如本例一樣——APT會做關聯性檢查并自動安裝所關聯軟體包。如下所示:
[root]@[/] # apt-get install nautilus
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
bonobo libmedusa0 libnautilus0
The following NEW packages will be installed:
bonobo libmedusa0 libnautilus0 nautilus
0 packages upgraded, 4 newly installed, 0 to remove and 1 not upgraded.
Need to get 8329kB of archives. After unpacking 17.2MB will be used.
Do you want to continue? [Y/n]
nautilus軟體包需要引用共享函數庫,是以APT會從鏡像源處下載下傳相關共享函數庫,如果你在apt-get指令行中手動指定了這些共享函數庫的名稱,APT會預設為你要安裝所有這些軟體包。
也就是說APT隻會在安裝那些沒有在指令行中指定的軟體包時提示你進行确認。
下列apt-get選項也許對你有用
-h This help text.
-d Download only - do NOT install or unpack archives
-f Attempt to continue if the integrity check fails
-s No-act. Perform ordering simulation
-y Assume Yes to all queries and do not prompt
-u Show a list of upgraded packages as well
可以用一條指令安裝多個軟體包。封包件從網絡上下載下傳到本地/var/cache/apt/archives目錄,稍後再安裝。
你可以用同樣的指令行删除指定軟體包,隻需在軟體包名稱後緊跟一個“-”,如下所示:
[root]@[/] # apt-get install nautilus gnome-panel-
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
bonobo libmedusa0 libnautilus0
The following packages will be REMOVED:
gnome-applets gnome-panel gnome-panel-data gnome-session
The following NEW packages will be installed:
bonobo libmedusa0 libnautilus0 nautilus
0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded.
Need to get 8329kB of archives. After unpacking 2594kB will be used.
Do you want to continue? [Y/n]
有關删除軟體包的更多詳細資訊,參閱 3.3 移除軟體包。
假如你不小心損壞了已安裝的軟體包而想修複它,或者僅僅想安裝軟體包中某些檔案的最新版本,這是可以做到的,你可以用--reinstall選項:
[root]@[/] # apt-get --reinstall install gdm
Reading Package Lists... Done
Building Dependency Tree... Done
0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded.
Need to get 0B/182kB of archives. After unpacking 0B will be used.
Do you want to continue? [Y/n]
本文檔寫作時所參考的APT版本為0.5.3,這個版本還屬于“unstable”(sid)階段。如是你安裝了這個版本,你可以在系統配置中使用新增的功能:你可以用apt-get install package/distribution來安裝指定釋出版中的軟體包,或者用apt-get install package=version,如下所示:
apt-get install nautilus/unstable
它将為你安裝“unstable”釋出版中的nautilus軟體包,即使你目前運作的是“stable”版本。指令中“distribution”選項的可用參數值為:stable,testing,unstable。
在處理關聯問題時,你可能更樂意使用-t開關來選擇目标釋出版,讓apt-get幫你考慮使用哪個釋出版。
重要資訊:最新版的Debian軟體包首先會上傳到“unstable”釋出版中,這個釋出版包含了軟體包所有更改階段,無論是小修小補還是影響到衆多軟體包乃至整個系統的重大修改。是以,新手和那些強調系統穩定性的使用者不會使用這個釋出版。
“testing”釋出版比起“unstable”釋出版,多注重了些系統穩定性,但正式運作的系統應當使用“stable”釋出版。
3.3 移除軟體包
==============
如果你不再使用某些軟體包,你可以用APT将其從系統中删除。要删除軟體包隻需輸入:apt-get remove package。如下所示:
[root]@[/] # apt-get remove gnome-panel
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
gnome-applets gnome-panel gnome-panel-data gnome-session
0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded.
Need to get 0B of archives. After unpacking 14.6MB will be freed.
Do you want to continue? [Y/n]
由上例可知,APT會關注那些與被删除的軟體包有依賴關系的軟體包。使用APT删除一個軟體包将會連帶删除那些與該軟體包有依賴關系的軟體包。
上例中運作apt-get會删除指定軟體包以及與之有依賴關系的軟體包,但它們的配置檔案,如果有的話,會完好無損地保留在系統裡。如果想徹底删除這些包及其配置檔案,運作:
[root]@[/] # apt-get --purge remove gnome-panel
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
gnome-applets* gnome-panel* gnome-panel-data* gnome-session*
0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded.
Need to get 0B of archives. After unpacking 14.6MB will be freed.
Do you want to continue? [Y/n]
注意:軟體包名字後面的*表示該軟體包所有的配置檔案也将被删除。
就象安裝軟體時一樣,你可以在删除指令中用一個符号來指定安裝某個軟體包。在删除軟體包時,如果你在軟體包名字後面緊跟一個“+”,那麼該軟體包就會被安裝而不是删除。
[root]@[/] # apt-get --purge remove gnome-panel nautilus+
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
bonobo libmedusa0 libnautilus0 nautilus
The following packages will be REMOVED:
gnome-applets* gnome-panel* gnome-panel-data* gnome-session*
The following NEW packages will be installed:
bonobo libmedusa0 libnautilus0 nautilus
0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded.
Need to get 8329kB of archives. After unpacking 2594kB will be used.
Do you want to continue? [Y/n]
注意,apt-get列出了那些将要被安裝的關聯軟體包(即保證該軟體包正常運作的其它軟體包)和将要被删除關聯軟體包,然後,再次列出了将要被安裝的軟體包。
3.4 更新軟體包
==============
軟體包更新是APT最成功的特點。隻需一條指令即可完成更新:apt-get upgrade。你可以使用這條指令從相同版本号的釋出版中更新軟體包,也可以從新版本号的釋出版中更新軟體包,盡管實作後一種更新的首選指令為apt-get dist-upgrade;實情參閱 3.5更新到新版本。
在運作該指令時加上-u選項很有用。這個選項讓APT顯示完整的可更新軟體包清單。不加這個選項,你就隻能盲目地更新。APT會下載下傳每個軟體包的最新更新版本,然後以合理的次序安裝它們。注意在運作該指令前應先運作apt-get update更新資料庫。有關詳情參閱 3.1更新可用軟體包清單。看看這個例子:
[root]@[/] # apt-get -u upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages have been kept back
cpp gcc lilo
The following packages will be upgraded
adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent
ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev
libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0
libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc
29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used.
Do you want to continue? [Y/n]
整個更新過程非常簡單。注意在本例中頭幾行,apt-get報告有些軟體包的更新被阻止(kept back),這表明這些軟體包的更新版本因故無法安裝,可能的原因有關聯不同步(目前沒有供下載下傳的新版本關聯包)或關聯擴充(需要安裝新的關聯包以配合新版軟體包)。
對于第一種原因沒有很好的解決方法,對于第二次原因,運作apt-get intall安裝所需的新關聯包就可以。另一個更好的解決方法就是使用dist-upgrade。詳情參閱 3.5更新到新版本。
3.5 更新到新版本
================
APT的絕活就是讓你一次就完成整個系統的更新,不論是通過Internet還是通過CD光牒檔案(購買的碟片或下載下傳的ISO鏡像檔案)。
它也可以用來更新尋些改變了關聯關系的軟體包。即如前所述的那些使用apt-get upgrade時被阻止更新(kept back)的軟體包。
例如,假設你目前使用的Debian為stable revision 0(如woody 3.0 r0,譯者注),而你購買了revision 3的新版Debian(如woody 3.0 r3,譯者注),你可以使用APT從新CD光牒上更新你的系統。使用apt-cdrom(參閱 2.4将CD-ROM加入source.list檔案)将CD光牒加載到/etc/apt/sources.list中,然後運作apt-get dist-upgrade。
請注意,APT總是搜尋最新版本的軟體包,是以,如果一個軟體包在你的/etc/apt/sources.list中所列的版本比CD光牒上所列的版本要新,那麼APT會按照sources.list檔案所指的位址下載下傳這個軟體包而不是使用CD光牒上的軟體包。
在 3.4更新軟體包 中我們舉了個例子,我們看到有些包被阻止更新(kept back),現在我們就用dist-upgrade方法來解決這個問題:
[root]@[/] # apt-get -u dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following NEW packages will be installed:
cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1
libpcre2 logrotate mailx
The following packages have been kept back
lilo
The following packages will be upgraded
adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc
indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0
libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev
liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit
procps psmisc
31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded.
Need to get 0B/7098kB of archives. After unpacking 3118kB will be used.
Do you want to continue? [Y/n]
注意現在那些軟體包将會被更新,那些新的關聯軟體包也會被安裝。但是lilo仍被阻止更新,可能還存在一些比建立新關聯更棘手的問題,我們通過如下方法确定問題所在:
[root]@[/] # apt-get -u install lilo
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
logrotate mailx
The following packages will be REMOVED:
debconf-tiny
The following NEW packages will be installed:
cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
logrotate mailx
The following packages will be upgraded
lilo
1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded.
Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used.
Do you want to continue? [Y/n]
檢視上述提示資訊可知,lilo與debconf-tiny包産生了一個新沖突,這表明除非删除debconf-tiny,否則将無法更新lilo。
想知道該保留或删除哪些軟體包,你可以使用:
# apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Starting
Starting 2
Investigating python1.5
Package python1.5 has broken dep on python1.5-base
Considering python1.5-base 0 as a solution to python1.5 0
Holding Back python1.5 rather than change python1.5-base
Investigating python1.5-dev
Package python1.5-dev has broken dep on python1.5
Considering python1.5 0 as a solution to python1.5-dev 0
Holding Back python1.5-dev rather than change python1.5
Try to Re-Instate python1.5-dev
Done
Done
The following packages have been kept back
gs python1.5-dev
0 packages upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
現在,你很容易就知道不能安裝python1.5-dev軟體包是因為無法滿足另一個軟體包python1.5的關聯要求。
3.6 移除無用軟體封包件:apt-get clean and autoclean
===================================================
當你需要安裝某個軟體包時,APT從/etc/apt/sources.list中所列的主機下載下傳所需的檔案,将它們儲存到本機軟體庫(/var/cache/apt/archives/),然後開始安裝,參閱 3.2 安裝軟體包。
本地軟體庫會不斷膨脹占用大量硬碟空間,幸運的是,APT提供了工具來管理本地軟體庫:apt-get的clean方法和autoclean方法。
apt-get clean将删除/var/cache/apt/archives目錄和/var/cache/apt/archives/partial目錄下的所有檔案,除了被鎖定的檔案。這樣以來,當你需要再次安裝某個軟體包時,APT将重新下載下傳它。
apt-get autoclean僅删除那些不需要再次下載下傳的檔案。
下面這個例子顯示了apt-get autoclean如何工作:
# ls /var/cache/apt/archives/logrotate* /var/cache/apt/archives/gpm*
logrotate_3.5.9-7_i386.deb
logrotate_3.5.9-8_i386.deb
gpm_1.19.6-11_i386.deb
在/var/cache/apt/archives目錄下有兩個不同版本的logrotate軟體封包件以及一個gpm軟體封包件。
# apt-show-versions -p logrotate
logrotate/stable uptodate 3.5.9-8
# apt-show-versions -p gpm
gpm/stable upgradeable from 1.19.6-11 to 1.19.6-12
apt-show-versions顯示logrotate_3.5.9-8_i386.deb提供了logrotate的更新版本,是以 logrotate_3.5.9-7_i386.deb沒用了。同樣gpm_1.19.6-11_i386.deb也沒有用了,因為可以下載下傳該軟體包的更 新版本。
# apt-get autoclean
Reading Package Lists... Done
Building Dependency Tree... Done
Del gpm 1.19.6-11 [145kB]
Del logrotate 3.5.9-7 [26.5kB]
總之,apt-get autoclean僅删除那些過時的檔案。參閱 3.9如何從Debian的專用版本下更新軟體包 獲得更多apt-show-versions相關資訊。
3.7 在dselect中操作APT
======================
dselect工具幫助使用者選取想要安裝的Debian軟體包。它有點複雜甚至令人望而生厭,但經過實踐你就能掌握它恐怖的終端界面。
dselect進階功能之一就是它知道利用Debian軟體包的“推薦”和“建議”能力。(Debian軟體包有一種能力:推薦或建議系統在安裝自 己的同時,安裝别的軟體包以配合自身的工作,當然這些推薦的軟體包不一定是必須的;而dselect工具可以識别和利用這個能力,使用dselect時你 就能體會到。譯者注)以root身份運作dselect,進入程式後選擇apt作為連接配接方式(access)。該步驟不是必須的,但如果你沒有光驅而且想 通過Internet下載下傳安裝軟體包,這是使用dselect的最好方法。
想深入學習dselect的用法,請到Debian網站查閱dselect文檔頁面
http://www.debian.org/doc/ddp
在dselect中選好了軟體包後,運作:
apt-get -u dselect-upgrade
如下例所示:
[root]@[/] # apt-get -u dselect-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
lbxproxy
The following NEW packages will be installed:
bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0
gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl
libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules
libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy
util-linux-locales vacation xbill xplanet-images
The following packages will be upgraded
debian-policy
1 packages upgraded, 30 newly installed, 1 to remove and 0 not upgraded.
Need to get 7140kB of archives. After unpacking 16.3MB will be used.
Do you want to continue? [Y/n]
比較一下我們在相同系統上運作apt-get dist-upgrade時的情形:
[root]@[/] # apt-get -u dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following packages will be upgraded
debian-policy
1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 421kB of archives. After unpacking 25.6kB will be freed.
Do you want to continue? [Y/n]
我們看到在前例中許多軟體包被安裝是其它軟體包“推薦”或“建議”的結果。另外一些軟體包被安裝或删除(例如lbxproxy軟體包)是我們通過dselect工具作出的決定。由此可見dselect與APT結合起來将是一個功能強大的工具。
3.8 如何建構一個混合系統
========================
人們常使用testing釋出版,因為它比unstable要穩定同時又比stable時髦。然而對于那些想運作某些軟體包的最新版本,又不希望 将整個系統遷移到unstable釋出版的還有一種選擇:運作一個testing/unstable混合系統。對另一部分保守的使用者而言,他們可能希望運 行stable/testing混合系統。
要實作混合系統,請在/etc/apt/apt.conf中加入下面的語句:
APT::Default-Release "testing";
以後,在從unstable釋出版安裝軟體包時,使用-t開關:
# apt-get -t unstable install packagename
别忘了,使用Debian的某個釋出版的軟體包時,要将鏡像源加入到/etc/apt/sources.list檔案中。在這個例子中,除了加入testing釋出版鏡像源處,我們還需要加入unstable釋出版鏡像源。
3.9 如何從Debian的專用版本下更新軟體包
======================================
apt-show-versions提供了一個安全的途徑,讓那些使用混合系統的使用者放心更新他們的系統,不必擔心更新會将原來屬于stable的包更新成了unstable包。例如,這條指令将隻更新你的unstable軟體包:
# apt-get install `apt-show-versions -u -b | grep unstable`
3.10 如何維護已安裝軟體包的多個版本(複雜)
==========================================
你可能會遇到這種情況,更改了某個軟體包中的一些檔案,但你沒有時間或根本就不想将這些更改引入到新版本中。或者,你将系統更新到3.0,但仍想繼續使用Debian 2.2下的某個軟體包。你可以“釘住”(pin)這個版本,這樣它就不會被更新了。
操作起來十分簡單,你隻需編輯/etc/apt/preferences檔案。
檔案格式很簡單:
Package: <package>
Pin: <pin definition>
Priority: <pin's priority>
例如,我對sylpheed軟體包做了某些修改,其版本為0.4.99,我想保留這些修改不被更新,可加上:
Package: sylpheed
Pin: version 0.4.99*
注意我用了一個 *(星号)。這是一個“通配符”;它表明我希望“釘住”所有以0.4.99打頭的版本(以防它們被下載下傳并安裝到我機器上。pin控制的是伺服器端的更新軟 件包而非本地的已安裝軟體包。譯者注)。因為Debian使用“Debian版本号”為其軟體包定版本,我不想進行所有這些版本的更新,如果不用通配符, 那麼0.4.99-1版或0.4.99-10版隻要一出爐系統就會安裝它們。如果你修改了軟體包,你一定不希望這麼做。
Priority是可選域;如果沒有特别指定,它的預設值為989。
讓我們來看看pin如何展現優先級(priorty)差別。一個低于0的優先級表示:該軟體包被禁止安裝;優先級在0到100之間表示:軟體包沒有 安裝并且目前也沒有可用版本,這些軟體包不會出現在供選擇版本清單中;優先級為100表示軟體包已被安裝——對于這個已安裝的軟體包,如果有一個不同的版 本要替換它,那麼替換者的優先級必須大于100。
優先級在100以上表示軟體包應該被安裝。典型的例子如,某個軟體包的更新更新檔包,任何處于100和1000(包括1000)之間的優先級都表示上 述情形。但是,一個軟體包如果被定為這樣的優先級,它并不會降級已安裝的版本。例如,如果我安裝了sylpheed 0.5.3并為sylpheed 0.4.99指定了一個優先級為999的pin,那麼由于要滿足pin的優先級,是以0.4.99軟體包不會被安裝。如果要實作軟體包“降級”,則需要将 pin的優先級定為大于1000。(100<優先級<=1000時,如果存在更新包就對本機相關包更新,如果本機軟體包比更新包還新就保持不 變;優先級>1000時,伺服器端軟體包不論比本機的軟體包新還是舊,均對本機相關軟體包進行更新。譯者注)
pin可以被用來控制軟體包的修訂版本(version)、釋出版本(release)或版本來源(origin)。
在前面我們已經看到,釘住修訂版本時使用通配符來代替版本号數字,這樣可一次指定多個版本。
release選項是基于釋出版檔案(Release file)的,這個檔案在本地APT軟體庫中或安裝CD光牒上。如果你從本地軟體庫安裝軟體包而軟體庫中又沒有該檔案,那麼這個選項将失效。來看看 /var/lib/apt/lists/目錄中釋出版檔案的内容,釋出版包括這些參數:a(archive),c(components),v (version),o(origin),l(lable)。
來看一個例子:
Package: *
Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian
Priority: 1001
在本例中,我們選擇了version為2.2*的Debian(它可以是2.2r2,2.2r3——這些版本包含了“point releases”即安全更新和其它非常生要的更新),stable軟體庫,main類軟體包(非contrib或non-free),版本來源和标簽均 為Debian。版本來源(o=)說明誰制作了這個釋出版檔案,标簽(l=)說明該釋出版的名稱:Debian即是指Debian自己,Progeny即 是指後裔制作者,下面是一個釋出版檔案的樣例:
$ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release
Archive: stable
Version: 2.2r3
Component: main
Origin: Debian
Label: Debian
Architecture: i386
Debian APT HOWTO 第四章 幾個非常有用的工具
APT HOWTO
第四章 幾個非常有用的工具
4.1 如何安裝本地編譯的軟體包:equivs
====================================
有時,使用者想使用某些軟體的特殊版本,它們隻以源代碼的形式存在,沒有現成的Debian軟體包。軟體包管理系統在處理這類事務時可能會出問題。 假設你想編譯新版本的郵件伺服器,編譯、安裝一切正常,然而,軟體包管理系統并不知道你在系統中安裝了自己編譯的東西,在Debian中許多基于MTA (Mail Transport Agent 郵件傳輸代理)的軟體包也不知道這些。
現在是equivs登台的時候了。用它來安裝軟體包,它所做的工作就是建立一個新的空軟體包來實作關聯,讓軟體包管理系統相信關聯實作了。
在我們開始以前,我必須提醒你,編譯某個軟體最安全的方法是對該軟體現有的Debian軟體包進行修改後重新編譯,如果你并不知道你正在幹什麼,勸你不要使用equivs替換關聯包。更多資訊請參閱 第六章 源碼包操作。
繼續上面的例子,你安裝好了新編譯的postfix,接下來打算安裝mutt,突然你發現mutt想與另一個MTA建立關聯,而你想讓它使用你剛安裝的新MTA。
轉到某個目錄(例如/tmp)執行:
# equivs-control name
将name替換為你建立的管理檔案(control file),管理檔案按如下格式建立:
Section: misc
Priority: optional
Standards-Version: 3.0.1
Package: <enter package name; defaults to equivs-dummy>
Version: <enter version here; defaults to 1.0>
Maintainer: <your name and email address; defaults to username>
Pre-Depends: <packages>
Depends: <packages>
Recommends: <packages>
Suggests: <package>
Provides: <(virtual)package>
Architecture: all
Copyright: <copyright file; defaults to GPL2>
Changelog: <changelog file; defaults to a generic changelog>
Readme: <README.Debian file; defaults to a generic one>
Extra-Files: <additional files for the doc directory, commaseperated>
Description: <short description; defaults to some wise words>
long description and info
.
second paragraph
我們隻需按自己的需要修改相關項目就行了。檔案中每個項目都描述得很清楚,我們不必在此逐行解釋它們。現在開始修改吧:
Section: misc
Priority: optional
Standards-Version: 3.0.1
Package: mta-local
Provides: mail-transport-agent
行了,就是這樣。mutt要與mail-transport-agent關聯,這是所有MTA共用的一個虛拟包(virtual package),我可以簡單地将這個軟體包命名為mail-transport-agent,不過我更願意使用系統的虛拟包方案,使用Provides選項。
現在你可以開始建立軟體包了:
# equivs-build name
dh_testdir
touch build-stamp
dh_testdir
dh_testroot
dh_clean -k
# Add here commands to install the package into debian/tmp.
touch install-stamp
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package `name' in `../name_1.0_all.deb'.
The package has been created.
Attention, the package has been created in the current directory,
然後安裝這個新建立的.deb。
衆所周知,equivs的用法很多,它甚至可以幫你為那些常用軟體的底層關聯包建立個性化版本。盡情發揮你的想像力吧,不過要小心。
重要提示:管理檔案(control files)的樣例檔案在/usr/share/doc/equivs/examples目錄下。
4.2 移除無用的locale files檔案:localepurge
===========================================
許多Debian使用者僅在固定地區使用Debian。例如,在巴西的Debian使用者,通常使用pt_BR地區配置檔案(locale file)而不會關心es地區配置檔案。
對于這類使用者而言localepurge是一個非常有用的工具,你可以僅保留你目前所用的地區配置檔案,删除其它無用的檔案,進而釋放大量硬碟空間。運作apt-get install localepurge就行了。
它配置起來非常容易,debconf的提問将引導使用者一步一步完成設定。在回答第一個問題時請務必謹慎,如果回答錯了,系統可能删掉所有的地區配置檔案,包括你正在使用的這個。複原它們的唯一方法就是重裝那些軟體包。
4.3 如何知曉哪些軟體包可以更新
==============================
apt-show-versions工具可以告訴你系統中哪些包可以更新以及其它一些有用的資訊。-u選項可以顯示可更新軟體包清單:
$ apt-show-versions -u
libeel0/unstable upgradeable from 1.0.2-5 to 1.0.2-7
libeel-data/unstable upgradeable from 1.0.2-5 to 1.0.2-7
Debian APT HOWTO 第五章 擷取軟體包資訊
APT HOWTO
第五章 擷取軟體包資訊
有些基于APT系統的前端程式,能十分友善地獲得系統軟體包清單,清單包括可安裝或已安裝的軟體包,還可以顯示某軟體包屬于哪個域(section),它的優先級(priority)是多少,它的說明文檔,等等。
但是...在此我們想的學習如何使用APT本身來完成。你如何找出你想要安裝的軟體包的名稱?
我們完成這個任務的方法有很多。我們從apt-cache開始,APT系統使用這個程式來維護它的資料庫。下面我們通過一些實際操作來對它做個概覽。
5.1 獲得軟體包名稱
==================
假設你十分懷念玩Atari 2600的好日子,你決定用APT安裝一個Atari emulator,随後再下載下傳幾個遊戲,你可以這樣:
[root]@[/] # apt-cache search atari
atari-fdisk-cross - Partition editor for Atari (running on non-Atari)
circuslinux - The clowns are trying to pop balloons to score points!
madbomber - A Kaboom! clone
tcs - Character set translator.
atari800 - Atari emulator for svgalib/X/curses
stella - Atari 2600 Emulator for X windows
xmess-x - X binaries for Multi-Emulator Super System
我們找到了幾個相關的軟體包,以及有關的簡單描述。想進一步獲得某個軟體包的詳細資訊,你可以運作:
[root]@[/] # apt-cache show stella
Package: stella
Priority: extra
Section: non-free/otherosfs
Installed-Size: 830
Maintainer: Tom Lear <[email protected]>
Architecture: i386
Version: 1.1-2
Depends: libc6 (>= 2.1), libstdc++2.10, xlib6g (>= 3.3.5-1)
Filename: dists/potato/non-free/binary-i386/otherosfs/stella_1.1-2.deb
Size: 483430
MD5sum: 11b3e86a41a60fa1c4b334dd96c1d4b5
Description: Atari 2600 Emulator for X windows
Stella is a portable emulator of the old Atari 2600 video-game console
written in C++. You can play most Atari 2600 games with it. The latest
news, code and binaries for Stella can be found at:
http://www4.ncsu.edu/~bwmott/2600
螢幕上顯示出這個軟體包的詳細資訊及其用途的完整描述。如果你的系統中已安裝了某個軟體包而系統又搜尋到它的新版本,系統會将它們的詳細資訊一并列出。如下例:
[root]@[/] # apt-cache show lilo
Package: lilo
Priority: important
Section: base
Installed-Size: 271
Maintainer: Russell Coker <[email protected]>
Architecture: i386
Version: 1:21.7-3
Depends: libc6 (>= 2.2.1-2), debconf (>=0.2.26), logrotate
Suggests: lilo-doc
Conflicts: manpages (<<1.29-3)
Filename: pool/main/l/lilo/lilo_21.7-3_i386.deb
Size: 143052
MD5sum: 63fe29b5317fe34ed8ec3ae955f8270e
Description: LInux LOader - The Classic OS loader can load Linux and others
This Package contains lilo (the installer) and boot-record-images to
install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
.
You can use Lilo to manage your Master Boot Record (with a simple text screen)
or call Lilo from other Boot-Loaders to jump-start the Linux kernel.
Package: lilo
Status: install ok installed
Priority: important
Section: base
Installed-Size: 190
Maintainer: Vincent Renardias <[email protected]>
Version: 1:21.4.3-2
Depends: libc6 (>= 2.1.2)
Recommends: mbr
Suggests: lilo-doc
Description: LInux LOader - The Classic OS loader can load Linux and others
This Package contains lilo (the installer) and boot-record-images to
install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
.
You can use Lilo to manage your Master Boot Record (with a simple text screen)
or call Lilo from other Boot-Loaders to jump-start the Linux kernel.
注意,首先列出的是可用軟體包,接着列出的是已安裝軟體包。擷取某個軟體包的正常資訊可運作:
[root]@[/] # apt-cache showpkg penguin-command
Package: penguin-command
Versions:
1.4.5-1(/var/lib/apt/lists/download.sourceforge.net_debian_dists_unstable_main_binary-i386_Packages)(/var/lib/dpkg/status)
Reverse Depends:
Dependencies:
1.4.5-1 - libc6 (2 2.2.1-2) libpng2 (0 (null)) libsdl-mixer1.1 (2 1.1.0) libsdl1.1 (0 (null)) zlib1g (2 1:1.1.3)
Provides:
1.4.5-1 -
Reverse Provides:
如果僅想了解某軟體包的與哪些軟體包關聯,可運作:
[root]@[/] # apt-cache depends penguin-command
penguin-command
Depends: libc6
Depends: libpng2
Depends: libsdl-mixer1.1
Depends: libsdl1.1
Depends: zlib1g
總之,有一系列工具可幫助我們找到我們想要的軟體包。
5.2 使用dpkg查找軟體包名稱
==========================
另一個定位軟體包的方法是知道軟體包中某個關鍵檔案的名稱。例如,你編譯時需要某個頭檔案,查找提供該檔案的軟體包,你可以運作:
[root]@[/] # dpkg -S stdio.h
libc6-dev: /usr/include/stdio.h
libc6-dev: /usr/include/bits/stdio.h
perl: /usr/lib/perl/5.6.0/CORE/nostdio.h
或者:
[root]@[/] # dpkg -S /usr/include/stdio.h
libc6-dev: /usr/include/stdio.h
在清理硬碟空間時,了解系統中已安裝軟體的軟體包名稱十分有用,你可以運作:
[root]@[/] # dpkg -l | grep mozilla
ii mozilla-browse 0.9.6-7 Mozilla Web Browser
這個指令的缺點是它會“截斷”軟體包的名字。在上例中,軟體包的全稱是mozilla-browser,解決這個問題可以使用COLUMNS環境變量:
[kov]@[couve] $ COLUMNS=132 dpkg -l | grep mozilla
ii mozilla-browser 0.9.6-7 Mozilla Web Browser - core and browser
或顯示成這樣:
[root]@[/] # apt-cache search "Mozilla Web Browser"
mozilla-browser - Mozilla Web Browser
5.3 如何“按需”安裝軟體包
==========================
你正在編譯某段程式,突然,停住了!一條錯誤資訊報告說你沒有它需要的頭檔案。讓auto-apt來救你吧,它問你是否要安裝需要的軟體包,然後挂起編譯程序,安裝好軟體包後再恢複編譯程序。
你所要做的僅僅是:
auto-apt run command
這裡“command”指在運作過程中可能出現“需求檔案不存在”問題的指令。例如:
auto-apt run ./configure
一會兒,它就會告訴你要安裝所需的軟體包并自動轉到apt-get處理。如果你正在運作X,就會一個圖形界面提示視窗。
為了提高效率auto-apt所用的資料庫需要實時更新。可調用auto-apt update,auto-apt updatedb和auto-apt update-local來完成更新。
5.4 如何知道檔案屬于哪個軟體包
==============================
如果你想安裝某個軟體包,但用apt-cache查不出它的名稱,不過你知道這個程式的檔案名,或這個軟體包中某些檔案的檔案名,那麼你可以用apt-file來查找軟體包名稱。
$ apt-file search filename
它用起來很象dpkg -S,不過它還會列出包含該檔案的已删除軟體包。它也可以用來查找哪個軟體包包含編譯時所缺的檔案,當然,解決這類問題auto-apt可能是更好的方案,請參閱 5.3如何“按需”安裝軟體包。
用這個指令,你可以列出軟體包的内容:
$ apt-file list packagename
apt-file用一個資料庫來存放所有軟體包的内容資訊,和auto-apt一樣,這個資料庫也需要實時更新,完成更新可以運作:
# apt-file update
預設情況下,apt-file和auto-apt使用同一個資料庫,參閱 5.3如何“按需”安裝軟體包。
5.5 如何掌握軟體包的變化情況
============================
在每個軟體包被安裝以後,都會在文檔目錄(/usr/share/doc/packagename)生成一個 changelog.Debian.gz的檔案,這個檔案記錄了該軟體包最後一次更新對系統做了哪些修改,你可以用zless閱讀這些資訊。不過當你對整 個系統進行更新以後,逐個檢視軟體包的更新資訊可不是件容易事。
有一個工具能幫你完成這項任務,它就是apt-listchanges。首先你要裝上apt-listchanges軟體包。在安裝的過程中,Debconf會問你一些問題,按你的要求回答它們就行了。
“Should apt-listchanges be automatically run by apt”(想讓apt自動運作apt-listchanges嗎?)這個選項非常有用,因為在你使用apt更新軟體包時,它會告訴你此次軟體包更新将會對原有系統做出了哪些修改,你分析了這些資訊以後再決定是否執行此次更新。“Should apt-listchanges prompt for confirmation after displaying changes?”(顯示更新資訊後,需要apt-listchanges等待你的确認資訊嗎?)選項也非常有用,因為在你閱讀完更新資訊後,它會詢問你是否繼續安裝程序,如果你不想繼續,apt-listchanges會傳回一條錯誤資訊,告訴apt停止安裝程序。
安裝了apt-listchanges後,每當apt下載下傳軟體包時(不論來源是Internet、CD光牒或是硬碟)都會顯示這些軟體包的系統更新資訊。
Debian APT HOWTO 第六章 源碼包操作
APT HOWTO
第六章 源碼包操作
6.1 下載下傳源碼包
==============
在自由軟體的世界裡,經常需要學習源碼或為程式除錯,是以你需要下載下傳它們。APT提供了一套簡便的方法幫你獲得釋出版中衆多程式的源代碼以及建立一個.debs所需的所有檔案。
Debian源碼的另一個普遍用途是将unstable釋出版的新版程式進行改寫以供别的釋出版使用,例如,從stable釋出版外引入新的軟體包,需要重新生成.debs将它在原釋出版中的關聯關系遷移到新的釋出版。
完成這些工作,/etc/apt/sources.list檔案中deb-src所指引用鏡像源應該是unstable,别忘了将行首的注釋符去掉。詳情參閱 2.1/etc/apt/sources.list檔案。
用下面的指令下載下傳源碼包:
apt-get source packagename
通常會下載下傳三個檔案:a .orig.tar.gz, a .dsc and a .diff.gz。對于Debian專用的軟體包,最後一個檔案不會下載下傳,第一個檔案的檔案名中沒有“orig”項。
dpkg-source讀取.dsc檔案資訊,将源碼包解包到packagename-version目錄,下載下傳下來的源碼包中有一個debian/目錄,裡面是建立.deb包所需的檔案。
想要下載下傳的源碼包自動編譯成軟體包,隻需在指令行中加上-b,如下:
apt-get -b source packagename
如果你不打算立即建立.deb包,你可以運作如下指令,以後再建立它。
dpkg-buildpackage -rfakeroot -uc -b
請在下載下傳包所在的目錄中運作上面的指令。
apt-get的source指令與它的其它指令有所不同,普通使用者權限就可以運作source指令,指定檔案被下載下傳到使用者調用apt-source package指令時所處的目錄中。
6.2 編譯源碼包所需的軟體包
==========================
通常,編譯源碼包時要用到某些頭檔案和共享庫,所有的源碼包的管理檔案(control file)中都有一個域“Build-Depends:”,域中指出了編譯該源碼包需要哪些附加包。
APT提供了一個簡單的方法下載下傳這些附加包,你隻需運作apt-get build-dep package,其中package就是你打算編譯的源碼包名稱。見下例:
[root]@[/] # apt-get build-dep gmc
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev
libgpmg1-dev
0 packages upgraded, 7 newly installed, 0 to remove and 1 not upgraded.
Need to get 1069kB of archives. After unpacking 3514kB will be used.
Do you want to continue? [Y/n]
這些用于gmc正确編譯指定源碼包的附加包将會被安裝。注意這個指令不能用來搜尋某個軟體的源碼包,你得另外運作apt-get source下載下傳源碼包。
Debian APT HOWTO 第七章 如何處理錯誤
APT HOWTO
第七章 如何處理錯誤
7.1 一般錯誤
============
錯誤總是發生,大部分是因為使用者的粗心,下面列舉一些常見錯誤及處理方法。
如果在運作apt-get install package...時,你的系統報告如下資訊:
Reading Package Lists... Done
Building Dependency Tree... Done
W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory)
W: You may want to run apt-get update to correct these missing files
E: Couldn't find package penguineyes
上次你修改/etc/apt/sources.list後,忘了運作apt-get update更新。
如果出現這樣的資訊:
E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
如果你沒有root權限,當運作除source處的其它apt-get指令,如會出現上面的錯誤資訊。
當你同時運作兩個apt-get程序,或者當你試圖運作apt-get時已有一個的dpkg程序處于激活狀态,系統也會報告與上面相似的錯誤資訊。唯一能與其它指令同時運作的隻有source指令。
如果在安裝過程中出現中斷,然後你發現該軟體包既不能重裝又不能删除,試試下面兩個指令:
# apt-get -f install
# dpkg --configure -a
再試着安裝那個軟體包,如果不行再次運作上述指令後再試。這兩個指令對于那些使用unstable的玩家非常有用。
7.2 在哪兒獲得幫助?
===================
如果你發現自己有太多疑問,沒關系,有大量的Debian軟體包管理系統文檔供你參考。--help和幫助文檔能為你提供巨大的幫助,這些文檔位于/usr/share/doc目錄中,如/usr/share/doc/apt。
如果本文檔沒法幫你排憂解難,可以去Debian郵件清單找找答案,相關欄目内你會獲得更多資訊。Debian的網址是:http://www.debian.org。
記住隻有Debian使用者才能這些郵件清單和資源,其它作業系統的使用者請到相關系統釋出者建立的社群中擷取更多資源。
Debian APT HOWTO 第八章 哪些釋出版支援APT?
APT HOWTO
第八章 哪些釋出版支援APT?
下面是部分使用APT系統的釋出團體名稱:
Debian GNU/Linux (http://www.debian.org) - APT的開發者
Conectiva (http://www.conectiva.com.br) - 第一個将APT移植用于rpm的釋出團體
Mandrake (http://www.mandrake.com)
PLD (http://www.pld.org.pl)
Vine (http://www.vinelinux.org)
APT4RPM (http://apt4rpm.sf.net)
Alt Linux (http://www.altlinux.ru/)
Red Hat (http://www.redhat.com/)
Sun Solaris (http://www.sun.com/)
SuSE (http://www.suse.de/)
Yellow Dog Linux (http://www.yellowdoglinux.com/)
Debian APT HOWTO 第九章 緻謝
APT HOWTO
第九章 緻謝
非常感謝你們,我Debian-BR項目組的好朋友們!還有你Debian,始終在我身邊幫助我,給我動力不停工作為全人類做出貢獻,幫助我樹立拯救世界的理想。:)
我還要感謝CIPSGA,他們給予我們項目組乃至整個自由軟體項目巨大的幫助,是我們靈感的源泉。
特别感謝:
Yooseong Yang <[email protected]>
Michael Bramer <[email protected]>
Bryan Stillwell <[email protected]>
Pawel Tecza <[email protected]>
Hugo Mora <[email protected]>
Luca Monducci <[email protected]>
Tomohiro KUBOTA <[email protected]>
Pablo Lorenzzoni <[email protected]>
Steve Langasek <[email protected]>
Arnaldo Carvalho de Melo <[email protected]>
Erik Rossen <[email protected]>
Ross Boylan <[email protected]>
Matt Kraai <[email protected]>
Aaron M. Ucko <[email protected]>
Jon ?slund <[email protected]>
Debian APT HOWTO 第十章 本使用指南的新版本
APT HOWTO
第十章 本使用指南的新版本
本操作手冊由Debian-BR項目組撰寫,我們希望它能為Debian使用者提供有效的幫助。
你可以從Debian文檔項目頁面獲得本文檔的新版本:http://www.debian.org/doc/ddp
對本文檔有任何意見或建議可直接發email給我:[email protected]
Debian APT HOWTO 譯後記
非常感謝版主能将本文收錄到精華區,謝謝!
學Debian走了不少彎路,得出的經驗是Debian入門三闆斧:dselect、APT、核心編譯,掌握了這三者,就算入門了,再深入學習就容易多了。無怪乎有一種說法:Debian就是Packages。
想當初看着dselect頭都大了,找了半天也沒找到完整一些的中文文檔,沒辦法隻好硬着頭皮讀e文,花了不少時間,讀後果然功力增加不少,現在居然覺得dselect是最順手的包管理軟體。
最近有一段閑暇時間,于是鬥膽翻幾篇文檔,希望我一個人費點時間能為大家省點時間。本時受過不少漢化文檔之苦,每每大罵譯者不負責,輪到自己翻譯時 才知道其中的艱苦,本着首先要自己搞懂然後再動筆的原則,隻希望日後少被讀者罵。不過由于專業技術水準、遣詞造句能力都很有限,如果各位Debian高手 讀完譯文後,發現有錯誤或不通不懂之處,請發郵件給我,以免誤人子弟,我也會更新該文檔。
在翻譯過程中,我盡最大努力保持原文的風格,不過中文與英文表達方式有不小的差别,是以有一些地方譯出來讀起來怪怪的,不好懂,這些地方我均以(譯 者注)方式進行了意譯。整個文檔中《導言》、《哪些釋出版支援APT?》、《緻謝》、《本使用指南的新版本》幾個章節沒有什麼技術資訊,不過考慮到文檔的 完整性,還是都翻譯了,希望版主一并收錄進精華區。
接下來嘛,打算譯一下dselect的官文文檔,希望它是你們所期待的。:)