當前位置: 首頁>>技術問答>>正文


“sudo apt-get更新”是做什麽的?

, , ,

問題描述

我想知道sudo apt-get update是做什麽的?

它更新什麽?

最佳解決方法

簡而言之,apt-get update實際上並未安裝新版本的軟件。相反,它會更新用於需要升級的軟件包升級的軟件包列表以及剛剛存儲到軟件倉庫的新軟件包。

  • apt-get update從存儲庫下載軟件包列表,並從它們下載”updates”以獲取有關軟件包及其依賴項的最新版本的信息。它將為所有存儲庫和PPA執行此操作。來自http://linux.die.net/man/8/apt-get:用於re-synchronize來源的包索引文件。可用包的索引是從/etc/apt/sources.list(5)中指定的位置獲取的。在升級或dist-upgrade之前應始終執行更新。

  • 如果APT通過apt-get update了解這些新版本,apt-get upgrade將獲取機器上現有的新版本軟件包。來自http://linux.die.net/man/8/apt-get:用於從/etc/apt/sources.list(5)中枚舉的源中安裝當前安裝在係統上的所有軟件包的最新版本。當前隨新版本安裝的軟件包將被檢索並升級;在任何情況下都不會刪除當前安裝的軟件包,也不會檢索和安裝尚未安裝的軟件包。當前安裝的軟件包的新版本在未更改其他軟件包的安裝狀態的情況下無法升級,將保留其當前版本。 [強調我的]必須首先執行更新,以便apt-get知道新版本的軟件包可用。

  • apt-get dist-upgrade將執行與apt-get upgrade完成的相同的工作,並且還會智能地處理依賴關係,因此它可能會刪除過時的程序包或添加新的程序包。請參閱:什麽是“dist-upgrade”,為什麽升級超過“upgrade”? http://linux.die.net/man/8/apt-get:除了執行升級功能外,此選項還可以智能地處理新版本軟件包的變化依賴關係; apt-get有一個”smart”衝突解決係統,它會嘗試升級最重要的軟件包,如果有必要,可以犧牲不太重要的軟件包。 /etc/apt/sources.list(5)文件包含從中檢索所需軟件包文件的位置列表。另請參閱apt_preferences(5)了解over-riding機製的各種軟件包的常規設置。

您可以按如下方式將命令與&&組合在一起:

sudo apt-get update && sudo apt-get install foo bar baz foo-dev foo-dbg

或按照依賴關係的版本要求獲取最新版本:

sudo apt-get update && sudo apt-get dist-upgrade

您同時需要sudo,但由於默認情況下sudo在上次sudo操作後的5分鍾內不會提示您,所以係統隻會提示您輸入密碼一次(或根本不提供)。

次佳解決方法

Google搜索可以為您提供幾乎任何終端命令的定義,也可以在終端中幫助您。例如,

apt-get --help

sudo apt-get update基本上有三個部分:

sudo

使用super-user(root)功能執行以下命令。許多需要修改係統文件或安裝應用程序的操作都需要額外的權限才能通過。

apt-get

是Ubuntu用於安裝,刪除和管理軟件包的命令行工具

update

是apt-get程序的一個選項,用於從Internet上的服務器更新軟件包列表。軟件包列表為apt-get實用程序提供了有關可使用apt-get安裝的軟件包的重要信息。 apt-get使用這些列表來確定在安裝命令時要安裝哪些軟件。例如

sudo apt-get install guake

將安裝Guake終端,因為它目前在我的電腦本地軟件列表中列出。但是,這可能不是適當的版本,或者如果該程序是新的,它可能根本不可用。因此,使用apt-get安裝軟件時,通常需要輸入

sudo apt-get update
sudo apt-get install <package>

確保apt-get知道安裝最新版本的軟件包。

另一個有用的信息來源是help.ubuntu.com網站。例如,如果您搜索該網站的apt-get,您會發現AptGet/Howto作為結果之一。

第三種解決方法

