Single Package Update across Ubuntu PCs
Posted on Thu 16 October 2014 in Linux
If you live in a country with a slow internet connection, have limited bandwidth capacity, have multiple machines or would like to conserve your bandwidth by not doing repeat downloads, this tutorial will be useful to you.
I recently came across a rather simple method for keeping my machines updated with the latest packages by downloading the updates once and then using those packages to update the other machines/PCs.
Here is a checklist before attempting this:
- All machines should be using the same version of Linux on the same processor-type (eg. Ubuntu 12.04, 32-bit)
- The machine where you do the initial updates requires SSH to be installed
- All the machines should be connected via a router/LAN
- Passwords for all the machines will be required
The steps provided below will be done on Ubuntu machines. Similar commands from other distros should be applied where Ubuntu-commands are used. (paths for the packages may differ though)
Step 1 - Installing SSH:
Getting SSH installed on your main download machine can be done in a single command:
sudo apt-get install openssh-server
If you'd like more info on SSH (maybe for installing on a remote server), click here.
Step 2 - Updating packages for main machine + IP address:
First do your updates on the main machine (either through Terminal or via the Update Manager). Once that is done, you will now (mostly) be doing everything else on your other machines (I will refer to them as "client" machines).
Let's first get the IP address of the main machine. Type this command in Terminal/CLI:
ifconfig
You should be looking for a line like this:
inet addr:192.$$$.$.$ Bcast:192.$$$.$.$$$ Mask:255.$$$.$$$.$
($ = numbers)
After typing the command above, let us use an example IP address of:
192.168.1.102
You need to remember this IP address, as this is what you will use to connect from client machines to your updated/main machine.
Step 3 - Updating client machines:
Take one of your client laptops/desktops (which is connected to the same router as the main machine) and open Terminal/CLI. In the Terminal, type this:
sudo scp kent@192.168.1.102:/var/cache/apt/archives/*.deb /var/cache/apt/archives/
"kent" is the name of the main machine. You need to specify the name you are using on your main machine where "kent" is.
This command is "secure copy" (scp) which transfers the archives of the updated machine to your client machines. You can read from the command how it is copying archives from one folder to another.
You will likely be asked for the passwords of both machines (client and main machine) after using the command above. If everything was successful, you should see a transfer or files being done.
Your client machine should now have the updated .deb files, so let's do the actual update on the client machine. Type this (still in Terminal):
sudo apt-get update
Then:
sudo apt-get upgrade
You should now have all your packages updated.
Note 1: The linux system files don't seem to update after running "__sudo apt-get upgrade__", but you can update them through the update manager
Note 2: Even if you have different packages on your machines (like extra packages on the main machine), the other packages that weren't previously installed on your client machine will not be installed
If you don't know how to use RSS and want email updates on my new content, consider Joining my Newsletter
The original content of this blog is a Waqf solely for the Pleasure of Allah. You are hereby granted full permission to copy, download, distribute, publish and share this content without modification under condition that full attribution is given to this author by creating a link either above or below the content that links back to the original source of the content. For any questions or ambiguity, you are requested to contact me via email for clarification.