AptMoveHowto

Differences between revisions 18 and 24 (spanning 6 versions)
Revision 18 as of 2006-01-16 06:57:11
Size: 4221
Editor: ip89-66
Comment: Use an apt.conf file for generating Release file
Revision 24 as of 2008-08-06 16:19:39
Size: 56
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
This page will describe how to make a cd which contains packages you have downloaded on one machine using apt or synaptic. The cd will be a repository that you can easily use on another machine using synaptic or apt-cdrom.

For example, I will show how to make a cd which contains all the security updates that has been downloaded.

Except for adding new apt PGP keys, the user of the cd will not need to use the command-line to use it.

= Step one Install the apt-move package =

Apt-move is a tool for creating a debian package repository file structure out of packages that have been downloaded to /var/cache/apt/archives. Installed packages are downloded there by apt for installation. Apt-move will create this local repository in /mirrors/debian, by default.
{{{
sudo apt-get install apt-move
}}}

(Or just use synaptic) You need to enable the universe repository. See AddingRepositoriesHowto


I change the setting in /etc/apt-move.conf from
{{{
COPYONLY=no
}}}
to
{{{
COPYONLY=yes
}}}
So that apt-move doesn't delete file from your /var/cache/apt/archives/.


= Step two Select the packages you want to put on the cd =

In this example, we only want to put freshly downloaded packages. We don't want to put old packages or packages that exist in Ubuntu CD.

First, we clean up the /var/cache/apt/archives from old packages.
{{{
sudo apt-get autoclean
}}}

Next, we delete packages that exists in the Ubuntu CD. Put your Ubuntu CD on CD-ROM Drive then run the following:
{{{
for f in `find /media/cdrom/pool/ -name '*.deb' -printf %f\\n`
do
  if [ -f /var/cache/apt/archives/$f ]; then
    sudo rm -v /var/cache/apt/archives/$f
  fi
done
}}}

= Step three Run apt move to create the archive structure =

Make sure you have enough disk space first.

Because /mirrors/debian is root owned we must become root to make the steps easier.
{{{
sudo -s
}}}

All the following command run as root.
First we clean-up previous mirrors (if exists) then we run apt-move.

{{{
rm -rf /mirrors/debian
apt-move -d breezy update
}}}

Because ubuntu repository structure, not all packages are inserted into the Packages.gz file by apt-move. We must remake Packages.gz with the help of apt-ftparchive.

{{{
cd /mirrors/debian
apt-ftparchive packages pool/main/ \
  | gzip -9c > dists/breezy/main/binary-i386/Packages.gz
apt-ftparchive packages pool/restricted/ \
  | gzip -9c > dists/breezy/restricted/binary-i386/Packages.gz
}}}

We must also remake Release file, to do this we must make an apt configuration file named ~/myapt.conf it contents is like this
{{{
APT::FTPArchive::Release {
Origin "APT-Move";
Label "APT-Move";
Suite "breezy";
Codename "breezy";
Architectures "i386";
Components "main restricted";
Description "Ubuntu Updates CD";
};
}}}

Next, run the following commands:
{{{
rm dists/breezy/Release
apt-ftparchive release dists/breezy/ > Release
mv Release dists/breezy/Release
}}}

Then we need to make Release.gpg, to make it you must already have your [[GPGKey]] set and ready to sign.

{{{
gpg -bao dists/breezy/Release.gpg dists/breezy/Release
}}}

Next, we delete unwanted .apt-move directory
{{{
rm -rf .apt-move
}}}

You can identify the cd by making a .disk directory and making an info file in it.

{{{
mkdir .disk
echo Ubuntu-Updates `date +%Y-%m-%d` > .disk/info
}}}

Then we need to put our public keys in it.

{{{
gpg --export -a "Zakaria" > public.key
}}}

Thats' all
{{{
exit
}}}

= Step four Burn the cd =

Copy the contents of what is contained in /mirrors/debian to a cd.

For example you could make an iso by following command:
{{{
mkisofs -r -A "Ubuntu Updates `date +%Y%m%d`" -o ubuntu-updates.iso \
  /mirrors/debian
}}}

Before you could use the CD, you need to add our GPG key to apt GPG keys.

{{{
mount /cdrom
apt-key add /cdrom/public.key
umount /cdrom
}}}

On a non-networked ubuntu machine, you can run synaptic, insert the cd and go into Synaptic -> Edit -> Add Cdrom and it will add the contents of the cd to your repositories.

You can also do it from the command-line with

{{{
sudo apt-cdrom add
}}}


CategoryDocumentation
#REFRESH 0 http://help.ubuntu.com/community/AptMoveHowto

AptMoveHowto (last edited 2008-08-06 16:19:39 by localhost)