Back up your applications

Contents

Scenario

Let us suppose that you are using a very special application. It may be possible that after a long time of use, the repository from where you downloaded your application is not available any more. It may also be possible that, after a long use, something happened to your device, and you need to reinstall your favorite application.

We are going to explain you a way to keep a copy of the DEB package of your favorite application, so that you can install it again even if the package is not available any more from the repositories.

WARNING: Downloading deb files for all the installed packages may cause the root file-system to be exhausted thereby "bricking" the device. Proceed with caution.

Needed Tools and Skills

To follow this tutorial, you need root access on your device and the following tools:

  • Terminal emulator (X Terminal or SSH)
  • VIM editor (Available in Extras)

Create the Archive folder

  • Open a terminal emulator and create the required folders using the following command:
mkdir /home/user/MyDocs/apt-archive-cache
mkdir /home/user/MyDocs/apt-archive-cache/archives
mkdir /home/user/MyDocs/apt-archive-cache/archives/partial

If you wish to use a different folder, substitue /home/user/MyDocs with the desired path.

Create Package-List

  • As a normal user type the following command to create a file (package.list) that contains a list of all the packages installed on the device:
$ dpkg --get-selections|grep install|grep -v deinstall>/home/user/package.list

In case you just want to download a selection of packages from that list, you should edit it and remove the lines you do not need.

For example, if you just want to download a copy of the package abiword, then you should:

  • As a normal user type the following command:
$ cat /home/user/package.list|grep abiword>package-abiword.list

If you want to download all packages, except one of them: debconf, for example. Then you should:

  • As a normal user type the following command:
$ cat /home/user/package.list|grep -v debconf>package-without-debconf.list

Edit Package-List

After previous steps, you have a list with all the desired packages you want to download to your device. In our previous examples this list could be any one of these:

  • package.list
  • package-abiword.list
  • package-without-debconf.list

Now you just need to edit this list in order to use it with apt-get:

  • As a normal user type the following command:
$ vim /home/user/package.list 
  • After vi editor is running, then type the following command:
 :%s!install!! 
  • This last command will clean the lines, removing the word install and leaving just the name of the packages. Now we want to add an order for apt-get to download the desired packages, so type the following command:
 :%s!^!apt-get --force-yes -yy -d install --reinstall -o dir::cache=/home/user/MyDocs/apt-archive-cache ! 
  • This last command will add to the beginning of each line the needed instructions for apt-get to only download the packages: -d install --reinstall. In order to prevent the script from stopping at any question we have inserted the --force-yes -yy option. Now we just need to save the file typing the following command:
 ZZ 

Download Packages

Executing the package-list script will download the packages.

  • To execute the script we need first to get ROOT access.
  • Then as ROOT type the following command:
 # sh</home/user/package.list 

You should now see the downloads in progress.

Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 213kB of archives.
After this operation, 0B of additional disk space will be used.
Get:1 http://repository.maemo.org fremantle/free 100boxes 0.5.0-4 [213kB]
Fetched 213kB in 0s (538kB/s)
Download complete and in download only mode

Depending on the size of the list, this could take a long time. After it is completed, the downloaded packages can be listed with the following command:

$ ls /home/user/MyDocs/apt-archive-cache/archives|grep deb 

Nokia-N900-42-11:/home/user# ls /home/user/MyDocs/apt-archive-cache/archives|grep deb
100boxes_0.5.0-4_armel.deb
accdisplay_1.0_armel.deb
adblock-plus-1.0_1maemo0-8_all.deb
ati85_1.4.1-1_armel.deb
battlegweled_0.9-4_armel.deb
bluetooth-dun_1.0-2_armel.deb

Install Package-List

To install all the packages from the list:

  • open the package.list file in VIM
  • remove the -d option from each of the lines (:%s!-d!!)
  • save and execute the file again as root (# sh</home/user/package.list)

If you wish to install an individual package, execute the apt-get command separately for that package by using the specific line from the packages.list file.

Nokia-N900-42-11:/home/user# apt-get --force-yes -yy  install --reinstall -o dir::cache=/home/user/MyDocs/apt-archive-cache 100boxes   
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 0B/213kB of archives.
After this operation, 0B of additional disk space will be used.
(Reading database ... 36360 files and directories currently installed.)
Preparing to replace 100boxes 0.5.0-4 (using .../100boxes_0.5.0-4_armel.deb) ...
Unpacking replacement 100boxes ...
Setting up 100boxes (0.5.0-4) ...

Further Questions

If you have further questions, do not hesitate to place the question here in this section, and it will be answered in short.