Linux軟件管理(未完待續)

  版權聲明本文章參考《Linux man pages》做了修改,增添了一部分內容。未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!


  起初 GNU/Linux 的世界中只有.tar.gz。如果用戶要使用一個軟件,那就必須自己編譯。當 Debian 誕生以後,一種能管理操作系統中已安裝的軟件包的系統顯得很有必要,這個系統被命名爲‘dpkg’。‘軟件包’一詞在此第一次出現在 GNU/Linux。不久之後,紅帽公司創建了他們自己的包管理系統‘rpm’。

  GNU/Linux 的創造者們很快又陷入了新的窘境。他們希望通過一種快捷、實用而且高效的方式來安裝軟件包,並能自動處理相互之間的依賴關係,還要在軟件包升級過程中維護好配置文件。Debian 又一次充當了開路先鋒的角色,她首創了 APT(Advanced Packaging Tool,高級軟件包管理工具)。這一工具後來被 Conectiva 移植到紅帽公司的 rpm 包管理系統。在其他一些發行版中,我們也能看到 APT 的身影。”

distribution 軟件管理機制 本地管理指令 在線管理機制 在線管理指令
Red Hat/Fedora RPM rpm YUM yum
Debian/Ubuntu DPKG dpkg APT apt套件

1 在線管理機制

1.1 APT

1.1.1 重要的相關目錄和文件

  • /etc/apt/sources.list
    存放的是軟件源站點, 當你執行 sudo apt-get update 時,Ubuntu 就去這些站點下載軟件包列表到/var/lib/apt/lists/目錄中。
  • /etc/apt/sources.list.d/
    該文件夾下的文件是第三方軟件的源,可以分別存放不同的第三源地址,只需“擴展名”爲list即可,
  • /var/cache/apt/archives/
    目錄是在用apt-get install 安裝軟件時,軟件包的臨時存放路徑
  • /var/cache/apt/archives/partial/
    傳輸中軟件包。

  • /var/lib/dpkg/available
    文件的內容是軟件包的描述信息, 該軟件包括當前系統所使用的 Debian 安裝源中的所有軟件包,其中包括當前系統中已安裝的和未安裝的軟件包.

  • /var/lib/apt/lists/
    使用apt-get update命令會從/etc/apt/sources.list的源站點中下載軟件列表,並保存到該目錄,執行apt-get安裝或升級時,會訪問該目錄的軟件列表文件,以獲取包信息。

  • /var/lib/apt/lists/partial/
    傳輸中的源的狀態信息。
  • /etc/apt/apt.conf
    APT配置文件
  • /etc/apt/apt.conf.d/
    APT 配置文件,存放各個單獨的配置
  • /etc/apt/preferences
    版本首選項
  • /etc/apt/preferences.d/
    版本首選項, 存放各個單獨的版本首選項

