亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2835 | 回復(fù): 0
打印 上一主題 下一主題

第 5 部分:編譯源碼軟件包管理 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-02-04 10:28 |只看該作者 |倒序瀏覽
在本教程中,我們將向您演示如何從源代碼編譯程序、如何管理共享庫以及如何使用 Red Hat 和 Debian 軟件包管理系統(tǒng)。
一。關(guān)于本教程
本教程涉及哪些內(nèi)容?
在本教程中,我們將向您演示如何從源代碼編譯程序、如何管理共享庫以及如何使用 Red Hat 和 Debian 軟件包管理系統(tǒng)。
在本系列教程(共 8 篇)結(jié)束時,您將具備成為 Linux 系統(tǒng)管理員所必需的知識,而如果您選擇參加 LPI 考試,您將有能力取得 Linux Professional Institute 頒發(fā)的 LPIC Level 1 證書。
LPI 徽標(biāo)是 Linux Professional Institute 的商標(biāo)。
我應(yīng)該學(xué)習(xí)這一教程嗎?
這篇關(guān)于編譯源代碼和管理軟件包的教程,是那些想學(xué)習(xí)或提高 Linux 軟件包管理技能的讀者的理想學(xué)習(xí)資料。而且本教程特別適合那些將在 Linux 服務(wù)器或桌面上設(shè)置應(yīng)用程序的讀者。對于許多讀者,文中的許多問題可能是初次遇到,但經(jīng)驗較豐富的 Linux 用戶會發(fā)現(xiàn)這個教程是鞏固重要的 Linux 系統(tǒng)管理技能的極佳途徑。
如果您是 Linux 新手,我們建議您在繼續(xù)之前先學(xué)完 LPI 證書 101 考試準(zhǔn)備教程系列,包括
Part 1: Linux fundamentals
、
Part 2: Basic administration
、
Part 3: Intermediate administration

Part 4: Advanced administration
。
關(guān)于作者
有關(guān)本教程內(nèi)容中的技術(shù)問題,請與作者聯(lián)系:

Daniel Robbins 居住在美國新墨西哥州阿爾伯克基(Albuquerque),他是
Gentoo Technologies, Inc.
的總裁兼 CEO,也是 Gentoo Linux(PC 上的高級 Linux)和 Portage 系統(tǒng)(Linux 的下一代移植系統(tǒng))的創(chuàng)造者。他還是 Macmillan 出版的 Caldera OpenLinux UnleashedSuSE Linux UnleashedSamba Unleashed 等書的撰稿作者。Daniel 自小學(xué)二年級起就和計算機結(jié)下不解之緣,那時他第一次接觸 Logo 編程語言,并沉溺于 Pac-Man 游戲中。這也許就是為什么至今他仍擔(dān)任 SONY Electronic Publishing/Psygnosis 首席圖形設(shè)計師的原因所在。Daniel 喜歡與妻子 Mary 和他們的女兒 Hadassah 一起共度時光。
Chris Houser 在他的許多朋友中以“欺騙專家”而聞名,自 1994 年加入印第安納州泰勒大學(xué)計算機科學(xué)網(wǎng)絡(luò)管理團隊以來,就一直是 UNIX 的擁護者,在那里,他獲得了計算機科學(xué)和數(shù)學(xué)學(xué)士學(xué)位。從那以后,他從事過 Web 應(yīng)用程序設(shè)計、用戶界面設(shè)計、專業(yè)視頻軟件支持等工作,目前他在 Compaq 從事 Tru64 UNIX 設(shè)備驅(qū)動程序的設(shè)計。他還參與了多個自由軟件項目,最近的項目是
Gentoo Linux
。他和他的妻子以及他們的兩只貓一起住在美國新罕布什爾州。
Aron Griffis 畢業(yè)于泰勒大學(xué),在該校獲得計算機學(xué)士學(xué)位并被授予“理想 UNIX 公社未來的創(chuàng)立者”榮譽稱號。懷著這一目標(biāo),Aron 受雇于 Compaq 從事編寫 Tru64 UNIX 網(wǎng)絡(luò)驅(qū)動程序的工作,他的業(yè)余時間花在對鋼琴調(diào)音或開發(fā)
Gentoo Linux
上。他和妻子 Amy(也是 UNIX 工程師)住在美國新罕布什爾州的納舒尼。
二。共項庫
介紹共享庫
Linux 系統(tǒng)上有兩類根本不同的 Linux 可執(zhí)行程序。第一類是靜態(tài)鏈接的可執(zhí)行程序。靜態(tài)可執(zhí)行程序包含執(zhí)行所需的所有函數(shù) ― 換句話說,它們是“完整的”。因為這一原因,靜態(tài)可執(zhí)行程序不依賴任何外部庫就可以運行。
第二類是動態(tài)鏈接的可執(zhí)行程序。我們將在下頁討論這一內(nèi)容。
靜態(tài)可執(zhí)行程序與動態(tài)可執(zhí)行程序比較
我們可以用 ldd 命令來確定某一特定可執(zhí)行程序是否為靜態(tài)鏈接的:
# ldd /sbin/sln
        not a dynamic executable
