Linux 學習筆記(十一)軟件和配置管理

1 Linux 基本安裝

目前的各種 Linux 發行版本都是提供很直觀的基本安裝步驟。你可以從光盤或者 USB 啓動(如果你的機器支持 USB 啓動的話),回答安裝過程中的幾個問題,告訴安裝程序基本的硬盤分區、文件格式、語言選項等信息。大多數 Linux 發行版本都採用了圖形界面的安裝程序,可以說是非常直觀和方便地幫助用戶將系統安裝到他們的機器上去。

具體的光盤鏡像直接訪問您要使用的發行版本的官方網址(以下發行版本的排序僅以字母的排序爲依據,並非指的是發行版本的流行程度)

發行版本 網址
debian http://www.debian.org/
fedora http://fedoraproject.org/
redhat http://www.redhat.com
suse https://www.suse.com
ubuntu http://www.ubuntu.com

一般情況下根據安裝程序的指引都能夠很順利地完成安裝。如果在安裝過程中遇到任何問題,也不需要驚惶,您還可以到官網查閱官方的安裝手冊,一般你的問題都可能是 FAQ,所以直接查詢 FAQ 吧。

1.1 從網絡引導 PC

從網絡引導系統的做法可以不必從硬盤、軟盤(現在誰還用這玩意呀)、USB 驅動器或者 CD-ROM 光盤,而是完全通過網絡來引導一臺計算機。這對於安裝來說很方便,因爲它意味着你可以坐在桌子旁邊,不必走到機器那裏插入 CD-ROM 光盤,就可以從網絡上引導位於別處的一臺機器。

要實現這樣的功能,機器首先必須支持網絡啓動,所幸 Intel 公司已經制訂出 PXE (Pre-boot eXecution Environment) 標準,雖然 PXE 還不完善,但是不好的標準(一般)總比沒有標準強。

PXE 的作用就像是在網卡上 ROM 裏的一個小小操作系統。它通過一個標準 API 把自己的網絡功能提供給系統 BIOS。有了 PXE 和 BIOS 兩者的合作,就有可能在任何有 PXE 的 PC 上,讓一個引導加載程序不需要給每個網卡提供專門的驅動程度,就能通過網絡啓動 Linux。

1.2 爲 Linux 設置 PXE

現在有幾種基於 PXE 的網絡引導系統,但是目前效果最好的是 H.Peter Anvin 的 PXELINUX,這是他的通用引導加載程序 SYSLINUX 的一部分。從 http://syslinux.zytor.com 可以得到這個軟件。

PXELINUX 提供了一個引導文件,用戶把這個文件安裝到服務器的 tftpboot 目錄下,當 PXE 起作用的時候,就會被下載到正在啓動的 PC 上。這臺 PC 接着執行這個引導文件,從服務器下載它的配置。下載的配置規定了使用哪個內核。

在服務器端一定要使用 ISC (Internet System Consortium) 的 DHCP 服務器。如果使用了不一樣的服務器,那就必須配置額外的 DHCP 選項,或者使用服務器的配置文件時的數字表示。

有關利用 PXE 引導和安裝 Linux 的實例可以查看我做的安裝 LTSP 瘦客戶端系統以及通過局域網安裝 ubuntu實驗。當然,安裝和配置過程都是非常簡單的,儘管大膽地去做吧!如果在做的過程遇到問題歡迎隨時給我發郵件 (mailto:[email protected]) 或留言,別擔心,我收得到的。:)

2 軟件包管理

常用的軟件包格式有兩種。Red Hat、Fedora、SUSE 和其他幾種發行版本使用 RPM 即 Red Hat Package Manager。Debian 和 Ubuntu 使用一種不同的 .deb 格式。這兩種格式的功能類似。

利用 alien 這樣的工具,如果在你所使用的發行版本上還沒有安裝它,可以使用下面的命令進行安裝:

Debian 和 Ubuntu

$ sudo apt-get install alien

Red Hat、Fedora 和 SUSE

$ sudo yum install alien