1.1.2 工作原理

  Ubuntu採用集中式的軟件倉庫機制,將各式各樣的軟件包分門別類地存放在軟件倉庫中,進行有效地組織和管理。然後,將軟件倉庫置於許許多多的鏡像服務器中,並保持基本一致。這樣,所有的Ubuntu用戶隨時都能獲得最新版本的安裝軟件包。因此,對於用戶,這些鏡像服務器就是他們的軟件源(Reposity)。

  然而,由於每位用戶所處的網絡環境不同,不可能隨意地訪問各鏡像站點。爲了能夠有選擇地訪問,在Ubuntu系統中,使用軟件源配置文件/etc/apt/sources.list列出最合適訪問的鏡像站點地址。

  無論用戶使用哪些手段配置APT軟件源,只是修改了配置文件/etc/apt/sources.list,目的只是告知軟件源鏡像站點的地址。但那些所指向的鏡像站點所具有的軟件資源並不清楚,若每安裝一個軟件包,就在服務器上尋找一遍,效率是很低的。因而,就有必要爲這些軟件資源列個清單(建立索引文件),以便本地主機查詢。

  索引文件的包信息主要有:Package、Architecture、Multi-Arch、Version、Priority、Section、Origin、Maintainer、Original-Maintainer、Bugs、Installed-Size、Provides、Depends、Breaks、Filename、Size、MD5sum、SHA1、SHA256、Homepage、Description、Task、Description-md5: 、Supported、conflict

  用戶可以使用apt-get update命令更新軟件包列表。在Ubuntu 中,apt-get update命令會掃描每一個軟件源服務器,併爲該服務器所具有軟件包資源建立索引文件,存放在本地的/var/lib/apt/lists/目錄中。使用apt-get執行安裝、更新操作時,都將依據這些索引文件,獲取相應包的信息,然後向軟件源服務器申請資源。同時,APT能夠檢查Linux系統中的軟件包依賴關係,大大簡化了Ubuntu用戶安裝和卸載軟件包的過程。

  使用apt-get install安裝軟件包大體分爲4步:
  第一步,掃描本地存放的軟件包更新列表(由apt-get update命令刷新更新列表,也就是/var/lib/apt/lists/),找到最新版本的軟件包;
  第二步,進行軟件包依賴關係檢查,找到支持該軟件正常運行的所有軟件包;
  第三步,從軟件源所指的鏡像站點中,下載相關軟件包;
  第四步,解壓軟件包,並自動完成應用程序的安裝和配置。

  不過,APT並不是指某個命令,而是一組命令:

常用APT命令 作用
apt-add-repository 添加或者刪除源站點
apt-cache 查詢軟件包信息;
apt-cdrom 將CD-ROM加入軟件源配置文件。
apt-config 用於讀取APT配置文件的簡單工具;
apt-extracttemplates 提取一個或多個軟件包的配置腳本和模板文件成
apt-file 查到軟件包所含的文件和安裝的位置
apt-ftparchive 生成APT用來訪問分發源的索引文件。
apt-get 管理軟件包,包括安裝、卸載、升級等操作;
apt-key 管理apt認證包時使用的密鑰。
apt-mark 作爲一個統一的前端來設置一個包的各種設置
apt-mirror 創建鏡像站點
apt-proxy 用於搭建APT代理服務器;
apt-sortpkgs 採用索引文件(源索引或包索引)對記錄的包行排序
apt apt-get、apt-cache、apt-config常用命令的高級接口
apturl 通過點擊URL安裝軟件
aptitude 整合dselect和apt-get的功能
aptoncd 是將安裝的軟件包備份到光盤或ISO映像的簡單方法

1.1.3 設置APT源

  在安裝Linux時,系統會根據用戶所選擇的國家/時區,推薦合適的軟件源地址。通常,用戶使用默認的/etc/apt/sources.list文件就可以。不過,當用戶發現更合適的軟件源鏡像站點時,可以重新設置APT源。sources.list 條目格式:

DebType  Repository_URL  Distribution  Component1  Component2……
  • DebType表示Deb軟件包類型

    • deb表示二進制軟件包
    • deb-src表示源碼包;
  • Repository URL表示軟件包所在倉庫的地址。我們可以更換倉庫來提高下載速度。

  • Distribution表示發行版本,發行版有兩種分類方法:

    • 第一類是發行版的具體代號,如 xenial, trusty, precise 等;
    • 第二類則是發行版的發行類型,如 oldstable, stable, testing 和 unstable。
    • 另外,在發行版後還可能有進一步的指定,如 xenial-updates, trusty-security, stable-backports 等。
  • Component表示軟件包組件類別

    • Debian
      • main——包含符合 DFSG指導原則的自由軟件包,而且這些軟件包不依賴不符合該指導原則的軟件包。這些軟件包被視爲 Debian 髮型版的一部分。
      • contrib——包含符合 DFSG 指導原則的自由軟件包,不過這些軟件包依賴不在 main 分類中的軟件包。
      • non-free——包含不符合 DFSG 指導原則的非自由軟件包。
    • Ubuntu
      • main——官方支持的自由軟件。
      • restricted——官方支持的非自由的軟件。
      • universe——非官方支持的自由軟件。
      • multiverse——非官方支持的非自由軟件。