“not a dynamic executable”是 ldd 說明 sln 是靜態(tài)鏈接的一種方式,F(xiàn)在,讓我們比較 sln 與其非靜態(tài)同類 ln 的大。
# ls -l /bin/ln /sbin/sln
-rwxr-xr-x    1 root     root        23000 Jan 14 00:36 /bin/ln
-rwxr-xr-x    1 root     root       381072 Jan 14 00:31 /sbin/sln
如您所見,sln 的大小超過 ln 倍。ln 比 sln 小這么多是因為它是動態(tài)可執(zhí)行程序。動態(tài)可執(zhí)行程序是不完整的程序,它依靠外部共享庫來提供運行所需的許多函數(shù)。
動態(tài)鏈接相關(guān)性
要查看 ln 依賴的所有共享庫的列表,可以使用 ldd 命令:
# ldd /bin/ln
        libc.so.6 => /lib/libc.so.6 (0x40021000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
如您所見,ln 依賴外部共享庫 libc.so.6 和 ld-linux.so.2。通常,動態(tài)鏈接的程序比其靜態(tài)鏈接的等價程序小得多。不過,靜態(tài)鏈接的程序可以在某些低級維護任務(wù)中發(fā)揮作用。例如,sln 是修改位于 /lib 中的不同庫符號鏈接的極佳工具。但通常您會發(fā)現(xiàn)幾乎所有 Linux 系統(tǒng)上的可執(zhí)行程序都是某種動態(tài)鏈接的變體。
動態(tài)裝入器
那么,如果動態(tài)可執(zhí)行程序不包含運行所需的所有函數(shù),Linux 的哪部分負(fù)責(zé)將這些程序和所有必需的共享庫一起裝入,以使它們能正確執(zhí)行呢?答案是動態(tài)裝入器(dynamic loader),它實際上是您在 ln 的 ldd 清單中看到的作為共享庫相關(guān)性列出的 ld-linux.so.2 庫。動態(tài)裝入器負(fù)責(zé)裝入動態(tài)鏈接的可執(zhí)行程序運行所需的共享庫,F(xiàn)在,讓我們迅速查看一下動態(tài)裝入器如何在系統(tǒng)上找到適當(dāng)?shù)墓蚕韼臁?br /> ld.so.conf
動態(tài)裝入器找到共享庫要依靠兩個文件 ― /etc/ld.so.conf 和 /etc/ld.so.cache。如果您對 /etc/ld.so.conf 文件進行 cat 操作,您可能會看到一個與下面類似的清單:
$ cat /etc/ld.so.conf
/usr/X11R6/lib
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3
/usr/lib/mozilla
/usr/lib/qt-x11-2.3.1/lib
/usr/local/lib
ld.so.conf 文件包含一個所有目錄(/lib 和 /usr/lib 除外,它們會自動包含在其中)的清單,動態(tài)裝入器將在其中查找共享庫。
ld.so.cache
但是在動態(tài)裝入器能“看到”這一信息之前,必須將它轉(zhuǎn)換到 ld.so.cache 文件中。可以通過運行 ldconfig 命令做到這一點:
# ldconfig
當(dāng) ldconfig 操作結(jié)束時,您會有一個最新的 /etc/ld.so.cache 文件,它反映您對 /etc/ld.so.conf 所做的更改。從這一刻起,動態(tài)裝入器在尋找共享庫時會查看您在 /etc/ld.so.conf 中指定的所有新目錄。
ldconfig 技巧
要查看 ldconfig 可以“看到”的所有共享庫,請輸入:
# ldconfig -p | less
還有另一個方便的技巧可以用來配置共享庫路徑。有時候您希望告訴動態(tài)裝入器在嘗試任何 /etc/ld.so.conf 路徑以前先嘗試使用特定目錄中的共享庫。在您運行的較舊的應(yīng)用程序不能與當(dāng)前安裝的庫版本一起工作的情況下,這會比較方便。
LD_LIBRARY_PATH
要指示動態(tài)裝入器首先檢查某個目錄,請將 LD_LIBRARY_PATH 變量設(shè)置成您希望搜索的目錄。多個路徑之間用逗號分隔;例如:
# export LD_LIBRARY_PATH="/usr/lib/old:/opt/lib"
導(dǎo)出 LD_LIBRARY_PATH 后,如有可能,所有從當(dāng)前 shell 啟動的可執(zhí)行程序都將使用 /usr/lib/old 或 /opt/lib 中的庫,如果仍不能滿足一些共享庫相關(guān)性要求,則轉(zhuǎn)回到 /etc/ld.so.conf 中指定的庫。
我們已經(jīng)完成了對 Linux 共享庫的介紹。要了解有關(guān)共享庫的更多內(nèi)容,請輸入 man ldconfig 和 man ld.so。
三。從源代碼編譯應(yīng)用程序
介紹
假設(shè)您發(fā)現(xiàn)了一個特定的應(yīng)用程序并想將它安裝在系統(tǒng)上。您可能需要運行這個程序的最新版本,但還沒有這個最新版本的打包格式(如 rpm)。或許您只能得到這個特定應(yīng)用程序的源代碼格式,或者您需要啟用缺省情況下在 rpm 中未啟用的該程序的某些特性。
無論什么原因,不管您必須還是僅僅因為您從源代碼編譯該程序,本節(jié)將向您演示如何做。
下載
首先,要找到并下載您要編譯的源代碼。它們可能在以 .tar.gz、tar.Z、tar.bz2 或 .tgz 擴展名結(jié)尾的單個壓縮文檔中。繼續(xù)進行,用您喜愛的瀏覽器或 ftp 程序下載這個壓縮文檔。如果這個程序碰巧有一個網(wǎng)頁,那么最好訪問該網(wǎng)頁以熟悉所有可能有用的安裝文檔。
您正在安裝的程序可能依賴于許多當(dāng)前在系統(tǒng)上已安裝或未安裝的其它程序。如果您確切知道該程序依賴的其它程序或庫當(dāng)前沒有安裝在系統(tǒng)上,則您需要先安裝這些軟件包(從象 rpm 那樣的二進制軟件包安裝或同樣從它們的源代碼進行編譯)。這樣,您將為成功安裝原始源代碼文件做好準(zhǔn)備。
解包
解包源壓縮文檔相對較簡單。如果壓縮文檔名稱以 .tar.gz、.tar.Z 或 .tgz 結(jié)尾,您應(yīng)該可以通過輸入以下內(nèi)容來解包:
$ tar xzvf archivename.tar.gz
(x 用于解壓縮,z 用于 gzip 解壓,v 用于顯示詳細(xì)信息 ― 打印解壓縮的文件名,而 f 意味著文件名將接著在命令行上出現(xiàn))。
幾乎所有的“源代碼 tar 包(tarball)”都將創(chuàng)建一個包含程序所有源代碼的主目錄。這樣,當(dāng)您解包這個壓縮文檔時,您的當(dāng)前工作目錄不會被大量的文件搞得亂七八糟 ― 相反,所有的文件被整齊地組織在單個目錄中,不會妨礙工作。
列出壓縮文檔
時不時您會遇到這樣的壓縮文檔,在對它解壓縮時,會在您的當(dāng)前工作目錄中創(chuàng)建數(shù)量巨大的文件。盡管大多數(shù) tar 包不是這樣創(chuàng)建的,但這樣的情況確有發(fā)生。如果您希望驗證您的 tar 包被正確地組裝在一起并會創(chuàng)建一個主目錄來容納源代碼,您可以輸入以下內(nèi)容來查看其內(nèi)容:
$ tar tzvf archivename.tar.gz | more
(t 用于顯示壓縮文檔的文本清單。不進行解壓縮)。
如果壓縮文檔清單的左邊沒有列出公共目錄,則您要創(chuàng)建一個新的目錄,將 tar 包移至該目錄下,進入該目錄,這時再解壓縮這個 tar 包。不這樣做的話,您會面對一團亂麻!
解包 bzip2 壓縮的壓縮文檔
您的壓縮文檔有可能是 .tar.bz2 格式。具有這種擴展名的壓縮文檔是用 bzip2 進行壓縮的。bzip2 的壓縮效果通常比 gzip 好得多。它唯一的不足之處是壓縮和解壓縮的速度較慢,并且在運行時, bzip2 比 gzip 消耗更多的內(nèi)存。對于現(xiàn)代計算機,這不成問題,因此,可以預(yù)料 bzip2 會隨著時間的推移變得越來越流行。
因為 bzip2 日益受到歡迎,所以許多 Linux 分發(fā)版(distribution)都帶有經(jīng)過補丁程序修正的 tar 版本,這樣傳遞一個 y 或 i 選項將通知 tar:壓縮文檔是 bzip2 格式,需要用 bzip2 程序自動解壓縮。要查看您是否帶有用補丁修正過的 tar 版本,可以試著輸入:
$ tar tyvf archive.tar.bz2 | more

