When I log into my web server via SSH I see the information:
88 packages can be updated.
80 updates are security updatesI tried apt-get update then apt-get upgrade but each time I log in I still see the message about updates. How do I install them?
9 Answers
Use this:
sudo apt update # Fetches the list of available updates
sudo apt upgrade # Installs some updates; does not remove packages
sudo apt full-upgrade # Installs updates; may also remove some packages, if needed
sudo apt autoremove # Removes any old packages that are no longer neededDocumentation about each apt option can be found in the the manpages for apt. These are also available by running man apt in your terminal.
Use of both upgrade and full-upgrade together is usually not needed, but it may help in some cases: see Debian documentation about Upgrades from Debian 9.
Execute all the commands by typing sudo once:
sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get full-upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'or:
sudo -s -- <<EOF
apt-get update
apt-get upgrade -y
apt-get full-upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -y
EOFor even shorter in a for loop (thanks @dessert!):
sudo bash -c 'for i in update {,full-,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'See the package management with APT maintenance commands documentation for more details.
5This is normal behavior.
The message you see on login has been appended to the server status 'Message-Of-The-Day', which is only updated each calendar day (or on server boot / startup). Have a look at the contents, using
cat /etc/motdStill seeing the same updates available, after running
sudo apt-get update && sudo apt-get upgradeis to be expected. If you then re-run this command you will only be prompted for any further updates if even further (newer) updates have been released.
8Once your log into your server, run the command below.
sudo apt-get upgradeIt should do the trick. Maybe you just need to restart your server.
4In my case, I had an incorrect or not accessible URL in /etc/apt/sources.list.After removing this URL, I was able to update all packages successfully.
Commands:
sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade My (really late, I like necromancer badges :-) ) solution:
Install wajig (once):
sudo apt-get install wajigWhen you want to update/upgrade fully your system
wajig dailyupgrade(it will ask for password if needed, and do all the update, upgrade, dist-upgrade, and autoremove steps for you).
You may also need to do this -
sudo touch /etc/motd.tailFrom - Ubuntu tells me I have packages to upgrade when I don't
It worked for me on 14.04
If you run apt-get update again after apt-get upgrade has been concluded, those messages at ssh login should go away.
this script is handy to automate updates including removing unneeded packages and performing a reboot only if the OS wants one
remote_user=usernamehere
remote_host=example.com
ssh -A -n -o StrictHostKeyChecking=no ${remote_user}@${remote_host} && \
sudo apt-get update && \
sudo apt-get -f install -y && \
sudo apt-get -o Dpkg::Options::="--force-confnew" -yy dist-upgrade -y && \
sudo apt-get autoremove -y && \
[ -f /var/run/reboot-required ] && \
echo "sudo reboot now" && \
sudo reboot now to run on your local box just leave off that first line doing the ssh
here is an alias I save in ~/.bashrc
alias doit='echo; kill $( ps -eafww|grep update-manager|grep -v grep | grep update-manager | tr -s " " |cut -d" " -f2 ) > /dev/null 2>&1; echo "sudo apt-get update && sudo apt-get dist-upgrade && [ -f /var/run/reboot-required ] && echo && echo reboot required && echo";echo;sudo apt-get update && sudo apt-get dist-upgrade && [ -f /var/run/reboot-required ] && echo && echo reboot required && echo 'then on terminal I just issue doit