1.1.4 添加刪除倉庫——apt-add-repository

  命令:apt-add-repository [OPTIONS] REPOSITORY
  功能:將一個APT倉庫添加到/etc/apt/sources.list/etc/apt/sources.list.d/中或刪除已存在的存儲庫。

常用選項 描述
-m 將大量調試信息打印到命令行中
-r 刪除指定的存儲庫
-y 假設所有查詢都是
-k 使用自定義密鑰服務器URL而不是默認值
-s 允許從存儲庫下載源包
更多信息 http://linux.51yip.com/search/apt-add-repository 和 man 手冊
     http://man.linuxde.net/apt-add-repository

1.1.5 查詢軟件包信息——apt-cache

  命令:apt-cache subcommand [options] [pkg_list]
  功能:apt-cache在APT的包緩存上執行各種操作。 apt-cache不會改變系統狀態,但會提供操作以從軟件包元數據中生成感興趣的結果。元數據是通過apt-get update命令獲取和更新的。

常用子命令 描述
gencaches 創建APT的包緩存。
showpkg pkg 獲取二進制軟件包的常規描述信息
showsrc pkg 獲取源碼包的詳細描述信息
show pkg 獲取二進制軟件包的詳細描述信息
stats 獲取軟件源的基本統計信息
dump 獲取軟件源中所有軟件包的簡要信息
dumpavail 獲取當前中已安裝的所有軟件包的描述信息
unmet 獲取所有未滿足的依賴關係
search 根據正則表達式檢索軟件包
depends pkg 獲取該軟件包的依賴信息
rdepends pkg 獲取所有依賴於該軟件包的軟件包
pkgnames 列出所有已安裝軟件包的名字
policy 獲取軟件包當前的安裝狀態
常用選項 描述
-p 軟件包的緩存
-s 源代碼包的緩存
-q 關閉進度獲取
-i 獲取重要的依賴關係,僅與unmet命令一起使用
-n 只搜索包名,不搜索描述
-f 搜索時顯示完整的包信息
-c file 指定配置文件
-o strings 設置配置選項
更多信息 http://linux.51yip.com/search/apt-cache 和 man 手冊
     http://man.linuxde.net/apt-cache

1.1.5 將CD-ROM加入源—apt-cdrom

  命令:apt-cdrom subcommands [-d|-r|-m|-f|-a|-h|-c config_name ]
  功能:用於檢查Ubuntu安裝光盤,也可將安裝光盤作爲軟件源添加到軟件源配置文件中

常用子命令 描述
ident 用於掃描Ubuntu安裝光盤,
add 用於向/etc/apt/sources.list文件添加CD-ROM配置項。
常用選項 描述
-d 指定CD-ROOM的掛載點
-r 爲一個已經識別CD-ROM改名
-m 聲明CD-ROOM無掛載點
-f 快速模式,不檢查軟件包文件
-a 完整掃描模式
-c file 指定配置文件
-o strings 設置配置選項
更多信息 http://linux.51yip.com/search/apt-cdrom 和 man 手冊
     http://man.linuxde.net/apt-cdrom

1.1.6 軟件管理——aptapt-get

1.1.6.1 apt與apt-get的關係

  在基於 Debian 的 Linux 發行版中,有各種工具可以與 APT 進行交互,以方便用戶安裝、刪除和管理的軟件包。apt-get 便是其中一款廣受歡迎的命令行工具,另外一款較爲流行的是 Aptitude 這一命令行與 GUI 兼顧的小工具。

  apt套件包含許多工具,如apt-cache、apt-config 等。這些命令都比較低級又包含衆多功能,普通的 Linux 用戶也許永遠都不會使用到。換種說法來說,就是最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config這三條命令當中。

  apt 命令的引入就是爲了解決命令過於分散的問題,它包括了 apt-get 命令出現以來使用最廣泛的功能選項,以及 apt-cache 和 apt-config 命令中很少用到的功能。

  在使用 apt 命令時,用戶不必再由 apt-get 轉到 apt-cache 或 apt-config,而且 apt更加結構化,併爲用戶提供了管理軟件包所需的必要選項。

  簡單來說就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令選項的集合。