運行sudo apt-get update隻需確保所有存儲庫和PPA的軟件包列表都是最新的。如果你不運行這個命令,你可能會得到正在安裝的各種軟件包的舊版本,或者更糟糕的是,依賴性問題。如果您剛剛添加了PPA並且沒有更新,則PPA中沒有任何內容可以工作,因為您沒有該PPA或存儲庫中的軟件包列表。

簡而言之:強烈建議在安裝之前運行sudo apt-get update,但如果您真的需要時間,可能會跳過它,除非自上次apt-get update以來更改了存儲庫或PPA。

第四種方法

在安裝新軟件包之前,需要運行apt-get update一次,因為這會更新本地存儲庫信息。如果您打算立即安裝多個軟件包,則不需要運行apt-get update。另外,如果鍵入sudo apt-get install package1 package2...,則可以一次安裝多個軟件包

第五種方法

它會更新計算機上的可用軟件列表。

您的計算機有一個列表(如目錄),其中包含Ubuntu服務器可用的所有可用軟件。但可用的軟件和版本可能會發生變化,因此”update”將會觸及服務器,並查看可用的軟件以更新其本地列表(或目錄)。

請注意,updateupgrade不同。如上所述,更新將提取可用軟件並更新列表,而upgrade將安裝計算機上安裝的新版軟件(實際軟件更新)。

要實際升級軟件(而不是”update”列表),請執行該命令

sudo apt-get upgrade

通常在”update”後執行。

第六種方法

從命令行使用sudo apt-get install ...(或sudo aptitude install ...)安裝軟件包時,或者從命令行(使用upgradedist-upgrade而不是install)升級它們時,以下信息是從本地係統的配置中獲得的,而不是從Internet獲得的:

  1. 什麽軟件包可用

  2. 它們有哪些版本可用

  3. 應從中檢索可用的軟件包

運行sudo apt-get update(或sudo aptitude update)會在您的本地係統上更新它。這是從Internet資源中實際檢索有關可安裝哪些軟件包的信息的步驟,包括可用的當前安裝軟件包的更新。

當您使用GUI界麵(更新管理器,軟件中心或新立得軟件包管理器)安裝軟件包時,sudo apt-get update的工作將自動完成。當你從命令行安裝軟件包時,它不是,你應該自己一直這樣做,除非你最近這樣做了。

由於通過運行sudo apt-get update(或sudo aptitude update)獲取有關可用軟件包的更新版本的信息,因此建議您在安裝任何軟件包之前運行該軟件包,並且運行該軟件以安裝最新的更新(即使您尚未添加或刪除任何軟件資源(例如PPA)。

請注意,如果您要同時執行多個包管理操作,則不需要在每個包之前運行sudo apt-get update。隻有在信息一段時間沒有更新的情況下,你才能確保運行它。

第七種方法

正如Eliah Kagan在上麵提到的那樣,您會希望GUI應用程序能夠在apt-get install /apt-get upgrade之前運行apt-get update,但是我剛剛在一台相對較新的offensive-security VM機器上發現了一個有趣的錯誤404,讓我難以忍受一分鍾。

從命令行運行apt-get update,然後再次嘗試係統工具/Software-Update命令,這次它運行時沒有404錯誤。

所以,我想你不能總是假設apt-get update是從GUI應用程序運行的…

第八種方法

正如很多人在我之前所說的,這會更新您的本地存儲庫(軟件包列表)。

如果您嘗試安裝,可能會遇到麻煩

apt-get install foobar

而foobar或依賴項在存儲庫中沒有最新版本。如果手動安裝.deb文件或來自第三方的ppa,這可能會特別有問題。

基本上它確保您的列表與主列表匹配。

第九種方法

我們來看看在Ubuntu上安裝VLC media player的例子:

sudo apt-get update

它會檢查存儲庫中的可用更新。

sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc

將從我們搜索的存儲庫安裝VLC媒體播放器。

如果您以root用戶(管理員)身份登錄,則不必使用sudo,因為您已擁有超級用戶權限。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/51.html,未經允許,請勿轉載。