真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ubuntu軟件包管理

apt

創(chuàng)新互聯(lián)擁有十年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)服務(wù),對(duì)于網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、app軟件開(kāi)發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開(kāi)發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、域名申請(qǐng)等,憑借多年來(lái)在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷經(jīng)驗(yàn),集策劃、開(kāi)發(fā)、設(shè)計(jì)、營(yíng)銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。

先介紹下apt,apt(Advanced Package Tool)高級(jí)軟件包工具,是一組用來(lái)下載、安裝、刪除和升級(jí)軟件包以及報(bào)告軟件包狀態(tài)的工具,apt不是一個(gè)具體的命令,是由一組命令組成的包管理工具集,較常用的有apt-get,apt-cache。apt主要負(fù)責(zé)下載軟件包,而下載到本地之后,就會(huì)的調(diào)用dpkg來(lái)處理軟件包。

/etc/apt/sources.list

/etc/apt/sources.list這個(gè)文件指定apt查找或安裝某個(gè)軟件包時(shí)要搜索的倉(cāng)庫(kù),里面每一行定義一個(gè)倉(cāng)庫(kù)。倉(cāng)庫(kù)就是存放著一組軟件包及其相關(guān)信息,包括用來(lái)描述每個(gè)軟件包的頭部信息、包之間的依賴關(guān)系。Ubuntu倉(cāng)庫(kù)里面的軟件包可以劃分為以下幾個(gè)類別:

   1)main                #Ubuntu支持的開(kāi)源軟件

   2)universe           #由社區(qū)維護(hù)的開(kāi)源軟件

   3)multiverse       #存在版權(quán)限制或法律問(wèn)題的軟件

   4)restricted         #專有設(shè)備驅(qū)動(dòng)程序

   5)backports        #較新的Ubuntu發(fā)行中有的但較早發(fā)行中不存在的軟件包

apt在選擇軟件包時(shí),根據(jù)sources.list文件中指定的類別來(lái)搜索各個(gè)倉(cāng)庫(kù)。當(dāng)試圖安裝某個(gè)軟件包時(shí),可能會(huì)出現(xiàn)以下錯(cuò)誤信息:

root@baby-Inspiron-N5110:~# apt-get install xxx
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package xxx

這意味著sources.list文件中定義的任何一個(gè)倉(cāng)庫(kù)都不包含該軟件包,如果沒(méi)有使用最新版本的ubuntu,也有可能該軟件包只能在最新版本中才能使用。嘗試在sources.list文件中啟動(dòng)backports倉(cāng)庫(kù)。

sources.list文件定義倉(cāng)庫(kù)的格式如下:

   type URL repository category-list

type=deb               #可執(zhí)行文件的軟件包

type=deb-src         #源碼文件包

URL                        #指定倉(cāng)庫(kù)的位置,通常是一個(gè)網(wǎng)址

repository              #apt要搜索的倉(cāng)庫(kù)的名稱

category-list          #軟件包類別(main,universe,multiverse,restricted,backports多個(gè)的話用空格符隔開(kāi))

deb http://security.ubuntu.com/ubuntu precise-security main restricted

上面這一行內(nèi)容來(lái)自sources.list文件,他的含義是讓apt搜索位于http://security.ubuntu.com/ubuntu的precise-security倉(cāng)庫(kù),查找包含可執(zhí)行文件的deb軟件包。可接受的軟件包類別為main,restricted。若把deb替換為deb-src,apt會(huì)以同樣的方式搜索源文件包,通過(guò)命令apt-get source下載源碼包。

apt本地軟件包索引和apt緩存

/var/lib/apt/lists目錄下存放著本地軟件包索引及其相關(guān)文件。對(duì)于/etc/apt/sources.list文件中列出的每一個(gè)倉(cāng)庫(kù),這個(gè)目錄都有一個(gè)文件列出這個(gè)倉(cāng)庫(kù)中的每個(gè)軟件包的最新版本信息。apt使用這些文件來(lái)判斷系統(tǒng)中的軟件包以及它的緩存中的軟件包是否是最新版本。當(dāng)sources.list文件添加新的倉(cāng)庫(kù)時(shí),可使用apt-get update或aptitude update命令來(lái)同步/var/lib/apt/lists目錄下的索引和倉(cāng)庫(kù)中的相關(guān)信息,好讓apt能夠下載新添加的倉(cāng)庫(kù)中的軟件包。