1.1.6.2 apt命令的特點

  • 用戶可以在同一地方集中得到所有必要的工具,不必再由 apt-get 轉到 apt-cache 或 apt-config
  • apt具有更精減但足夠的命令選項,而且參數選項的組織方式更爲有效。
  • 命令安裝或刪除程序時有進度條。
  • 在更新存儲庫數據庫時提示用戶可升級的軟件包個數。

1.1.6.3 軟件管理命令——apt-get

  命令:apt-get subconmmand [options]
  功能:apt-get命令本身並不具有管理軟件包功能,只是提供了一個軟件包管理的命令行平臺。在這個平臺上使用更豐富的子命令,完成具體的管理任務。

常用子命令 描述
update 下載更新軟件包列表信息
upgrade 將系統中所有軟件包升級到最新的版本
dist-upgrade 發佈版升級
dselect-upgrade 根據dselect的選擇來進行軟件包升級
install 下載所需軟件包並進行安裝配置
remove 卸載軟件包,但保留配置文件
purge 卸載軟件包和配置文件
autoremove 根據依賴關係卸載軟件包和卸載不需要或不滿足依賴關係的軟件包
source 下載源碼包
build-dep 爲源碼包構建所需的編譯環境
clean 刪除緩存區中所有已下載的包文件
autoclean 刪除緩存區中老版本的已下載的包文件
check 檢查系統中依賴關係的完整性
download 下載二進軟件包到當前文件夾
常用選項 描述
-d 僅下載軟件包,而不安裝或解壓
-f 修復系統中存在的軟件包依賴性問題
-m 當發現缺少關聯軟件包時,仍試圖繼續執行
-q 將輸出作爲日誌保留,不獲取命令執行進度
–purge 與remove子命令一起使用,完全卸載軟件包,等效於purge子命令
–reinstall 與install子命令一起使用,重新安裝軟件包
-b 在下載完源碼包後,編譯生成相應的軟件包
-s 不做實際操作,只是模擬命令執行結果
-y 對所有詢問都作肯定的回答,apt-get不再進行任何提示
-u 獲取已升級的軟件包列表
-V 顯示安裝、升級過程
-u 顯示要升級的包
更多信息 http://linux.51yip.com/search/apt-get 和 man 手冊
     http://man.linuxde.net/apt-get

1.1.6.4 軟件管理高級命令——apt

  命令:apt subconmmand [options] [pkg]
  功能:apt命令本身並不具有管理軟件包功能,只是提供了一個軟件包管理的命令行平臺。在這個平臺上使用更豐富的子命令,完成具體的管理任務。

常用命令 描述
install 下載所需軟件包並進行安裝配置
remove 移除軟件包,但保留配置文件
autoremove 根據依賴關係卸載軟件包和卸載不需要或不滿足依賴關係的軟件包
purge 移除軟件包及配置文件
search 搜索應用程序
show 顯示軟件包詳細信息
update 刷新存儲庫索引
upgrade 升級所有可升級的軟件包
full-upgrade 在升級軟件包時自動升級依賴包
list 列出包,–installed,已安裝;–upgradable可升級; –all-versions所有版本
edit-sources 編輯源文件
更多信息 http://linux.51yip.com/search/apt 和 man 手冊
     http://man.linuxde.net/apt

1.1.6.5 apt與apt-get對照表

apt 命令 取代的命令 命令的功能
apt install 包名 apt-get install 包名 安裝軟件
apt remove 包名 apt-get remove 包名 移除軟件,保留配置
apt autoremove apt-get autoremove 自動卸載軟件
apt purge 包名 apt-get purge 包名 移除軟件包及配置文件
apt search 包名 apt-cache search 包名 搜索應用程序
apt show 包名 apt-cache show 包名 顯示軟件包詳細信息
apt update apt-get update 刷新存儲庫索引
apt upgrade apt-get upgrade 升級所有可升級的軟件包
apt full-upgrade apt-get dist-upgrade 升級軟件和依賴包
apt list –installed dpkg -l 列出已安裝的軟件
apt list –upgradable apt-get -u upgrade –assume-no 列出可升級的軟件
apt edit-sources vim /etc/apt/sources.list 編輯源文件

