In a nutshell, apt-get update doesn't actually install new versions of software. Instead, it updates the package lists for upgrades for packages that need upgrading, as well as new packages that have just come to the repositories.
apt-get update downloads the package lists from the repositories and "updates" them to get information on the newest versions of packages and their dependencies. It will do this for all repositories and PPAs.
From http://linux.die.net/man/8/apt-get:
Used to re-synchronize the package index files from their sources. The indexes of available packages are fetched from the location(s) specified in /etc/apt/sources.list(5). An update should always be performed before an upgrade or dist-upgrade.
apt-get upgrade will fetch new versions of packages existing on the machine if APT knows about these new versions by way of apt-get update.
Used to install the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list(5). Packages currently installed with new versions available are retrieved and upgraded; under no circumstances are currently installed packages removed, nor are packages that are not already installed retrieved and installed. New versions of currently installed packages that cannot be upgraded without changing the install status of another package will be left at their current version. [Emphasis mine] An update must be performed first so that apt-get knows that new versions of packages are available.
In addition to performing the function of upgrade, this option also intelligently handles changing dependencies with new versions of packages; apt-get has a "smart" conflict resolution system, and it will attempt to upgrade the most important packages at the expense of less important ones, if necessary.
The /etc/apt/sources.list(5) file contains a list of locations from
which to retrieve desired package files. See also apt_preferences(5) for a mechanism for over-riding the general settings for individual packages.
or to get newest versions possible as per version requirements of dependencies:
sudo apt-get update && sudo apt-get dist-upgrade
You need sudo both times, but since sudo by default doesn't prompt you within 5 or so minutes since the last sudo operation, you will be prompted for your password only once (or not at all).
A Google search can give you the definition for almost any terminal command, as can --help in the terminal. For example,
apt-get --help
sudo apt-get update essentially has three parts:
sudo
performs the following command with super-user (root) capabilities. Many actions that require modifying system files or installing applications require extra permissions to go through.
apt-get
is a command-line tool which Ubuntu uses to install, remove, and manage software packages
update
is an option for the apt-get program to use which updates the package lists from a server on the internet. The package lists provide the apt-get utility with important information about the software packages that you can install using apt-get. apt-get uses these lists to determine which software to install when given a command to install. For example
sudo apt-get install guake
would install the Guake terminal as it is currently listed in my computer's local software lists. This may not, however, be the appropriate version, or if the program is new, it might not be available at all. Thus, when installing software with apt-get, you typically type
ensuring that apt-get knows to install the most recent version of the package.
Another useful source for information is the help.ubuntu.com site. For example, if you searched that site for apt-get you would find AptGet/Howto as one of the results.
Running sudo apt-get update simply makes sure your list of packages from all repositories and PPA's is up to date. If you do not run this command, you could be getting older versions of various packages you are installing, or worse, dependency issues. If you have just added a PPA and have not updated, nothing from the PPA will work at all as you do not have a package list from that PPA or repository.
In a nutshell: It is highly recommended to run sudo apt-get update before installing, but it may be skipped if you are really pressed for time unless you have changed repositories or PPAs since the last apt-get update.
It updates the available software list on your computer.
Your computer has a list (like a catalog) that contains all the available software that the Ubuntu servers have available. But the available software and versions might change, so a "update" will hit the server and see what software is available in order to update its local lists (or catalogs).
Note that update is diferent from upgrade. Update, as mentioned above, will fetch available software and update the lists while upgrade will install new versions of software installed on your computer (actual software updates).
To actually upgrade your software (not "update" the lists), you execute the command
You need to run apt-get update once before installing new packages as this updates the local repository information.
If you are going to install multiple packages shortly after each other, you do not need to run apt-get update before each install; just once before the first install.
Also, you can install multiple packages at once if you type
sudo apt-get install package1 package2..., but you still need to run apt-get update prior to the multiple package install.
When you install packages from the command line with sudo apt-get install ... (or sudo aptitude install ...), or when you upgrade them from the command line (with upgrade or dist-upgrade instead of install), the following information is obtained from your local system's configuration, and not from the Internet:
what packages are available
what versions of them are available
where the available packages should be retrieved from
Running sudo apt-get update (or sudo aptitude update) updates this on your local system. This is the step that actually retrieves information about what packages can be installed, including what updates to currently installed packages packages are available, from Internet sources.
When you install packages with a GUI interface (the Update Manager, the Software Center, or the Synaptic Package Manager), the work of sudo apt-get update is done automatically. When you install packages from the command-line, it is not, and you should always do this yourself unless you have done so very recently.
Because information about what updated versions of packages are available is obtained by running sudo apt-get update (or sudo aptitude update), it is advisable to run this before installing any package, and necessary to run it to install the latest updates, even if you have not added or removed any Software Sources (such as a PPA).
Please note that if you are going to perform multiple package management operations around the same time, you don't need to run sudo apt-get update before each one. It's only if the information hasn't been updated for a while, that you should make sure to run it.
As said by plenty of people before me this updates your local repository (package list).
You may run into trouble if you try to install
apt-get install foobar
and foobar or a dependency don't have their latest version in the repository. This can be especially problematic if installing a .deb file manually or a ppa from a 3rd party.
Basically it makes sure your list matches the master list.
As Eliah Kagan mentioned above, you would expect that a GUI application would run apt-get update before apt-get install / apt-get upgrade, but I just discovered an interesting error 404, on a relatively new offensive-security VM machine, that had me stumped for a minute.
From the command line, I ran apt-get update, and then tried the System Tools/Software-Update command again, and this time it ran with no 404 errors.
So, I guess you can't always assume that apt-get update is run from GUI applications...
In a nutshell,
apt-get update
doesn't actually install new versions of software. Instead, it updates the package lists for upgrades for packages that need upgrading, as well as new packages that have just come to the repositories.apt-get update
downloads the package lists from the repositories and "updates" them to get information on the newest versions of packages and their dependencies. It will do this for all repositories and PPAs. From http://linux.die.net/man/8/apt-get:apt-get upgrade
will fetch new versions of packages existing on the machine if APT knows about these new versions by way ofapt-get update
.From http://linux.die.net/man/8/apt-get:
apt-get dist-upgrade
will do the same job which is done byapt-get upgrade
, plus it will also intelligently handle the dependencies, so it might remove obsolete packages or add new ones. See here: What is "dist-upgrade" and why does it upgrade more than "upgrade"?From http://linux.die.net/man/8/apt-get:
You can combine commands with
&&
as follows:or to get newest versions possible as per version requirements of dependencies:
You need
sudo
both times, but sincesudo
by default doesn't prompt you within 5 or so minutes since the lastsudo
operation, you will be prompted for your password only once (or not at all).A Google search can give you the definition for almost any terminal command, as can --help in the terminal. For example,
sudo apt-get update
essentially has three parts:performs the following command with super-user (root) capabilities. Many actions that require modifying system files or installing applications require extra permissions to go through.
is a command-line tool which Ubuntu uses to install, remove, and manage software packages
is an option for the apt-get program to use which updates the package lists from a server on the internet. The package lists provide the apt-get utility with important information about the software packages that you can install using apt-get. apt-get uses these lists to determine which software to install when given a command to install. For example
would install the Guake terminal as it is currently listed in my computer's local software lists. This may not, however, be the appropriate version, or if the program is new, it might not be available at all. Thus, when installing software with apt-get, you typically type
ensuring that apt-get knows to install the most recent version of the package.
Another useful source for information is the
help.ubuntu.com
site. For example, if you searched that site forapt-get
you would find AptGet/Howto as one of the results.Running
sudo apt-get update
simply makes sure your list of packages from all repositories and PPA's is up to date. If you do not run this command, you could be getting older versions of various packages you are installing, or worse, dependency issues. If you have just added a PPA and have not updated, nothing from the PPA will work at all as you do not have a package list from that PPA or repository.In a nutshell: It is highly recommended to run
sudo apt-get update
before installing, but it may be skipped if you are really pressed for time unless you have changed repositories or PPAs since the lastapt-get update
.It updates the available software list on your computer.
Your computer has a list (like a catalog) that contains all the available software that the Ubuntu servers have available. But the available software and versions might change, so a "update" will hit the server and see what software is available in order to update its local lists (or catalogs).
Note that
update
is diferent fromupgrade
. Update, as mentioned above, will fetch available software and update the lists whileupgrade
will install new versions of software installed on your computer (actual software updates).To actually upgrade your software (not "update" the lists), you execute the command
which is usually executed after an "update".
You need to run
apt-get update
once before installing new packages as this updates the local repository information.If you are going to install multiple packages shortly after each other, you do not need to run
apt-get update
before each install; just once before the first install.Also, you can install multiple packages at once if you type
sudo apt-get install package1 package2...
, but you still need to runapt-get update
prior to the multiple package install.When you install packages from the command line with
sudo apt-get install ...
(orsudo aptitude install ...
), or when you upgrade them from the command line (withupgrade
ordist-upgrade
instead ofinstall
), the following information is obtained from your local system's configuration, and not from the Internet:what packages are available
what versions of them are available
where the available packages should be retrieved from
Running
sudo apt-get update
(orsudo aptitude update
) updates this on your local system. This is the step that actually retrieves information about what packages can be installed, including what updates to currently installed packages packages are available, from Internet sources.When you install packages with a GUI interface (the Update Manager, the Software Center, or the Synaptic Package Manager), the work of
sudo apt-get update
is done automatically. When you install packages from the command-line, it is not, and you should always do this yourself unless you have done so very recently.Because information about what updated versions of packages are available is obtained by running
sudo apt-get update
(orsudo aptitude update
), it is advisable to run this before installing any package, and necessary to run it to install the latest updates, even if you have not added or removed any Software Sources (such as a PPA).Please note that if you are going to perform multiple package management operations around the same time, you don't need to run
sudo apt-get update
before each one. It's only if the information hasn't been updated for a while, that you should make sure to run it.As said by plenty of people before me this updates your local repository (package list).
You may run into trouble if you try to install
and foobar or a dependency don't have their latest version in the repository. This can be especially problematic if installing a .deb file manually or a ppa from a 3rd party.
Basically it makes sure your list matches the master list.
As Eliah Kagan mentioned above, you would expect that a GUI application would run
apt-get update
beforeapt-get install
/apt-get upgrade
, but I just discovered an interesting error 404, on a relatively new offensive-security VM machine, that had me stumped for a minute.From the command line, I ran
apt-get update
, and then tried the System Tools/Software-Update command again, and this time it ran with no 404 errors.So, I guess you can't always assume that
apt-get update
is run from GUI applications...Let's consider the example of installing VLC media player on Ubuntu:
It will check the repositories for available updates.
Whereas
will install VLC media player from the repositories which we searched for.
If you had logged in as a root user (administrator), you don't have to use
sudo
, because you already have the super user privileges.