alien 工具很容易就能在兩種軟件包格式之間進行轉換。對 alien 來說,它對軟件包的軟件一無所知,如果軟件包的內容和發行版本不兼容的話,那麼 alien 毫無用處。一般來說,最好堅持使用發行版本自己的軟件包機制。

RPM.deb 這兩種系統現在都是兩層的全能配置管理工具。下面一層是安裝、卸載和查詢軟件包的工具:RPM 的工具叫 rpm.deb 的工具叫 dpkg

在這些命令之上的是知道如何在 Internet 上找軟件包、分析軟件包間依賴關係、以及升級系統上所有軟件包的系統。在這個層次上主要的軟件是:配合 RPM 系統運行的 yum,以及 Debian 的 APT(Advanced Package Tool,高級軟件包工具)。我們也可以從下面的表中對比這兩種軟件管理工具:

發行版本 軟件管理機機制 使用指令 online 升級機制
Red Hat/Fedora RPM rpm, rpmbuild YUM (yum)
Debian/Ubuntu DPKG dpkg APT (apt-get)

2.1 rpm: 管理 RPM 軟件包

rpm 命令安裝軟件包、覈實和查詢軟件包的狀態。它以前也可以構造軟件包,但是這項功能現在已經分拆出來交由 rpmbuild 命令負責。我們以一個名爲 openssh-i386.rpm 的軟件包爲例:

安裝

$ sudo rpm --install openssh-i386.rpm

將會在系統上安裝 openssh-i386.rpm 軟件包中所包含的軟件。

2.2 dpkg: 管理 Debian 軟件包

dpkg 命令的基本語法爲:

dpkg [option…] action

dpkg 是一個用於安裝、創建、卸載和管理 Debian 軟件包的工具。它有一個友好的前端工具 aptitudedpkg 本身通過命令行參數進行控制,它包含僅有的一個 action 和 0 個或多個 optionaction 參數告訴 dpkg 需要做什麼而 option 則控制 action 的行爲。

dpkg 同樣可以作爲 dpkg-debdpkg-query 的前端工具使用。dpkg 比較有用的選項有:--install、--remove 以及 --purge,最後一個選項會連帶軟件的配置文件也一起刪除掉。

如果你已經拿到某個軟件包:packagename.deb,那麼可以使用下面命令進行操作:

安裝

$ sudo dpkg --install packagename.deb

刪除

$ sudo dpkg --remove packagename

如果需要將配置文件也清除掉的話,可以考慮使用 --purge 選項

$ sudo dpkg --purge packagename

3 APT: 高級軟件包工具

APT (Advanced Package Tool, 高級軟件包工具) 是最成熟的軟件包管理系統。用一條 apt-get 命令就可以更新整個一個系統的所有軟件,甚至還可以不需要人工干預,保持您的機器不斷得到更新。

在 Debian 世界裏,您還可以使用 apt-get 的一些非常優秀的前端工具,如 dselect, aptitude, synapticwajig。不過《Linux 系統管理技術手冊》上卻有一段非常幽默的話:“在 Debian 系統上使用 apt-get 的第一條原則就是忽略 dselect 的存在,它充當了 Debian 軟件包系統的前端。雖然它並不是個壞想法,但是用戶界面太差了。Debian 的文檔將會試着指導您使用 dselect,但您自己要挺住。”

具體使用什麼前端取決於您的選擇,至於挺不挺得住就看您自己啦,:)

3.1 配置 apt-get

apt-get 最重要的配置文件是 /etc/apt/sources.list,它告訴 apt-get 到哪兒去找它的軟件包。這個文件裏每行規定的內容如下:

  • 軟件包的類型,目前 Debian 類型的軟件包用 deb 或者 deb-src。
  • 指向一個文件、CD-ROM、HTTP 服務器或者 FTP 服務器的 URL,從那裏可以能夠取得軟件包;
  • “發佈名字”,能讓您提供軟件包的多個版本。
  • 組件可能的清單——其實是發行版本內的軟件包分類。

3.2 /etc/apt/sources.list 文件的例子

