1. 程式人生 > >ubuntu下安裝包依賴關係(問題)& apt包管理工具(解決方法)

ubuntu下安裝包依賴關係(問題)& apt包管理工具(解決方法)

用到ubuntu時難免要安裝千奇百怪包以用於資料的處理與解釋,之前都是有通過#sudo apt-get install,或是通過自行下載之後#sudo dpkg -i 檔名 進行安裝。可是,對於這兩者到底是幹什麼的,還有為什麼包有依賴關係是一直一臉矇蔽的,今天看了幾位大神的帖子,總結了一下,把整個事情的來龍去脈整理一下

       一.linux下安裝包,為什麼會顯示需要安裝有依賴關係的包

            1.我們清楚的知道,linux是的包是開源的,所以這些包的編輯者大多是一些程式設計師大神。

            2.所謂的包實際上就是執行某種功能的程式碼。

            3.一個要完成複雜功能的程式碼,肯定包含許許多多小功能的程式碼。

            4.恰好之前有人寫過完成你的複雜功能裡面需要的小功能的程式碼。那你是用還是不用?程式設計師是一定會用的。

            5.所以這些被依賴的包就是你這個包裡需要用到,但是未寫入,就像是程式設計師在這告訴你,去,去呼叫某個包。

       二.APT包管理工具

            1.在這裡我們要先引入一個概念,即apt包管理工具。什麼是APT包管理工具?

               1.1.ubuntu上用與Debian一樣的Deb軟體包來管理軟體,而apt-get是ubuntu的Deb軟體包管理工具。即我們所謂的APT包管理工具。

            2.那麼問題來了,這個APT包管理工具是幹嘛用的?

               2.1.apt-get會從ubuntu的軟體源庫裡呼叫安裝你需要安裝的包,而且,系統可以自動分析和解決依賴關係,並且將所依賴的軟體都搞定。這個東西是不是很牛逼!按理說這樣的話所有的問題不都解決了嗎?原理是這樣子的,可是坑爹的是,系統軟體源庫本身的源裡面的包不太多,特別是針對於我們這些搞生信的人所需的包。

               2.2.那麼我們在系統的軟體源庫裡面加幾個豐富的源不就行了。本站的paincupid大神,在他的文章[Ubuntu16.04幾個國內更新源]中提到了加源的方法和一些源。http://blog.csdn.net/paincupid/article/details/52895676


       其實  ,寫到這裡,我們已經解釋了為什麼可以利用#sudo apt-get install為什麼可以直接安裝,而不許要下載,因為相關資訊都是由APT包管理工具從系統的軟體源庫裡面呼叫的,包括包的依賴性什麼的,他都捎帶手解決了。但是需要注意的是,這樣的安裝方法,一般會先敲個#sudo apt-get update,讓系統更新一下庫裡面的軟體資源。

                   3.#sudo dpkg -i 檔案.deb與 #sudo gdebi 檔案.deb

               3.1 我們在上面提到了用#sudo apt-get install來從庫裡面呼叫資源,但很還是有點漏洞的,萬一你的源裡面都沒有,你也不能不下啊,所以,你就只能手動下載下來,然後手動安裝。這時候在敲下這兩個命令。就能安裝了。這一種方法採用本地已經下載好的軟體包,並以此為基礎,分析其以依賴關係,然後從軟體源上下載相應的包來解決依賴(這句話來自本站的wenwenxiong大神)。

      寫道這裡,我們其實提出瞭解決軟體包安裝依賴性問題的主流方法,說到底還是APT包管理工具對系統軟體源的調取,所以核心還是你要有個資源豐富的源。

       好了,在文章的最後我記錄了一些使用的APT命令(來自本站的蘇州-微塵大神)

1.apt-cache search package #搜尋包

2.apt-cache show package #獲取包的相關資訊,如說明,大小,版本。

3.apt-cache depends package #瞭解使用依賴

4.apt-get rdepends package #檢視該包被那些包依賴

5.sudo apt-get install package #安裝包

6.sudo apt-get install package=version #安裝制定版本的包

7.sudo apt-get install package --reinstall #重新安裝包

8.sudo apt-get -f install #修復安裝(17.10.31,之前小看這個東東了,這個是啟動APT自動安裝依賴關係的一個功能鍵,換句話說,你更新完源之後,如果APT還不能自行解決依賴關係,就可以執行一下這個命令)

9.apt-get source package #下載該包的原始碼

10.sudo apt-get remove package #刪除包

11.sudo apt-get remove package --purge #刪除包,包括刪除配置檔案等

12.sudo apt-get update #更新apt軟體源資料庫

13.sudo apt-get upgrade #更新以安裝的包

14.sudo apt-get dist-upgrade #升級系統

15.sudo apt-get dselect-upgrade #使用dselect升級

16.sudo apt-get build-dep package #安裝相關的編譯環境

17.sudo apt-get clean & sudo apt-get autoclean #清理無用的包

18.sudo apt-get check #檢查是否有損壞的依賴