1. 程式人生 > >apt-get update ,upgarde 和dist-upgrade 的區別

apt-get update ,upgarde 和dist-upgrade 的區別

以下為個人理解,細節可能不準確。

apt-get是某些linux發行版使用的一個“包管理器”(還有別的發行版使用yum等,以及brew等其他平臺上的包管理器,工作原理類似)。
包管理器的作用是從源(Source)伺服器那裡下載最新的軟體包列表,然後在你需要安裝某個軟體包(apt-get install)的時候從列表裡面查詢這個軟體包的版本資訊、系統要求、翻譯、依賴項(該軟體正常執行必須安裝的其它軟體)並且新增到同時安裝的列表裡面,再查詢所有安裝列表裡面的軟體包的.deb檔案下載地址,最後批量下載,自動分析安裝順序然後安裝完成。
但是這個軟體包列表是不會被自動下載的,需要使用者使用apt-get update更新。
這樣,apt-get才能知道每個軟體包的最新資訊,從而正確地下載最新版本的軟體。
至於apt-get upgrade,則是對已經安裝的軟體包本身進行更新的過程。由於確定要更新的軟體包需要對本地安裝的版本和列表的版本進行比較,所以要在update以後執行這一條。
要求在install操作之前執行update和upgrade,實際上是確保本地軟體列表資訊和已安裝軟體均為最新的過程。這樣做可以最大限度地確保新安裝的軟體包正常工作。
一般來說,update和upgrade不需要每次安裝軟體之前都執行,安裝新軟體的話一天左右執行一次即可,不安裝軟體的時候隔十天半個月執行一下來更新軟體包,伺服器系統如果沒有安全性更新就別亂更新了,穩定最重要。
PS:軟體源伺服器地址可以在/etc/apt/sources.list裡面看到。

2、apt-get upgrade和dist-upgrade的差別:

upgrade:系統將現有的Package升級,如果有相依性的問題,而此相依性需要安裝其它新的Package或影響到其它Package的相依性時,此Package就不會被升級,會保留下來. 

dist-upgrade:可以聰明的解決相依性的問題,如果有相依性問題,需要安裝/移除新的Package,就會試著去安裝/移除它. (所以通常這個會被認為是有點風險的升級) 

apt-get upgrade 和 apt-get dist-upgrade 本質上是沒有什麼不同的。只不過,dist-upgrade 會識別出當依賴關係改變的情形並作出處理,而upgrade對此情形不處理。

例如軟體包 a 原先依賴 b c d,但是在源裡面可能已經升級了,現在是 a 依賴 b c e。這種情況下,dist-upgrade 會刪除 d 安裝 e,並把 a 軟體包升級,而 upgrade 會認為依賴關係改變而拒絕升級 a 軟體包。