apt的緩存存放在/var/cache/apt/archives目錄中,里面是最近下載的deb文件。默認(rèn)情況下,apt的cron腳本對(duì)這個(gè)目錄的大小以及這個(gè)目錄中文件的有效期有一定的限制。

在Ubuntu Linux中,需要說(shuō)明一個(gè)概念--虛擬軟件包。

將系統(tǒng)中具有相同或相近功能的多個(gè)軟件包作為一個(gè)軟件包集合,稱為虛擬軟件包,并指定其中一個(gè)軟件包作為虛擬軟件包的默認(rèn)首選項(xiàng)。提出虛擬軟件的意圖就是為了防止軟件安裝過(guò)程中發(fā)生沖突。例如,exim、sendmail和postfix軟件包都是用于郵件傳輸代理,將"mail-transport-agent"指定為它們的虛擬軟件包。當(dāng)用戶安裝"mail-transport-agent"時(shí),將選擇安裝exim、sendmail和postfix其中的首選項(xiàng)。

apt配置文件

apt的配置文件存放在/etc/apt/apt.conf.d目錄下。apt cron腳本存放在/etc/cron.daily目錄中,這樣每天都能運(yùn)行該腳本,它讀取apt.conf.d目錄中的配置文件,并根據(jù)這些配置文件中的指令來(lái)維護(hù)apt本地軟件包索引以及緩存。

下面的這兩個(gè)文件控制著apt cron腳本如何維護(hù)apt本地軟件包索引和apt緩存:

root@baby-Inspiron-N5110:/etc/apt/apt.conf.d# cat 10periodic 
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
root@baby-Inspiron-N5110:/etc/apt/apt.conf.d# cat 20archive 
APT::Archives::MaxAge "30";
APT::Archives::MinAge "2";
APT::Archives::MaxSize "500";

APT::Periodic::Update-Package-Lists "days";

                 #每days天將本地軟件包索引與它們對(duì)應(yīng)的倉(cāng)庫(kù)同步。days為0,禁用這個(gè)命令。

APT::Periodic::Download-Upgradeable-Packages "days";

                 #每days天下載升級(jí)系統(tǒng)中所有軟件包所需的軟件包(不安裝)。days為0,禁用這個(gè)命令。

APT::Periodic::AutocleanInterval "days";

                 #每days天清除不再能下載的那些軟件包的apt緩存。days為0,禁用這個(gè)命令。

APT::Archives::MaxAge "days";

                 #將days天之前的文件從apt緩存中刪除。days為0,禁用這個(gè)命令。

APT::Archives::MinAge "days";

                 #不要將days天之內(nèi)的文件從apt緩存中刪除。days為0,禁用這個(gè)命令。

APT::Archives::MaxSize "MB";

                 #設(shè)置apt緩存的最大尺寸。當(dāng)緩存增加超過(guò)MB兆字節(jié)的時(shí)候,apt cron腳本會(huì)刪除文件知道緩存的尺寸小于這個(gè)尺寸。它首先刪除那些尺寸最大的文件。MB為0,禁用這個(gè)命令。

aptitude的使用

aptitude是一款基于apt的包掛管理工具,功能類似于apt-get,這要用于軟件包的管理。aptitude有兩個(gè)界面:偽圖形界面和文本界面。這里僅介紹文本界面。aptitude工具的日志記錄在/var/log/aptitude中,日志的可讀性非常好。

aptitude autoclean           #清除不再能夠下載的那些軟件包的apt緩存。

aptitude clean                 #將所有軟件包從apt緩存中刪除

aptitude download         #下載某個(gè)軟件包的deb文件

aptitude upgrade             #升級(jí)指定的軟件包

aptitude full-upgrade      #升級(jí)系統(tǒng)中所有軟件包,并按需安裝新的軟件包

aptitude safe-upgrade    #升級(jí)系統(tǒng)中所有軟件包,不安裝新的軟件包

aptitude install                 #安裝指定的軟件包以及軟件包依賴的所有軟件包

aptitude reinstall              #重新安裝指定的軟件包

aptitude purge                #刪除指定的軟件包包括配置文件

aptitude remove              #刪除指定的軟件包,包括它依賴的軟件包,不刪除配置文件

aptitude search                #查找軟件包,在sources.list指定的倉(cāng)庫(kù)尋找

aptitude show                  #顯示軟件包的詳細(xì)信息,包括依賴信息

aptitude update               #將本地apt軟件包索引文件與倉(cāng)庫(kù)中的文件同步

當(dāng)aptitude刪除刪除某軟件包的時(shí)候,也會(huì)刪除在安裝該軟件包時(shí)自動(dòng)安裝的依賴軟件包。

