@一安全
update 是下載源裏面的metadata(包括這個源有什麼包, 每一個包什麼版本之類的)服務器
同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引(更新軟件包索引),告訴包管理器最新的一份源裏面的軟件包版本信息這樣才能獲取到最新的軟件包spa
upgrade 是對已經安裝的軟件包自己進行更新升級的過程,升級以後的版本就是本地索引裏的,.net
upgrade是根據update命令下載的metadata決定要更新什麼包(同時獲取每一個包的位置).翻譯
所以,在執行 upgrade 以前必定要執行 update, 這樣才能是最新的索引
可簡單的理解爲前者是更新整個倉庫的版本信息,後者是升級軟件包get
安裝軟件以前, 能夠不upgrade, 可是要update. 由於舊的信息指向了舊版本的包, 可是源的服務器更新了以後舊的包可能被新的替代了, 因而你會遇到404...同步
@二it
Linux 和 Windows 不同,同一發行版(好比 Ubuntu) 的不一樣版本(好比 14.04, 14.10 )用的軟件倉庫是不同的,因此有倉庫 (repository ) 這樣的概念,天然就有了要更新倉庫信息的邏輯。
你若是不更新倉庫信息, upgrade 就在本地的舊倉庫轉悠一圈發現並無要更新的,但實際上本地倉庫已通過時了。
這也是爲何用 apt 查找某個包的命令是 apt-cache search xxx 的緣由,用的是本地 cache 了倉庫信息。class
包管理器
做用是從源(Source)服務器那裏下載最新的軟件包列表,而後在你須要安裝某個軟件包(apt-get install)的時候從列表裏面查詢這個軟件包的版本信息、系統要求、翻譯、依賴項(該軟件正常運行必須安裝的其它軟件)而且添加到同時安裝的列表裏面,再查詢全部安裝列表裏面的軟件包的.deb文件下載地址,最後批量下載,自動分析安裝順序而後安裝完成。
可是這個軟件包列表是不會被自動下載的,須要用戶使用apt-get update更新。這樣,apt-get才能知道每一個軟件包的最新信息,從而正確地下載最新版本的軟件。
通常來講,update和upgrade不須要每次安裝軟件以前都運行,安裝新軟件的話一天左右運行一次便可,不安裝軟件的時候隔十天半個月運行一下來更新軟件包,服務器系統若是沒有安全性更新就別亂更新了,穩定最重要。
PS:軟件源服務器地址能夠在/etc/apt/sources.list裏面看到。