$ tar tivf archive.tar.bz2 | more
即使兩個命令都不起作用(而且 tar 提示參數(shù)無效),仍有辦法 ― 請繼續(xù)閱讀。
bzip2 管道
哦,您的 tar 版本不能識別這些方便的 bzip2 快捷方式 ― 該怎么辦呢?所幸有一個簡單的方法可以解壓縮 bzip2 tar 包的內(nèi)容,并且這個方法幾乎可以在所有的 UNIX 系統(tǒng)上工作,即使正被討論的系統(tǒng)碰巧有一個非 GNU 版本的 tar。要查看 bzip2 文件的內(nèi)容,我們可以創(chuàng)建一個管道:
$ cat archive.tar.bz2 | bzip2 -d | tar tvf - | most
接下來的這個管道實際上將解壓縮 archive.tar.bz2 的內(nèi)容:
$ cat archive.tar.bz2 | bzip2 -d | tar xvf -
在前兩個示例中,我們創(chuàng)建了一個標(biāo)準(zhǔn)的 UNIX 管道從壓縮文檔查看并解壓縮文件。因為用了 f - 選項來調(diào)用 tar,因此它從標(biāo)準(zhǔn)輸入(stdin)讀取 tar 數(shù)據(jù),而不是試圖從磁盤上的文件讀取數(shù)據(jù)。
如果嘗試用管道方法解壓縮您的壓縮文檔的內(nèi)容,而系統(tǒng)提示找不到 bzip2,則系統(tǒng)可能沒有安裝 bzip2?梢詮
http://sourceware.cygnus.com/bzip2
下載 bzip2 的源代碼。安裝 bzip2 源代碼之后(通過遵照本教程),您才能首先解包并安裝您希望安裝的應(yīng)用程序:)
檢查源代碼
解包源代碼之后,您可以進入解包的目錄并檢查其中的內(nèi)容。最好是能找到所有與安裝有關(guān)的文檔。通常,這一信息可以在位于主源代碼目錄的 README 或 INSTALL 文件中找到。另外,可以查找 README.platform 和 INSTALL.platform 文件,這里的 platform 是您的特定操作系統(tǒng)名稱。
配置
現(xiàn)在,許多源代碼在主源代碼目錄中包含配置腳本。這個腳本(通常由開發(fā)人員使用 GNU autoconf 程序生成)特別設(shè)計用來設(shè)置源代碼以使它們能在您的系統(tǒng)上正確編譯。這個配置腳本在運行時會探測您的系統(tǒng)以確定系統(tǒng)性能,然后創(chuàng)建制作文件(Makefile),其中包含在您的系統(tǒng)上構(gòu)建和安裝源代碼的指令。
這個配置腳本幾乎總是被命名為“configure”。如果您在主源代碼目錄中找到配置腳本,那么它可以供您使用。如果您沒有發(fā)現(xiàn)配置腳本,那么您的源代碼可能帶有一個設(shè)計用來跨越不同系統(tǒng)工作的標(biāo)準(zhǔn)制作文件 ― 這意味著您可以略過以下配置步驟,在我們開始討論“make”處繼續(xù)學(xué)習(xí)本教程。
使用配置
在運行配置腳本之前,最好是先熟悉它。輸入 ./configure --help,您可以查看您的程序能夠使用的所有不同配置選項。您所看到的選項,特別是在 --help 打印輸出的頂部列出的那些項,都是幾乎可以在每個配置腳本中找到的標(biāo)準(zhǔn)選項。在結(jié)尾部分列出的選項通常與您正嘗試編譯的特定軟件包相關(guān)。查看它們并注意那些您希望啟用或禁用的選項。
--prefix 選項
大多數(shù)基于 GNU autoconf 的配置腳本都有 --prefix 選項來允許您控制程序的安裝位置。缺省情況下,大多數(shù)源代碼安裝時都用 /usr/local 前綴。這意味著二進制文件最終在 /usr/local/bin 中,手冊頁則在 /usr/local/man 中,等等。這通常就是您所期望的;/usr/local 通常用于存儲您自己編譯的程序。
使用 --prefix
如果您想把源代碼安裝在別的地方,假設(shè)安裝在 ./usr 中,則您要向配置腳本傳遞 --prefix=/usr 選項。同樣地,您也可以用 --prefix=/opt 選項告訴配置腳本將源代碼安裝到 /opt 目錄。
FHS 怎么樣?
有時候,一個特定程序可能缺省地將它的一些文件安裝到磁盤上的非標(biāo)準(zhǔn)位置。特別地,一個源代碼壓縮文檔可能有許多沒有遵守 Linux 文件系統(tǒng)層次結(jié)構(gòu)標(biāo)準(zhǔn)(FHS)的安裝路徑。幸運的是,配置腳本不僅允許更改安裝前綴,而且允許我們更改各個系統(tǒng)部件(如手冊頁)的安裝位置。
因為大多數(shù)源代碼壓縮文檔還不符合 FHS,所以這種能力非常有用。為了使您的源代碼包符合 FHS,您幾乎總要向配置命令行添加 --mandir=/usr/share/man 和 --infodir=/usr/share/info。
該配置了
一旦已經(jīng)檢查了各種配置選項并確定了要使用的選項,就可以運行配置腳本了。請注意您可能不需要在運行配置腳本時包含所有命令行選項 ― 在大多數(shù)情形下,缺省值可以發(fā)揮作用(但可能不完全是您想要的)。
要運行配置腳本,請輸入:
$ ./configure
這看起來象:
$ ./configure

$ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-threads
您需要的選項取決于您正在配置的特定軟件包。當(dāng)您運行配置腳本時,它需要一兩分鐘來探測您系統(tǒng)上可用的特定功能部件或工具,并隨著它工作的進行打印出各種配置檢查的結(jié)果。
config.cache
配置過程完成后,配置腳本將它所有的配置數(shù)據(jù)存儲在一個名為 config.cache 的文件中。這個文件和配置腳本本身都在同一目錄中。如果您在更新系統(tǒng)配置后需要再次運行 ./configure,請確保您先執(zhí)行 rm config.cache 命令;否則配置腳本將只使用舊的設(shè)置而不重新檢查系統(tǒng)。
配置腳本和制作文件
配置腳本完成之后,就是將源代碼編譯為可運行程序的時候了?梢杂妹麨 make 的程序來執(zhí)行這一步驟。如果您的軟件包含配置腳本,那么當(dāng)您運行它時,配置腳本會創(chuàng)建一些為您的系統(tǒng)特別定制的制作文件。這些文件會告訴 make 程序如何構(gòu)建源代碼以及如何安裝所產(chǎn)生的二進制文件、手冊頁和支持文件。
制作文件介紹
Makefile 通常被稱為 makefile 或 Makefile。每個含有源文件的目錄通常都有一個制作文件,另外主源代碼目錄中還有一個制作文件。autoconf 生成的制作文件含有確定如何構(gòu)建某些目標(biāo)(如您希望安裝的程序)的指示信息(正式名稱是規(guī)則)。make 指出所有規(guī)則運行的順序。
調(diào)用 make
調(diào)用 make 比較簡單;只需在當(dāng)前目錄中輸入“make”即可。make 程序隨即將在當(dāng)前目錄中查找并解釋名為 makefile 或 Makefile 的文件。如果您只輸入“make”本身 ,那么它將構(gòu)建缺省目標(biāo)。開發(fā)人員通常設(shè)置制作文件以使缺省目標(biāo)編譯所有源代碼:
$ make
有些 makefile 沒有缺省目標(biāo),因此您要指定一個以使編譯得以開始:
$ make all
輸入這些命令的其中之一后,您的計算機將用幾分鐘的時間將您的程序編譯成目標(biāo)代碼。假設(shè)它不出差錯地完成編譯,您就可以準(zhǔn)備將已編譯程序安裝到系統(tǒng)上。
安裝
編譯好程序之后,還有一個更重要的步驟:安裝。盡管程序已編譯,但它仍未做好使用準(zhǔn)備。您需要將它的所有組件從源代碼目錄復(fù)制到您的文件系統(tǒng)上適當(dāng)?shù)、“活動的”位置。例如,您需要將所有的二進制文件復(fù)制到 /usr/local/bin,將所有的手冊頁安裝到 /usr/local/man,等等。
在安裝軟件以前,您要成為 root 用戶。實現(xiàn)這一點通常有兩種方式,在另一臺終端以 root 用戶登錄,或者輸入“su”,那時就會提示您輸入 root 用戶的密碼。輸入密碼以后,您就將一直擁有 root 用戶的特權(quán),直到您輸入“exit”或按 control-D 鍵組合從當(dāng)前 shell 會話退出為止。如果您已經(jīng)是 root 用戶,那就可以進行下一步行動了!
make install
安裝源代碼比較簡單。只需在主源代碼目錄中輸入:
# make install
輸入“make install”告訴 make 要滿足“install”目標(biāo);這個目標(biāo)通常用來將所有新近創(chuàng)建的源文件復(fù)制到磁盤上的正確位置,以便可以使用您的程序。如果您沒有指定 --prefix 選項,則很有可能有相當(dāng)多的文件和目錄將被復(fù)制到 /usr/local 目錄。根據(jù)程序大小的不同,安裝目標(biāo)需要的時間可能從幾秒到幾分鐘不等。
除了簡單地復(fù)制文件以外,make install 還會確保安裝的文件有正確的所有權(quán)和許可權(quán)。make install 成功完成后,程序就安裝完畢并且可以使用(或幾乎可以使用)。
安裝之后
現(xiàn)在您的程序已經(jīng)安裝完畢,那么下一步是什么?當(dāng)然是運行它啦!如果您不熟悉如何使用剛剛安裝的程序,則可以通過輸入以下命令來閱讀這個程序的手冊頁:
$ man programname
程序可能需要另外的配置步驟。例如,如果您安裝了 Web 服務(wù)器,則您需要將它配置成在系統(tǒng)引導(dǎo)時自動啟動。在應(yīng)用程序運行以前,您可能還需要在 /etc 中定制一個配置文件。
好,完成了!
既然您已經(jīng)從源代碼完整地安裝了一個特定的軟件包,現(xiàn)在可以運行它了!要啟動這個程序,請輸入:
$ programname
祝賀您!
可能出現(xiàn)的問題
configure 或 make(甚至可能是 make install)很有可能會因某種錯誤代碼而異常終止。以下幾頁將幫助您改正一些常見問題。
遺漏一些庫
您可能時常會有 configure 完全失敗的經(jīng)歷,這往往是因為某個庫沒有安裝。為了能使構(gòu)建過程繼續(xù)進行,您需要暫停當(dāng)前的程序配置,搜尋源代碼或二進制軟件包以找到程序所需的庫。當(dāng)安裝正確的庫后,configure 或 make 應(yīng)該能順利運行并成功地完成。
其它問題
有時候,您會碰到某種不知如何修復(fù)的錯誤。隨著您的 UNIX/Linux 經(jīng)驗的增長,您將能夠診斷越來越多在 configure 和 make 過程中遇到的、看似神秘的錯誤情況。
有時,錯誤的出現(xiàn)是因為安裝的庫太舊(甚至也可能是因為太新了!)。還有些時候,碰到的問題實際上是開發(fā)人員的過錯,他們可能沒有預(yù)計到他們的程序會在您這樣的系統(tǒng)上運行 ― 或者他們只是打字有誤:)
對于這樣的問題,您要清楚能在哪里獲得幫助。如果這是您首次嘗試從源代碼編譯程序,那么最好還是選擇另一個更簡單的程序來編譯。當(dāng)您編譯了較簡單的程序后,您就會有修正最初遇到的問題所必需的經(jīng)驗。隨著您繼續(xù)學(xué)習(xí)更多有關(guān) UNIX 如何工作的知識,您將更接近這樣的境界:“微調(diào)”制作文件和源代碼就可以讓那些看上去甚至有些古怪的代碼順利地編譯。
四。軟件包管理概念
軟件包管理的優(yōu)勢
除了從源代碼構(gòu)建應(yīng)用程序以外,還有另一種在 Linux 系統(tǒng)上安裝軟件的方法。所有的 Linux 分發(fā)版都使用某種形式的軟件包管理來安裝、更新和卸載軟件包。與直接從源代碼安裝相比,軟件包管理有明顯優(yōu)勢:
  • 易于安裝和卸載
  • 易于更新已安裝的軟件包
  • 保護配置文件
  • 輕松跟蹤已安裝文件

軟件包管理的缺點
在講解如何使用最流行的軟件包管理工具以前,我得承認(rèn)有些 Linux 用戶不喜歡軟件包管理。他們可能會提出軟件包管理的以下缺點:
  • 為特定系統(tǒng)構(gòu)建的二進制文件性能更好
  • 解決軟件包相關(guān)性比較麻煩
  • 軟件包數(shù)據(jù)庫的破壞會導(dǎo)致系統(tǒng)不可維護
  • 創(chuàng)建軟件包比較困難

這些說法確有其事,但 Linux 用戶的一般看法是軟件包管理的優(yōu)勢大于劣勢。另外,上面列出的每個不利因素都有一個相應(yīng)的反證:可以為不同的系統(tǒng),構(gòu)建多個優(yōu)化的軟件包;可以增強軟件包管理器來自動解決相關(guān)性;可以基于其它文件重建數(shù)據(jù)庫;而以后更新或除去這個軟件包時的方便性可以彌補最初創(chuàng)建它時所做的努力。
五。rpm,Red Hat 軟件包管理器
rpm 入門
對 Linux 分發(fā)版而言,1995 年 Red Hat 引入
rpm
是一個巨大的進步。它不僅使
Red Hat Linux
上的軟件包管理成為可能,而且因為它的 GPL 許可證,rpm 已經(jīng)成為開放源代碼打包的事實標(biāo)準(zhǔn)。
盡管有 GUI 和基于 Web 的工具提供更友好的界面,rpm 程序在缺省情況下是一個命令行界面。在這一節(jié)中,我們將介紹最常用的命令行操作,并且將
Xsnow
程序作為示例使用。如果您愿意按照下面的步驟執(zhí)行,可以在下面下載 rpm,它應(yīng)該可以用于大多數(shù)基于 rpm 的分發(fā)版。