要注意這么幾項(xiàng):

   1)aptitude update:apt corn腳本會(huì)在夜間自動(dòng)執(zhí)行軟件包索引文件的同步,但是若在/etc/apt/sources.list中添加了新的倉(cāng)庫(kù)后,想要立即使用,必須運(yùn)行這個(gè)命令。

   2)aptitude safe-upgrade與full-upgrade的區(qū)別在于aptitude full-upgrade在升級(jí)所有軟件包時(shí),為了滿足依賴關(guān)系會(huì)安裝一些尚未安裝的軟件包,而aptitude safe-upgrade只升級(jí)系統(tǒng)中所有只依賴于已安裝到系統(tǒng)中的軟件包的那些軟件包,這條命令不會(huì)安裝新的軟件包。

   3)aptitude search package-list通過(guò)此命令在搜索時(shí),倉(cāng)庫(kù)中的每個(gè)軟件包名與package-list中的某個(gè)元素匹配的軟件包都會(huì)顯示一行信息:

root@baby-Inspiron-N5110:/tmp# aptitude search apache
p   apache2                                                   - Apache HTTP Server metapackage                                      
p   apache2:i386                                              - Apache HTTP Server metapackage                                      
v   apache2-dev                                               -                                                                     
v   apache2-dev:i386                                          -                                                                     
p   apache2-doc                                               - Apache HTTP Server documentation                                    
v   apache2-mpm                                               -                                                                     
v   apache2-mpm:i386                                          -                                                                     
p   apache2-mpm-event                                         - Apache HTTP Server - event driven model 
......

每行的第一列中的字母給出了對(duì)應(yīng)軟件包在系統(tǒng)中的狀態(tài):i說(shuō)明已經(jīng)安裝,c表示出了配置文件之外其余已刪除,p表示已清除(包括配置文件),v表示虛擬軟件包。第一列第二個(gè)字母給出了將要對(duì)相應(yīng)軟件包執(zhí)行的存儲(chǔ)動(dòng)作。如果第3個(gè)字母為A,就意味著對(duì)應(yīng)軟件包曾經(jīng)自動(dòng)安裝過(guò)。

apt-cache

apt-cache是linux下的一個(gè)apt軟件包管理工具,它可查詢apt的二進(jìn)制軟件包緩存文件。APT包管理的大多數(shù)信息查詢功能都可以由apt-cache命令實(shí)現(xiàn)。apt-cache使用的緩存信息由apt-cache gencaches命令生成,這些緩存信息來(lái)自于/etc/apt/sources.list文件中指定的源(倉(cāng)庫(kù)),這些緩存信息包括每個(gè)倉(cāng)庫(kù)包含的所有軟件包的詳細(xì)信息及其依賴關(guān)系等。緩存信息存放于/var/lib/dpkg/status。

若將/var/lib/dpkg/status刪除或改成其他文件名,apt-cache這個(gè)命令也就會(huì)失去作用:

root@baby-Inspiron-N5110:/var/lib/dpkg# apt-cache show bind9
E: Could not open file /var/lib/dpkg/status - open (2: No such file or directory)
E: The package lists or status file could not be parsed or opened.
E: No packages found

錯(cuò)誤信息顯示,無(wú)法打開(kāi)/var/lib/dpkg/status文件!?。?/strong>

apt-cache主要用法:

Commands:

  gencaches          #重新構(gòu)建源碼包和代碼包的緩存

  showpkg             #顯示單個(gè)軟件包信息(包括包的信息,正向依賴包和反向依賴包等)

  showsrc               #顯示源文件的各項(xiàng)記錄(包括版本號(hào)、安裝狀態(tài)及包依賴關(guān)系等)

  stats                   #顯示一些基本的統(tǒng)計(jì)信息

  dump                  #簡(jiǎn)要顯示整個(gè)緩存文件的內(nèi)容

  dumpavail           #把所有有效的包文件列表打印到標(biāo)準(zhǔn)輸出

  unmet                #顯示所有未滿足的依賴關(guān)系

  search                 #搜索軟件包,可用正則表達(dá)式

  show                   #以便于閱讀的格式介紹該軟件包

  depends             #顯示指定軟件包所依賴的軟件包(正向依賴包)

  rdepends           #顯示軟件包的反向依賴關(guān)系,即有什么軟件包需依賴你所指定的軟件包

  pkgnames         #列出所有軟件包的名字(通過(guò)管道過(guò)濾查看軟件倉(cāng)庫(kù)是否包含該軟件包)

  dotty                  #生成可用 GraphVis處理的軟件包關(guān)系圖

  xvcg                   #生成可用 xvcg處理的軟件包的關(guān)系圖

  policy                 #顯示軟件包的安裝設(shè)置狀態(tài)

