I have a friend who has got a computer that is not connected to the Internet. Is there any way to install software offline easily?
When installing things on Ubuntu, you're much better off using packages provided for your version of Ubuntu, rather than from other sources.
To install a package offline, you can do something like this:
apt-get install --print-uris mysql-server
This will print out a bunch of URLs. You can download these from another computer, and transfer them to your Ubuntu machine, putting the .deb files into
Once you've done that, do:
sudo apt-get install mysql-server
And apt will find the package files you've downloaded, and install mysql.
As far as I know, you can't download updates for a Oneiric (11.10) system using Ubuntu Natty (11.04). You must have a working Ubuntu 11.10 system.
An sketch about the process we are following:
- First we'll install a Virtual machine in OP's Natty (11.04) system.
- We'll install Ubuntu 11.10 in that virtual machine
- We'll setup virtual machine to have a common shared folder between the host OS (11.04) and the guest OS (11.10)
- We will generate a download script of packages which are required to upgrade that system (guest OS i.e Ubuntu 11.10).
- We'll transfer the download script to the host OS using shared folder set up in step 3.
- In host OS, we'll download all the required packages with the help of download script we get in step 5.
- We'll transfer all the downloaded .deb files in the Offline system, that is actual Ubuntu 11.10 system in his friend's PC.
- We'll create a local repository in his friend's PC with those packages.
- We'll upgrade OP's friends Ubuntu with the help of local repository created in step 8.
1. Getting a working Oneiric system
There are two ways to have a working Oneiric system.
By Doing an actual installation
You have to install Ubuntu Oneiric (11.10) on the computer with Internet connection. Though it is also possible from a live system running from USB or CD, I recommend installing. You can get help for installing Ubuntu from these links:
Installing Oneiric in a VirtualBox Virtual Machine
To install VirtualBox in Ubuntu 11.04 Natty Narwhal, run these commands in a terminal:
sudo apt-get update sudo apt-get install virtualbox
Then install Oneiric in the virtual machine.
Set up a shared folder in the virtual machine.
You need to install VirtualBox Guest Additions to enable shared folder feature. Run this command in the virtual machine to install that:
sudo apt-get install virtualbox-guest-additions
If you need help enabling the shared folders feature in the VirtualBox, check this link:
2. Grab the .deb files required for updates
Please Note these specific points:
It is recommended not to update the virtual system during installation or afterwards before installing Synaptic. Cause, those updates might be deleted from cache and without those updates, you can't successfully generate package download script.
sudo apt-get cleanor
sudo apt-get autoclean, because those commands removes .deb files from cache.
Then boot to the Oneiric system that has an Internet connection (either from the installed system or in VirtualBox) and follow this procedure:
Install Synaptic Package Manager. Run these commands in a terminal for this: (Note, You must connect the virtual machine to the Internet, without Internet access the machine cannot update the package list)
sudo apt-get update sudo apt-get install synaptic
You may also want to download the packages required for the
ubuntu-restricted-extraspackage. To do so, Run this command additionally with the previous two commands
sudo apt-get install -d ubuntu-restricted-extras
This command will not install the packages, it only downloads them with all dependencies in
Then open Synaptic Package Manager. Push the button Mark All Upgrades.
When asked if you want to Mark additional required chanages, press the Mark button.
Then going to File --> Generate package download script, save the script as a file. Let it be
update-downloader.shin a folder named
Updates. We assume the
Updatesfolder is in your home directory, i.e., in
/home/username. Then close Synaptic.
Now download the .deb files.
Go to the Updates folder, where you saved
While you are still in the Terminal and have
cd'd to the Updates folder you created earlier, run this command:
cp /var/cache/apt/archives/*.deb .
That copies the downloaded .deb files which are used for installing Synaptic Package Manager and the files downloaded for the
Then run this command
sh ./update-downloader.shto download all the .deb files required to update in the current folder (i.e., in the
Alternatively, you can transfer the
Updatesfolder with the few .deb files you just copied from
update-downloader.shscript in it to the host OS via VirtualBox's shared folder feature.
Then in the host Ubuntu system, open a terminal and run the below command by going to the Updates folder you just copied from the guest OS using shared folder feature, where
If you downloaded the .deb files in the virtual machine, in this step, transfer the Updates folder with those files using Virtual Box's shared folder feature. (This step is only required if you downloaded the files in virtual machine)
After you get the Updates folder with all .deb files in your host PC (i.e., in your Natty system) copy that folder with all files on a USB flash drive. You may also want to burn a DVD with those packages, though I am not recommending that.
Updatesfolder using your USB drive (or CD/DVD, if you burned them) to your friend's PC.
3. Use the .deb files to create a local repository
Copy the whole folder named
Updates to the Internet-less computer. Put that folder in a directory. Let say, you have put the Updates folder in the home directory. Create a new directory in your home folder with name
offline, and move the
Updates folder into the
offline folder. Now, the directory structure looks like this
+ home +- username +- offline +- Updates (contains the .deb files)
Now open a terminal and go to the
offlinefolder. Once in the
offlinefolder, run this command to generate the necessary package index file:
apt-ftparchive packages . > Packages
It will create a file with name
/etc/apt/sources.listfile with root power. In a terminal do this
gksu gedit /etc/apt/sources.list
Then press an Enter while your cursor is at the beginning of the file. This will create a new blank line at the top. Write this line as the first line in the file
deb file:/home/username/offline /
Then save the file with Ctrl+S and exit gedit, the text editor.
Remember to use the exact folder / path names for the offline folder, and replace
usernamewith login name of the user.
Also, if you are sure, your friend cannot use other repository sources, you may want to disable all other repositories by placing a
#mark before each line in the
/etc/apt/sources.listfile. (This is not actually required, but recommended).
Note that it is generally required to put a local repository at the top of the file, to give it a higher preference then other repository sources. (But in this particular case, you might be able to get away with not doing this, since your friend can't even connect to the Internet to access any of the other configured repositories.)
4. Do the update without accessing the Internet!
sudo apt-get updatein the terminal to make the package manager recognize your local update directory.
Then do this command to upgrade the offline system:
sudo apt-get upgrade --allow-unauthenticated
Done! You have upgraded your system without Internet access.
1. Don't want to write allow-unauthenticated option every time?
If you want to use this local repository to install packages time to time, but feel bored to always use that
allow-unauthenticated option, do this.
Create a file named
/etc/apt/apt.conf.d with gedit and add the line in that file and save.
To open a file named 99mysettins in that directory with root power use this command in a terminal
gksu gedit /etc/apt/apt.conf.d/99mysettings
2. Note about allow-unauthenticated option:
You might wonder why I have provided the
--allow-unauthenticated option. This is used because your local update repository is not authentic to the system. But it will not harm, because you downloaded those packages from an authentic official Ubuntu repository.
3. I want to have a trusted repository instead:
Check this awesome and epic post in Ubuntu forums about creating a trusted local repository. If you create a trusted repository, you don't have to provide
--allow-unauthenticated option anymore.
Recommendation: I would recommend you not to use PPA repositories, unless you really trust them. In particular, don't use experimental repositories, because they may introduce dependency problems in the system, which is often referred by Unix geek as dependency hell. This can be harder to fix when you do not have an Internet connection.