<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

    概要
    本文檔的寫作目的是幫助用戶了解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

    將Debian光盤放入光驅,它將加載光盤目錄,并在光盤上查找軟件包信息。如果你的光驅需要額外設置,可使用以下選項:

    -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

    你還可以掃描一張光盤,但不將其加入列表:

    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還是通過光盤文件(購買的碟片或下載的ISO鏡像文件)。

    它也可以用來更新尋些改變了關聯關系的軟件包。即如前所述的那些使用apt-get upgrade時被阻止更新(kept back)的軟件包。

    例如,假設你目前使用的Debian為stable revision 0(如woody 3.0 r0,譯者注),而你購買了revision 3的新版Debian(如woody 3.0 r3,譯者注),你可以使用APT從新光盤上升級你的系統。使用apt-cdrom(參閱 2.4將CD-ROM加入source.list文件)將光盤加載到/etc/apt/sources.list中,然后運行apt-get dist-upgrade。

    請注意,APT總是搜索最新版本的軟件包,因此,如果一個軟件包在你的/etc/apt/sources.list中所列的版本比光盤上所列的版本要新,那么APT會按照sources.list文件所指的地址下載這個軟件包而不是使用光盤上的軟件包。

    在 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軟件庫中或安裝光盤上。如果你從本地軟件庫安裝軟件包而軟件庫中又沒有該文件,那么這個選項將失效。來看看 /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 <tom@trap.mtview.ca.us>
    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 <russell@coker.com.au>
    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 <vincent@debian.org>
    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、光盤或是硬盤)都會顯示這些軟件包的系統更新信息。

    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 <yooseong@debian.org>

    Michael Bramer <grisu@debian.org>

    Bryan Stillwell <bryan@bokeoa.com>

    Pawel Tecza <pawel.tecza@poczta.fm>

    Hugo Mora <h.mora@melix.com.mx>

    Luca Monducci <luca.mo@tiscali.it>

    Tomohiro KUBOTA <kubota@debian.org>

    Pablo Lorenzzoni <spectra@debian.org>

    Steve Langasek <vorlon@netexpress.net>

    Arnaldo Carvalho de Melo <acme@conectiva.com.br>

    Erik Rossen <rossen@freesurf.ch>

    Ross Boylan <RossBoylan@stanfordalumni.org>

    Matt Kraai <kraai@debian.org>

    Aaron M. Ucko <ucko@debian.org>

    Jon ?slund <d98-jas@nada.kth.se>


    Debian APT HOWTO 第十章 本使用指南的新版本
    APT HOWTO
    第十章 本使用指南的新版本

    本操作手冊由Debian-BR項目組撰寫,我們希望它能為Debian用戶提供有效的幫助。

    你可以從Debian文檔項目頁面獲得本文檔的新版本:http://www.debian.org/doc/ddp

    對本文檔有任何意見或建議可直接發email給我:kov@debian.org


    Debian APT HOWTO 譯后記
    非常感謝版主能將本文收錄到精華區,謝謝!

    學Debian走了不少彎路,得出的經驗是Debian入門三板斧:dselect、APT、內核編譯,掌握了這三者,就算入門了,再深入學習就容易多了。無怪乎有一種說法:Debian就是Packages。

    想當初看著dselect頭都大了,找了半天也沒找到完整一些的中文文檔,沒辦法只好硬著頭皮讀e文,花了不少時間,讀后果然功力增加不少,現在居然覺得dselect是最順手的包管理軟件。

    最近有一段閑暇時間,于是斗膽翻幾篇文檔,希望我一個人費點時間能為大家省點時間。本時受過不少漢化文檔之苦,每每大罵譯者不負責,輪到自己翻譯時 才知道其中的艱苦,本著首先要自己搞懂然后再動筆的原則,只希望日后少被讀者罵。不過由于專業技術水平、遣詞造句能力都很有限,如果各位Debian高手 讀完譯文后,發現有錯誤或不通不懂之處,請發郵件給我,以免誤人子弟,我也會升級該文檔。

    在翻譯過程中,我盡最大努力保持原文的風格,不過中文與英文表達方式有不小的差別,所以有一些地方譯出來讀起來怪怪的,不好懂,這些地方我均以(譯 者注)方式進行了意譯。整個文檔中《導言》、《哪些發布版支持APT?》、《致謝》、《本使用指南的新版本》幾個章節沒有什么技術信息,不過考慮到文檔的 完整性,還是都翻譯了,希望版主一并收錄進精華區。

    接下來嘛,打算譯一下dselect的官文文檔,希望它是你們所期待的。:)

    posted on 2005-10-04 16:39 ivaneeo 閱讀(994) 評論(0)  編輯  收藏 所屬分類: debian-企鵝中最像牛
    主站蜘蛛池模板: 免费毛片在线看片免费丝瓜视频 | 精品久久久久久国产免费了 | 天天影院成人免费观看| 亚洲av永久无码天堂网| 亚洲国产成人久久精品动漫| 亚洲高清国产拍精品青青草原| 永久免费的网站在线观看| 久章草在线精品视频免费观看| 无人视频在线观看免费播放影院 | 亚洲国产精品综合久久网络| 免费激情网站国产高清第一页| 国产中文在线亚洲精品官网| 亚洲三级电影网站| 免费v片在线观看无遮挡| 黄页免费在线观看 | 亚洲人成网77777色在线播放| 91免费精品国自产拍在线不卡| 国产免费阿v精品视频网址| 中文字幕无码日韩专区免费 | 野花香在线视频免费观看大全| 最近中文字幕国语免费完整| 午夜国产精品免费观看| 日本一区免费电影| 亚洲黄色一级毛片| A级毛片成人网站免费看| 免费观看美女裸体网站| 亚洲人成亚洲精品| 青青操免费在线视频| 色吊丝最新永久免费观看网站 | 亚洲精品国产日韩无码AV永久免费网| 五级黄18以上免费看| 男的把j放进女人下面视频免费| 免费在线观看一级毛片| 亚洲av成人片在线观看| 在线免费观看一区二区三区| 亚洲永久精品ww47| 亚洲综合激情五月色一区| 成人无码精品1区2区3区免费看| 曰批视频免费40分钟试看天天 | 永久免费精品影视网站| 免费电视剧在线观看|