Options:

-h                  #顯示幫助文檔

-p=?               #軟件包緩存.

-s=?                #源碼包緩存.

-q                  #讓輸出可作為日志 -不顯示進(jìn)度

-i                  #只顯示未滿足依賴關(guān)系的重要信息.

-c=?              #讀取指定配置文件

-o=?               #設(shè)置任意指定的配置選項(xiàng),例如 -odir::cache=/tmp

apt-file

apt-file是一款專門(mén)用于軟件包搜索的工具,它的用法與apt-cache類似,先通過(guò)apt-file update命令依照/etc/apt/sources.list文件中指定的源生成緩存信息,存放于/var/cache/apt/apt-file目錄下,查詢時(shí)直接訪問(wèn)這些緩存信息。

apt-file的主要用法:

   apt-file update          #根據(jù)/etc/apt/sources.list文件中指定的源更新緩存

   apt-file search          #查詢某個(gè)文件來(lái)自于哪個(gè)軟件包(類似于dpkg -S filename,但是apt-file查詢時(shí)這個(gè)軟件包可以不安裝)

   apt-file find               #同search     

   apt-file list                 #查詢某個(gè)軟件包會(huì)生成哪些文件(類似dpkg -L,但apt-file查詢時(shí)這個(gè)軟件包可以不安裝)

   apt-file show            #同list         

   apt-file purge         #清空緩存

option:

   --cache | -c cache-directory    #指定緩存放置的目錄,默認(rèn)是/var/cache/apt/apt-file

   --ignore-case | -i                    #查詢時(shí)忽略大小寫(xiě)

   --sources-list | -s sources.list #指定配置軟件包倉(cāng)庫(kù)的文件,默認(rèn)/etc/apt/sources.list。

其他的選項(xiàng)可以通過(guò)man查詢。

apt-get

apt-get是apt眾多的工具中最常用的一個(gè),這也是一個(gè)包管理工具。兩個(gè)相關(guān)目錄:本地軟件包索引位于/var/lib/apt/lists目錄下,最近下載的軟件包緩存于/var/cache/apt/archives目錄下,這兩個(gè)上面已經(jīng)介紹。

apt-get用法:

Commands:

   apt-get update       #更新本地軟件包索引/var/lib/apt/lists

   apt-get upgrade      #更新所有已安裝的軟件包

   apt-get install          #安裝軟件包

   apt-get remove       #刪除軟件包(不刪除配置文件,也不刪除依賴的軟件包)

   apt-get remove --purge           #刪除軟件包(刪除配置文件,不刪除依賴的軟件包)

   apt-get autoremove --purge  #刪除軟件包(刪除配置文件,刪除依賴的軟件包)

   apt-get source                         #下載該包的源代碼

   apt-get build-dep                    #安裝package編譯需要的相關(guān)的編譯環(huán)境

   apt-get dist-upgrade              #更新所有已安裝的軟件包

   apt-get clean          #清理緩存(清空/var/cache/apt/archives/和/var/cache/apt/archives/partial/這兩個(gè)目錄)

   apt-get autoclean   #清理緩存(只清理/var/cache/apt/archives/目錄下無(wú)法在下載的軟件包)

   apt-get check         #更新apt緩存,檢查是否有損壞的依賴關(guān)系

   apt-get download  #下載軟件包至當(dāng)前目錄下

dpkg:debian軟件包管理系統(tǒng)

debian軟件包管理系統(tǒng)(dpkg)數(shù)據(jù)庫(kù)記錄了哪些軟件包安裝到系統(tǒng)中、每個(gè)軟件包安裝到什么位置、安裝的版本以及依賴于哪些軟件包。debian軟件包管理系統(tǒng)有很多管理工具,這些工具用于安裝、卸載、升級(jí)、查詢和驗(yàn)證軟件包。最初也是最主要的管理工具就是dpkg。雖然dpkg可以完成軟件包管理的大部分任務(wù),但是其他工具可以讓你更容易地完成任務(wù)。這些工具有:apt-cache,apt-file,aptitude,apt-get。這些工具上面都已經(jīng)介紹,下面來(lái)介紹下dpkg。