注:如果這一節(jié)中“rpm”一詞的不同使用讓您有些困惑的話,請記住“rpm”通常指程序,而“一個 rpm”或“那個 rpm”則通常指一個 rpm 軟件包。
安裝 rpm
首先讓我們使用 rpm -i 來安裝 Xsnow rpm:
# rpm -i xsnow-1.41-1.i386.rpm
如果這個命令沒有產(chǎn)生輸出,那么它就起作用了!您應(yīng)該能夠運行 Xsnow 在您的 X 桌面上享受一場暴風(fēng)雪。我們本身是希望在安裝一個 rpm 時有某些可視化反饋的,所以我們可以加上 -h(用 # 號表示進展)和 -v(詳細(xì)信息)選項:
# rpm -ivh xsnow-1.41-1.i386.rpm
xsnow                       ##################################################
重新安裝一個 rpm
如果您直接按照步驟執(zhí)行,您可能會在前一個示例中看到來自 rpm 的下列消息:
# rpm -ivh xsnow-1.41-1.i386.rpm
package xsnow-1.41-1 is already installed
在有些情況下,您可能希望重新安裝一個 rpm,例如,您可能不小心刪除了二進制文件 /usr/X11R6/bin/xsnow。在那種情況下,您應(yīng)該首先用 rpm -e 除去那個 rpm,然后重新安裝它。請注意:下面的示例中來自 rpm 的資料信息不妨礙從系統(tǒng)除去軟件包。
# rpm -e xsnow
removal of /usr/X11R6/bin/xsnow failed: No such file or directory
# rpm -ivh xsnow-1.41-1.i386.rpm
xsnow                       ##################################################
強制安裝一個 rpm
有時除去一個 rpm 是不現(xiàn)實的,尤其是系統(tǒng)上有別的程序依賴于它的時候。例如,您可能已經(jīng)安裝了一個“x-amusements”rpm,它將 Xsnow 列為相關(guān)程序,因此用 rpm -e 除去 Xsnow 是不允許的:
# rpm -e xsnow
error: removing these packages would break dependencies:
        /usr/X11R6/bin/xsnow is needed by x-amusements-1.0-1
在這種情況下,您可以用 --force 選項重新安裝 Xsnow:
# rpm -ivh --force xsnow-1.41-1.i386.rpm
xsnow                       ##################################################用 --nodeps 安裝或除去
上頁中使用 --force 的一個替代方法是用 --nodeps 選項除去 rpm。這一選項取消了 rpm 的內(nèi)部相關(guān)性檢查,所以在大多數(shù)情況下不推薦使用。然而,它偶爾會有用處:
# rpm -e --nodeps xsnow
# rpm -ivh xsnow-1.41-1.i386.rpm
xsnow                       ##################################################
在安裝 rpm 時,您也可以使用 --nodeps。再次重申上面所說的,不推薦使用 --nodeps,但它有時是必需的:
# rpm -ivh --nodeps xsnow-1.41-1.i386.rpm
xsnow                       ##################################################
更新軟件包
最終可能將有 Xsnow 版本 1.42 的 rpm,它可以在 Xsnow 作者的
網(wǎng)站
上獲得。這時,您將要更新現(xiàn)有的 Xsnow 安裝。如果您要使用 rpm -ivh --force,似乎會奏效,但 rpm 的內(nèi)部數(shù)據(jù)庫會列出兩個版本都已安裝。相反,您應(yīng)該用 rpm -U 來更新您的安裝:
# rpm -Uvh xsnow-1.42-1.i386.rpm
xsnow                       ##################################################
這里有一個小竅門:我們幾乎不使用 rpm -i,因為如果系統(tǒng)上不存在 rpm,則 rpm -U 會安裝一個。如果您在命令行指定多個軟件包,其中有些軟件包當(dāng)前已安裝而有些則沒有,那么這一選項會特別有用。
# rpm -Uvh xsnow-1.42-1.i386.rpm xfishtank-2.1tp-1.i386.rpm
xsnow                       ##################################################
xfishtank                   ##################################################
用 rpm -q 查詢
您可能已經(jīng)在前幾個示例中注意到:安裝 rpm 需要完整的文件名,但除去 rpm 只需要文件的名稱即可。這是因為 rpm 維護一個當(dāng)前已安裝軟件包的內(nèi)部數(shù)據(jù)庫,所以您可以通過名稱來引用安裝的軟件包。例如,讓我們查詢 rpm 安裝的是什么版本的 Xsnow:
# rpm -q xsnow
xsnow-1.41-1
事實上,rpm 知道的有關(guān)已安裝軟件包的信息遠(yuǎn)不止是名稱和版本。我們可以用 rpm -qi 查詢有關(guān) Xsnow rpm 的更多信息:
# rpm -qi xsnow
Name        : xsnow                        Relocations: (not relocateable)
Version     : 1.41                              Vendor: Dan E. Anderson http://www.dan.drydog.com/
Release     : 1                             Build Date: Thu 10 May 2001 01:12:26 AM EDT
Install date: Sat 02 Feb 2002 01:00:43 PM EST      Build Host: danx.drydog.com
Group       : Amusements/Graphics           Source RPM: xsnow-1.41-1.src.rpm
Size        : 91877                            License: Copyright 1984, 1988, 1990, 1993-1995, 2000 by Rick Jansen. Allows packaging & necessary changes for Unix/Linux distributions.
Packager    : Dan E. Anderson http://dan.drydog.com/
URL         : http://www.euronet.nl/~rja/Xsnow/
Summary     : An X Window System based dose of Christmas cheer.
Description :
The Xsnow toy provides a continual gentle snowfall, trees, and Santa
Claus flying his sleigh around the screen on the root window.
Xsnow is only for the X Window System, though; consoles just get coal.
用 rpm -ql 列出文件
由 rpm 維護的數(shù)據(jù)庫包含很多信息。我們已經(jīng)看到它記錄了已安裝軟件包的版本,以及它們的相關(guān)信息。還可以用 rpm -ql 列出給定的已安裝軟件包所擁有的文件:
# rpm -ql xsnow
/etc/X11/applnk/Games/xsnow.desktop
/usr/X11R6/bin/xsnow
/usr/X11R6/man/man1/xsnow.1x.gz
結(jié)合 -c 選項或 -d 選項,您可以將輸出分別限制為配置文件或文檔文件。這一類型的查詢對有較長文件列表的較大 rpm 更有用,但我們?nèi)匀豢梢杂?Xsnow rpm 來演示:
# rpm -qlc xsnow
/etc/X11/applnk/Games/xsnow.desktop
# rpm -qld xsnow
/usr/X11R6/man/man1/xsnow.1x.gz
用 rpm -qp 查詢軟件包
如果您在安裝軟件包之前已經(jīng)有了用 rpm -qi 獲得的信息,您也許就能夠更好地決定是否安裝這個軟件包。實際上,使用 rpm -qp 允許您查詢一個 rpm 文件而不是查詢數(shù)據(jù)庫。到目前為止我們見到的所有查詢命令都可以用于 rpm 文件和已安裝的軟件包。下面再次列出所有的示例,這次使用的是 -p 選項:
# rpm -qp xsnow-1.41-1.i386.rpm
xsnow-1.41-1
# rpm -qpi xsnow-1.41-1.i386.rpm
[與上頁中的 rpm -qi 有相同的輸出]
# rpm -qpl xsnow-1.41-1.i386.rpm
/etc/X11/applnk/Games/xsnow.desktop
/usr/X11R6/bin/xsnow
/usr/X11R6/man/man1/xsnow.1x.gz
# rpm -qplc xsnow-1.41-1.i386.rpm
/etc/X11/applnk/Games/xsnow.desktop
# rpm -qpld xsnow-1.41-1.i386.rpm
/usr/X11R6/man/man1/xsnow.1x.gz
查詢所有已安裝的軟件包
您可以加上 -a 選項來查詢安裝在系統(tǒng)上的所有軟件包。如果您用管道命令將輸出通過 sort 傳入一個分頁程序,則可一覽系統(tǒng)上安裝的軟件包。例如:
# rpm -qa | sort | less
[省略輸出]
以下是在我們的一個系統(tǒng)上安裝的 rpm 數(shù)目:
# rpm -qa | wc -l
    287