1.1.7 配置APT——apt-config

  命令:apt-config [–empty] [–format ‘%f “%v”;%n’] [-o=config_string] [-c=config_file] {shell | dump | {-v | –version} | {-h | –help}}
  功能:apt-config用於設置APT或讀取APT配置文件

常用子命令 描述
shell 從shell腳本中獲取配置信息
dump 顯示配置信息
常用選項 描述
–empty 輸出中包含值爲空的選項
–no-empty 輸出中不包含值爲空的選項
–format ‘%f “%v”;%n’ 定義每個配置選項的輸出。%t輸出選項名,%f輸出完整的層次結構名稱,%v輸出選項值。%n將被替換爲換行符,而%N將被替換爲製表符。 %可以使用%%打印。
-c file 指定配置文件
-o 設置配置選項,語法是-o Foo::Bar=bar
更多信息 http://linux.51yip.com/search/apt-config 和 man 手冊
     http://man.linuxde.net/apt-config

1.2 YUM

  redhot/centos使用yum來安裝、卸載、搜索、查看應用程,會把所有的依賴包都一起安裝。

sudo yum install:安裝rpm軟件包;
sudo yum update:更新rpm軟件包;
sudo yum check-update:檢查是否有可用的更新rpm軟件包;
sudo yum remove:刪除指定的rpm軟件包;
sudo yum list:顯示軟件包的信息;
sudo yum search:檢查軟件包的信息;
sudo yum info:顯示指定的rpm軟件包的描述信息和概要信息;
sudo yum clean:清理yum過期的緩存;
sudo yum shell:進入yum的shell提示符;
sudo yum resolvedep:顯示rpm軟件包的依賴關係;
sudo yum sudo yum localinstall:安裝本地的rpm軟件包;
sudo yum localupdate:顯示本地rpm軟件包進行更新;
sudo yum deplist:顯示rpm軟件包的所有依賴關係。

2 本地管理機制

2.1 dpkg命令

dpkg安裝deb包
Ubuntu軟件包格式爲deb,安裝方法如下:

sudo  dpkg  -i  package.deb

dpkg的詳細使用方法,網上有很多,下面簡單列了幾個:

dpkg -i package.deb 安裝包
dpkg -r package 刪除包
dpkg -P package 刪除包(包括配置文件)
dpkg -L package 列出與該包關聯的文件
dpkg -l package 顯示該包的版本
dpkg –unpack package.deb 解開 deb 包的內容
dpkg -S keyword 搜索所屬的包內容
dpkg -l 列出當前已安裝的包
dpkg -c package.deb 列出 deb 包的內容
dpkg –configure package 配置包
根據Ubuntu中文論壇上介紹,使用apt-get方法安裝的軟件,所有下載的deb包都緩存到了/var/cache/apt/archives目錄下了,所以可以把常用的deb包備份出來,甚至做成ISO工具包、刻盤,以後安裝Ubuntu時就可以在沒有網絡環境的情況下進行了。下面的命令是拷貝archives這個目錄到/var/cache/apt/目錄下,替換原有的archives

enadmin@ubuntu-server:~/ftp$ sudo cp -r archives/ /var/cache/apt/

2.2 rpm

3 源代碼安裝

  如果要使用make安裝的話,那麼必須得安裝build-essential這個依賴包。源碼安裝大致可以分爲三步驟:

  • ./configure——配置編譯選項,選項可通過 –help 查詢。也有某些程序無需執行此步。
  • make——編譯:一旦配置通過,可即刻使用make指令來執行源代碼的編譯過程。
  • 安裝
    • make install——直接安裝:如果編譯沒有問題,那麼執行make install 就可以將程序安裝到系統中了。
    • check install——生成deb/rpm包。

  版權聲明本文章參考《Linux man pages》做了修改,增添了一部分內容。未經作者允許,嚴禁用於商業出版,否則追究法律責任。網絡轉載請註明出處,這是對原創者的起碼的尊重!!!


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