下面的例子我使用的是 http://mirrors.163.com/ubuntu 的 HTTP 服務器。因爲它是目前我使用中最快的 APT 服務器。以 Precise (12.04) 爲例, 編輯 /etc/apt/sources.list 文件, 在文件最前面添加以下條目(操作前請做好相應備份)

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list-bak

然後修改文件讓它看起來像這個樣子:

deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse

當然您也可以到 http://mirrors.163.com/ 網址查看適合您發行版本的使用幫助。裏面同時還包含了很多其他的開源發行版本,如 Archlinux、CentOS、Fedora、FreeBSD、Debian、Gentoo、openSUSE 等。修改完 /etc/apt/sources.list 文件後務必刷新一下 apt-get 緩存的軟件包信息。

$ sudo apt-get update

3.3 設置內部 APT 服務器

如果您打算在大量主機上使用 apt-get,或者想要把軟件包緩存在本地——爲每臺機器都下載每個軟件包的一個副本對帶寬的使用來說並不划算。您可以建立自己管理的 APT 服務器,並且把內部的客戶機都指向它。

既然 apt-get 使用標準的協議(HTTP 和 FTP)下載它的軟件包,建立一臺 APT 服務器所要做的全部工作就是建立一個 Web 或者 FTP 服務器,提供適當的內容。除了提供軟件包的文件之外,還必須生成兩個軟件包的彙總文件:Packages.gzContents.gz。前者是服務器上軟件包以及其依賴關係的清單,並且用 gzip 壓縮過了。apt-get update 使用這個清單來確定能夠獲得哪些補充的軟件包。後者建立一原始文件到包含它們的軟件包的映射關係,apt-get 本身實際上並不會用到這個文件。apt-utils 這個軟件包中包含的 apt-ftparchive 命令會自動替您生成這兩個彙總文件。

一旦已經創建好了彙總文件,剩下來的工作就很容易了。在客戶機上的 /etc/apt/sources.list 文件中像下面這樣的一行會把 apt-get 連到您的服務器上。

deb http://local-server/mypackages/ . /

在每臺客戶機上運行 apt-get update , 然後照常使用 apt-get

3.4 自動執行 apt-get

您可以從 cron 定期執行 apt-get。即使您並不打算自動安裝軟件包,也可能想要定期執行 apt-get update 來保持包彙總信息得到更新。直接從發行版本的鏡像站點執行自動升級操作或許並不是個好主意。不過如果您有了自己的 APT 服務器、軟件包和發佈控制系統,那麼這就是保持客戶機同步的妥善方式。像下面這樣的一個簡短的 shell 腳本能夠讓一臺機器保持和它的 APT 服務器同步更新:


#!/bin/sh
apt-get update
apt-get -yes dist-upgrade

如果想要在夜間運行這個,就從 cron 來調用它。您可以參考Linux 學習筆記(八)週期性進程瞭解有關 cron 的知識。

4 yum: 管理 RPM 的發佈

yum (Yellow dog Updater, Modified) 是基於 RPM 的元軟件包管理器。把 yum 叫做 apt-get 的克隆可能有一點兒不公平,但是它從提法上和實現上都類似於 apt-get,只是實際上用起來更簡潔和速度更慢。

yumapt-get 之間的相似性也擴大到了它們所支持的命令行參數上。例如,

$ sudo yum install foo

會下載和安裝軟件包 foo 的最新版本。但是兩者還是有一點截然不同之處:apt-get update 會刷新 apt-get 的軟件包信息緩存,但是 yum update 命令會更新系統上的每個軟件包(類似於 apt-get upgrade)。讓情況更混亂的是,還有 yum upgrade 命令,它的作用和 yum update 命令相同,區別在於 yum upgrade 相當於一次大規模的升級。

yum 的配置文件是 /etc/yum.conf。它包含通用選項和指向軟件包庫的指示。一次能夠有多個活動的軟件庫,每個軟件庫都可以關聯多個 URL。

Good luck & Enjoy your life.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章