而以下是所有這些 rpm 中的文件總數(shù):
# rpm -qal | wc -l
  45706
這里有一個簡單竅門:使用 rpm -qa 可以簡化多個系統(tǒng)的管理。如果您在一臺機器上將排序的輸出重定向至一個文件,然后在另一臺機器上做同樣操作,您可以用 diff 程序來觀察二者的區(qū)別。
查找文件的所有者
有時找出什么 rpm 擁有給定的文件是非常有用的。理論上,您可以用與下面類似的 shell 構(gòu)造了解哪個 rpm 擁有 /usr/X11R6/bin/xsnow(假裝您不記得了):
# rpm -qa | while read p; do rpm -ql $p | grep -q '^/usr/X11R6/bin/xsnow$' && echo $p; done
xsnow-1.41-1
因為輸入這些要很長的時間,而運行的時間更長(在我們的一臺奔騰機上要 1 分 50 秒),rpm 開發(fā)人員很聰明地把這種功能包含進了 rpm。您可以用 rpm -qf 查詢一個特定文件的所有者:
# rpm -qf /usr/X11R6/bin/xsnow
xsnow-1.41-1
即使在奔騰機上,這也只要 0.3 秒的時間運行。而且,與復(fù)雜的 shell 構(gòu)造相比,連打字高手也會喜歡 rpm -qf 的簡單:)
顯示相關(guān)性
除非您使用如 --nodeps 那樣的選項,rpm 通常不允許您安裝或除去那些會破壞相關(guān)性的軟件包。例如,您不能在沒有 X 庫的系統(tǒng)上安裝 Xsnow。安裝 Xsnow 之后,您不能在沒有除去 Xsnow(而且可能還有半數(shù)您已安裝的軟件包)的情況下除去 X 庫。
這就是 rpm 的強項,這一點有時甚至令人頭疼。它意味著只要您安裝了 rpm,它就應(yīng)該正常工作。您無需做額外的工作,因為 rpm 已經(jīng)驗證了系統(tǒng)上存在相關(guān)性。
有時候,在您解決相關(guān)性問題時,用 -R 選項查詢一個軟件包有助于了解這個軟件包在系統(tǒng)上被期望具有的所有情況。例如,Xsnow 軟件包依賴 C 庫、math 庫、X 庫和 rpm 的特定版本:
# rpm -qpR xsnow-1.41-1.i386.rpm
rpmlib(PayloadFilesHavePrefix)
您也可以省略 -p 來向已安裝的數(shù)據(jù)庫查詢同樣的信息:
# rpm -qR xsnow
驗證軟件包的完整性
當(dāng)您從 Web 或 ftp 站點下載 rpm 時,出于安全性考慮,您可能希望在安裝該軟件包之前,先驗證它的完整性。所有的 rpm 都已使用 MD5 校驗和“簽名”。另外,有些作者使用 PGP 或 GPG 簽名進一步加強他們的軟件包的安全性。要查看軟件包的簽名,您可以使用 --checksig 選項:
# rpm --checksig xsnow-1.41-1.i386.rpm
xsnow-1.41-1.i386.rpm: md5 GPG NOT OK
稍等片刻!根據(jù)那個輸出,GPG 簽名為 NOT OK。讓我們加一些詳細(xì)說明看看出了什么問題:
# rpm --checksig -v xsnow-1.41-1.i386.rpm
xsnow-1.41-1.i386.rpm:
MD5 sum OK: 8ebe63b1dbe86ccd9eaf736a7aa56fd8
gpg: Signature made Thu 10 May 2001 01:16:27 AM EDT using DSA key ID B1F6E46C
gpg: Can't check signature: public key not found
那么,問題出在我們不能獲取作者的公鑰。在我們從
軟件包作者的網(wǎng)站
獲得公鑰后,(如來自 rpm -qi 的輸出所示),簽名檢出如下:
# gpg --import dan.asc
gpg: key B1F6E46C: public key imported
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: Total number processed: 1
gpg:               imported: 1
# rpm --checksig xsnow-1.41-1.i386.rpm
xsnow-1.41-1.i386.rpm: md5 gpg OK
驗證已安裝的軟件包
與檢查 rpm 的完整性相似,您也可以用 rpm -V 檢查已安裝文件的完整性。這一步驟確保文件從 rpm 安裝以后沒有再被修改。
# rpm -V xsnow
通常這一命令沒有輸出,這表明文件正常。讓我們把事情弄得更有趣味,然后再試一次:
# rm /usr/X11R6/man/man1/xsnow.1x.gz
# cp /bin/sh /usr/X11R6/bin/xsnow
# rpm -V xsnow
S.5....T   /usr/X11R6/bin/xsnow
missing    /usr/X11R6/man/man1/xsnow.1x.gz
這個輸出向我們顯示 Xsnow 二進制文件的 MD5 校驗和、文件大小和 mtime 測試失效。而且手冊頁全部丟失!讓我們修復(fù)這個損壞的安裝:
# rpm -e xsnow
removal of /usr/X11R6/man/man1/xsnow.1x.gz failed: No such file or directory
# rpm -ivh xsnow-1.41-1.i386.rpm
xsnow                       ##################################################配置 rpm
rpm 很少需要配置。它運行良好。在較舊的 rpm 版本中,您可以在 /etc/rpmrc 中做更改來影響運行時操作。在最近的版本中,這個文件被移到 /usr/lib/rpm/rpmrc,并且不打算讓系統(tǒng)管理員編輯它。它通常只列出各個平臺的標(biāo)志和兼容性信息(例如,i386 與所有其它 x86 體系結(jié)構(gòu)兼容)。
如果您希望配置 rpm,可以通過編輯 /etc/rpm/macros 實現(xiàn)。因為這很少有必要,我們將讓您在 rpm 捆綁的文檔中閱讀它。您可以用下列命令找到合適的文檔:
# rpm -qld rpm | grep macros
其它 rpm 參考資料 以上是我們在本教程中對于 Red Hat 軟件包管理器的全部介紹。您應(yīng)該具備了管理一個系統(tǒng)的足夠信息,并且有許多參考資料可以利用。請務(wù)必查看以下鏈接:六。Debian軟件包管理介紹 apt-get
Debian 軟件包管理系統(tǒng)由幾個不同的工具組成。命令行工具 apt-get 是安裝新軟件包的最簡單方法。例如,要安裝程序 Xsnow,可以 root 用戶的身份執(zhí)行以下操作:
# apt-get install xsnow
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
  xsnow