dpkg管理系統(tǒng)處理.deb格式的文件,這些文件通常被稱為deb文件。因?yàn)閐pkg不能從倉(cāng)庫(kù)中下載deb文件,所以由aptitude,apt-get這些工具來(lái)執(zhí)行這項(xiàng)任務(wù)。默認(rèn)情況下,下載的deb文件存放在/var/cache/apt/archives目錄下。然后由dpkg完成后續(xù)的安裝,它會(huì)將可用軟件包信息存放到/var/lib/dpkg/available,并將軟件包安裝信息存放到/var/lib/dpkg/status中。

另外,再?gòu)?qiáng)調(diào)一下,這個(gè)/var/lib/dpkg/status文件非常重要,這相當(dāng)于一個(gè)緩存文件,dpkg軟件包管理系統(tǒng)在包的狀態(tài)發(fā)生改變后,例如刪除了某包,安裝了某包,本地軟件包索引發(fā)生了改變,都會(huì)去更新這個(gè)文件,很多工具的查詢信息都來(lái)自于這個(gè)文件,例如aptitude show,aptitude search,dpkg -l|--list,apt-cache的幾乎所有的命令等。

dpkg涉及到的幾個(gè)文件:

/etc/dpkg/dpkg.cfg           #dpkg的配置文件

/var/log/dpkg.log              #dpkg的默認(rèn)日志文件(在配置文件中定義)

/var/lib/dpkg/available      #可獲取的軟件包列表

/var/lib/dpkg/status          #可獲取的軟件包的狀態(tài)信息描述文件(apt-cache的相關(guān)查詢就是基于這個(gè)文件的內(nèi)容)

dpkg用法:

dpkg -i|--install   packageName.deb    #安裝指定軟件包

dpkg -r, --remove, -P, --purge  #刪除軟件包(--remove,-r,保留配置文件。-P, --purge連同配置文件一起刪除)

dpkg --update-avail   #更新可用軟件包列表

dpkg -l|--list   #顯示軟件包的相關(guān)信息,若后面不加包名,則顯示所有軟件包的相關(guān)信息(包括安裝和沒(méi)有安裝的)

dpkg --info|-I packageName.deb   #顯示指定軟件包的信息,后面要指定包名,例:dpkg --info

dpkg --status|-s        #顯示軟件包的相關(guān)信息(僅限于安裝的軟件包)

dpkg -L                    #查詢系統(tǒng)中已安裝的軟件包所安裝的位置(僅限于已安裝的軟件包,不同于apt-file list)  

dpkg --search|-S  filename    #查詢某個(gè)文件來(lái)自于哪個(gè)軟件包(僅限于已安裝的軟件包,不同于apt-file search)

當(dāng)用dpkg -l|--list列出軟件包的相關(guān)信息時(shí),有一定的格式簡(jiǎn)單介紹下

root@baby-Inspiron-N5110:/tmp# dpkg --list "bind*"
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                        Version                     Description
+++-===========================-===========================-======================================================================
un  bind                                              (no description available)
un  bind9                                             (no description available)
un  bind9-doc                                         (no description available)
ii  bind9-host                  1:9.8.1.dfsg.P1-4ubuntu0.10 Version of 'host' bundled with BIND 9.X
ii  bind9utils                  1:9.8.1.dfsg.P1-4ubuntu0.10 Utilities for BIND

上面的命令是列出所有以bind開(kāi)頭的軟件包,頭部的第1行列出了可能的軟件包期望狀態(tài),第2行列出了可能的軟件包狀態(tài)。每條信息的第一列為desire,第二列為status。上面第一列的u表示dpkg未識(shí)別的包,狀態(tài)列的n表示尚未安裝該包。第1列和第2列意思差不多表示該包已安裝。

Desire(選擇狀態(tài))
u(unknown                    dpkg不知道的包
i(install)                  已安裝
r(remove)                   已刪除,但是保留配置文件
p(purge)                    已刪除,未保留配置文件
h(hold)                     不由dpkg處理
Status(軟件包狀態(tài))
n(not install)              尚未安裝
i(installed)                已安裝
c(config-files)             沒(méi)有安裝,系統(tǒng)中只有配置文件
u(unpacked)                 解包,但沒(méi)有配置
f(failed-config)            解包,沒(méi)有配置,配置失敗
h(half-installed)           部分安裝,安裝尚未完成

常用的就這些,需要更詳細(xì)的信息可以man dpkg~~~


本文標(biāo)題:ubuntu軟件包管理
URL分享:http://weahome.cn/article/pdjcjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部