0 packages upgraded, 1 newly installed, 0 to remove and 10 not upgraded.
Need to get 17.8kB of archives. After unpacking 42.0kB will be used.
Get:1 http://ftp-mirror.internap.com stable/non-free xsnow 1.40-6 [17.8kB]
Fetched 17.8kB in 0s (18.4kB/s)
Selecting previously deselected package xsnow.
(Reading database ... 5702 files and directories currently installed.)
Unpacking xsnow (from .../archives/xsnow_1.40-6_i386.deb) ...
Setting up xsnow (1.40-6) ...
瀏覽這個輸出,您可以看到即將安裝 Xsnow,然后從 Web 上獲取它,解包,最后設(shè)置。
模擬安裝
如果 apt-get 發(fā)覺您要安裝的軟件包依賴其它一些軟件包,它會自動獲取并安裝這些軟件包。在上一個示例中,只安裝了 Xsnow,這是因為它的所有相關(guān)性都已滿足。
然而,有時候 apt-get 需要獲取的軟件包列表會很大,所以一般最好在安裝前先查看將要安裝的文件。-s 選項正好做這一工作。例如,在我們的一個系統(tǒng)上,如果我們試圖安裝圖形電子郵件程序 balsa:
# apt-get -s install balsa
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  esound esound-common gdk-imlib1 gnome-bin gnome-libs-data imlib-base libart2
  libaudiofile0 libesd0 libglib1.2 libgnome32 libgnomesupport0 libgnomeui32
  libgnorba27 libgnorbagtk0 libgtk1.2 libjpeg62 liborbit0 libpng2 libproplist0
  libtiff3g libungif3g zlib1g
The following NEW packages will be installed:
  balsa esound esound-common gdk-imlib1 gnome-bin gnome-libs-data imlib-base
  libart2 libaudiofile0 libesd0 libglib1.2 libgnome32 libgnomesupport0
  libgnomeui32 libgnorba27 libgnorbagtk0 libgtk1.2 libjpeg62 liborbit0 libpng2
  libproplist0 libtiff3g libungif3g zlib1g
0 packages upgraded, 24 newly installed, 0 to remove and 10 not upgraded.
然后它會列出軟件包將安裝和配置(或設(shè)置)的順序。
軟件包資源列表:apt-setup
因為 apt-get 會自動為您獲取軟件包,所以它必須知道在哪里能找到那些還沒有安裝的軟件包。這一信息在 /etc/apt/sources.list 中。盡管您可以手工編輯這個文件(請參閱 sources.list 手冊頁),但您會發(fā)現(xiàn)使用一個交互工具會更方便:
# apt-setup
這個工具遍歷可以找到 Debian 軟件包的位置,如 CDROM、Web 站點和 ftp 站點。當(dāng)您完成后,它將更改寫到您的 /etc/apt/sources.list 文件,這樣 apt-get 可以在您請求這些軟件包時找到它們。
從 apt-get 到 dselect
apt-get 工具有許多命令行選項,您可以在 apt-get 手冊頁查到。缺省項通常工作得很好,如果您發(fā)現(xiàn)您在頻繁地使用同一個選項,您可以向 /etc/apt/apt.conf 文件添加一個設(shè)置。配置文件的這一語法在 apt.conf 手冊頁中有描述。
除了我們一直使用的 install 命令以外,apt-get 還有許多其它命令。其中之一是 apt-get dselect-upgrade,它遵守為 Debian 系統(tǒng)上的每個軟件包所設(shè)置的狀態(tài)(status)。
啟動 dselect
每個軟件包的狀態(tài)都存儲在文件 /var/lib/dpkg/status 中,但用另一個交互工具更新它效果最好。
# dselect
Debian GNU/Linux `dselect' package handling frontend.
* 0. [A]ccess      Choose the access method to use.
   1. [U]pdate      Update list of available packages, if possible.
   2. [S]elect      Request which packages you want on your system.
   3. [I]nstall     Install and upgrade wanted packages.
   4. [C]onfig      Configure any packages that are unconfigured.
   5. [R]emove      Remove unwanted software.
   6. [Q]uit        Quit dselect.
Move around with ^P and ^N, cursor keys, initial letters, or digits;
Press  to confirm selection.   ^L redraws screen.
Version 1.6.15 (i386).  Copyright (C) 1994-1996 Ian Jackson.   This is
free software; see the GNU General Public License version 2 or later for
copying conditions.  There is NO warranty.  See dselect --license for details.使用 dselect 的 Select 方式
選擇 Select 選項,您就可以查看和更改軟件包的狀態(tài)。它隨即會顯示一頁幫助信息。讀完后就按空格鍵,F(xiàn)在您可以看到與下面類似的軟件包列表:
EIOM Pri Section  Package      Inst.ver    Avail.ver   Description
      All packages
        Newly available packages
          New Important packages
            New Important packages in section admin
  n* Imp admin    at                 3.1.8-10    Delayed job execution and
  n* Imp admin    cron               3.0pl1-57.3 management of regular bac
  n* Imp admin    logrotate          3.2-11      Log rotation utility
            New Important packages in section doc
  n* Imp doc      info               4.0-4       Standalone GNU Info docum
  n* Imp doc      manpages           1.29-2      Man pages about using a L
            New Important packages in section editors
  n* Imp editors  ed                 0.2-18.1    The classic unix line edi
  n* Imp editors  nvi                1.79-16a.1  4.4BSD re-implementation
            New Important packages in section interpreters
  n* Imp interpre perl-5.005         5.005.03-7. Larry Wall's Practical Ex
            New Important packages in section libs
  n* Imp libs     libident           0.22-2      simple RFC1413 client lib
  n* Imp libs     libopenldap-       1.2.12-1    OpenLDAP runtime files fo
  n* Imp libs     libopenldap1       1.2.12-1    OpenLDAP libraries.
  n* Imp libs     libpcre2           2.08-1      Philip Hazel's Perl Compa軟件包狀態(tài)
每個軟件包的狀態(tài)都可以在略帶神秘的標(biāo)題 EIOM 下看到。我們關(guān)心的列在 M 字符下,其中每個軟件包都用下列標(biāo)記之一來進行標(biāo)記:
要更改標(biāo)記,只要按住代表您想要的代碼的鍵(等號、破折號或下劃線)即可,但如果您想把標(biāo)記改為 *(星號),則必須按 +(加號)。
當(dāng)您完成操作后,用一個大寫的 Q 來保存您的更改并退出 Select 屏幕。任何時候,如果您在 dselect 中需要幫助,可以輸入 ?(問號)。輸入空格則從幫助屏幕返回。
安裝和配置(dpkg-reconfigure)
除非您運行象 apt-get dselect-upgrade 這樣的命令,否則 Debian 不會基于狀態(tài)設(shè)置來安裝或除去軟件包。這個命令實際上立刻為您完成了幾個步驟 ― 安裝、除去和配置。安裝和除去步驟不需要停下來詢問您任何問題。然而,配置步驟為了按您的希望來設(shè)置軟件包,可能會問任意多個問題。
要運行這些步驟還有其它方法。例如,您可以從主 dselect 菜單單獨選擇每一步驟。
有些軟件包使用名為 debconf 的系統(tǒng)用于其配置步驟。那些使用 debconf 的軟件包可以用各種方式詢問其配置問題,詢問方式可以是:在文本終端中、通過圖形界面或通過 Web 頁面等。要配置一個這樣的軟件包,可以使用 dpkg-reconfigure 命令。您甚至可以用它來確保所有的 debconf 軟件包都已完全配置。
# dpkg-reconfigure --all
debconf: package "3c5x9utils" is not installed or does not use debconf
debconf: package "3dchess" is not installed or does not use debconf
debconf: package "9menu" is not installed or does not use debconf
debconf: package "9wm" is not installed or does not use debconf
debconf: package "a2ps" is not installed or does not use debconf
debconf: package "a2ps-perl-ja" is not installed or does not use debconf
debconf: package "aalib-bin" is not installed or does not use debconf
這會產(chǎn)生一個很長的、未使用 debconf 的軟件包列表,但它也會找到使用 debconf 的軟件包,并且以易于使用的格式讓您回答每個軟件包提出的問題。
獲取已安裝軟件包的狀態(tài)
目前我們所評論 Debian 軟件包管理工具最適于處理有較長軟件包列表的多步操作。但它們不包括軟件包管理的某些具體操作。對于這一類工作,您可以使用 dpkg。
例如,要獲得軟件包的完整狀態(tài)和描述,可以使用 -s 選項:
# dpkg -s xsnow
Package: xsnow
Status: install ok installed
Priority: optional
Section: non-free/x11
Installed-Size: 41
Maintainer: Martin Schulze
Version: 1.40-6
Depends: libc6, xlib6g (>= 3.3-5)
Description: Brings Christmas to your desktop
Xsnow is the X-windows application that will let it snow on the
root window, in between and on windows.  Santa and his reindeer
will complete your festive-season feeling.
文件與其 .deb 之間的鏈接 因為 .deb 軟件包含有文件,所以您可能會想到應(yīng)該有辦法列出軟件包內(nèi)的文件。哦,沒錯;只要用 -L 選項:
# dpkg -L xsnow
/.
/usr
/usr/doc
/usr/doc/xsnow
/usr/doc/xsnow/copyright
/usr/doc/xsnow/readme.gz
/usr/doc/xsnow/changelog.Debian.gz
/usr/X11R6
/usr/X11R6/bin
/usr/X11R6/bin/xsnow
/usr/X11R6/man
/usr/X11R6/man/man6
/usr/X11R6/man/man6/xsnow.6.gz
要用其它方法,并且要找出哪個軟件包含有一個特定的文件,可以使用 -S 選項:
# dpkg -S /usr/doc/xsnow/copyright
xsnow: /usr/doc/xsnow/copyright
軟件包的名稱剛好在冒號的左邊。查找要安裝的軟件包 通常,apt-get 已經(jīng)知道您可能需要的所有 Debian 軟件包。如果它不知道,您或許能在這些
Debian 軟件包列表
中(或 Web 上的其它地方)找到該軟件包。如果您已經(jīng)找到并下載了一個 .deb 文件,您可以用 -i 選項安裝它:# dpkg -d /tmp/dl/xsnow_1.40-6_i386.deb
如果您找不到希望看到的 .deb 文件,但卻發(fā)現(xiàn)了 .rpm 文件或一些其它類型的軟件包,您或許可以使用 alien。alien 程序可以將軟件包從各種格式轉(zhuǎn)換成 .deb。其它 Debian 軟件包管理參考資料 Debian 軟件包管理系統(tǒng)的內(nèi)容遠(yuǎn)比我們這里介紹的要多。Debian 的功能也遠(yuǎn)不止它的軟件包管理系統(tǒng)。下列站點將幫助您鞏固在這些領(lǐng)域的知識:七。參考資料與反饋
參考資料
不要忘記
http://www.linuxdoc.org
。您將發(fā)現(xiàn) linuxdoc 的指南、HOWTO、FAQ 和手冊頁集合是無價的。請務(wù)必查看
Linux Gazette

LinuxFocus
。
Linux 系統(tǒng)管理員指南可以從
Linuxdoc.org 的“Guides”一節(jié)
獲得,這是對本教程系列的極佳補充 ― 不妨一讀!您還會發(fā)現(xiàn) Eric S. Raymond 的
Unix and Internet Fundamentals HOWTO
很有裨益。
Bash by example 文章系列中,我們向您顯示如何使用 bash 編程構(gòu)造編寫自己的 bash 腳本。本系列(特別是第一和第二部分)會是 LPIC Level 1 考試的極佳準(zhǔn)備資料。

我們極力推薦由 Mark Chapman 編寫的
Technical FAQ for Linux users
,,這是一篇長達(dá) 50 頁的內(nèi)容深入的列表,其中有經(jīng)常詢問的 Linux 問題及詳細(xì)的回答。FAQ 本身是 PDF(Adobe Acrobat)格式的。如果您是初級或中級 Linux 用戶,那么您確實應(yīng)擁有該 FAQ 以便進行查閱。我們還推薦
為 Windows 用戶準(zhǔn)備的簡明 Linux 詞匯表
,同樣由 Mark 編寫。
如果您還不太熟悉 vi 編輯器,我們強烈推薦您查閱 IBM 的
vi 入門 -- 巧表單方法
。該教程有條理而且快速地介紹這個功能強大的文本編輯器。如果您不知道如何使用 vi,請考慮這份必讀資料。
您的反饋意見
我們盼望獲得您對本教程的反饋信息。另外,非常歡迎您通過
drobbins@gentoo.org
與 Daniel Robbins 直接聯(lián)系。


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/3984/showart_11576.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP