Software Repository Mirror
Preparing the Hard Drive
In the directions below we will assume that you have a brand new hard drive. We will be formatting the hard drive (partition) which means that all of the data on the hard drive will be lost. PLEASE MAKE SURE YOU KNOW EXACTLY WHAT YOU ARE DOING IN EACH STEP
To format the partition, we will first need to set the partition type
Determining the Hard Drive Paritition
To format the hard drive, we first to know what "partition" it is using. Ubuntu should automatically mount the hard drive should automatically once you plug it in. To determine run the command:
mount | grep media
Running this on my machine, I see output
/dev/sdb1 on /media/3539-6663 type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
Which means the /dev/sdb1 is the partition we will need to use.
If you see more than one line in the output then STOP as these directions may not be correct. If you see more than one line here, you probably have more than one external hard drive or flash disk connected. Remove all extra hard drive and rerun the "grep" command. If you still see more than one line, Please contact one of the of the iHRIS developers for more help.
Change The Hard Drive Partition Type
We will need to run the "fdisk" command interactively on the hard drive device. If the parition was /dev/sdb1, the hard drive device is /dev/sdb (remove the number from the partition). Here is a sample interaction. You should type in everything in bold (changing /dev/sdb as neeeded):
litlfred@cumin:/tmp$ sudo fdisk /dev/sdb Command (m for help): p Disk /dev/sdb: 1015 MB, 1015808000 bytes 13 heads, 36 sectors/track, 4239 cylinders, total 1984000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0008db47 Device Boot Start End Blocks Id System /dev/sdb1 2048 1983999 990976 6 FAT16 Command (m for help): t Selected partition 1 Hex code (type L to list codes): 83 Changed system type of partition 1 to 83 (Linux) Command (m for help): p Disk /dev/sdb: 1015 MB, 1015808000 bytes 13 heads, 36 sectors/track, 4239 cylinders, total 1984000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0008db47 Device Boot Start End Blocks Id System /dev/sdb1 2048 1983999 990976 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks.
Formatting The Hard Drive as ext3
Simply do:
sudo mkfs.ext3 /dev/sdb1
Labelling the hard drive
Now we want to make a lablel for our newly formatted hard drive so that we can refer to it easily later:
sudo tune2fs -L ihris /dev/sdb1
Testing
Unplug the hard drive and plug it back in. There should be a USB disk icon on your Desktop with the label "ihris". Also, running:
mount | grep medai
you should see somethine like:
/dev/sdc1 on /media/ihris type ext3 (rw,nosuid,nodev,uhelper=udisks)
Don't worry if your partition has changed from /dev/sdb1 to something else like /dev/sdc1
Creating the Software Repository
You should now have you hard drive prepared and mounted under /media/ihris. If not STOP
Mirroring
We will be mirroring (creating an indentical copy of the online ubunto repositories). All of the packages will be saved into a subdirectory of our hard drive which we create with:
mkdir -p /media/ihris/ubunruMirror/mirror
We also need to create a directory for our key ring
mkdir -p /media/ihris/ubunruMirror/keyring
mirror.sh
Save the script below to /media/ihris/ubuntuMirror/mirrorbuild.sh by copying and pasting with gedit:
sudo gedit /media/ihris/ubuntuMirror/mirrorbuild.sh
This is what you should copy and paste <source lang='bash'>
- !/bin/bash
- Setting variables with explanations.
basePath="/media/ihris/ubuntuMirror/"
- Don't touch the user's keyring, have our own instead
export GNUPGHOME=${basePath}keyring
- Outpath= # Directory to store the mirror in
- Make this a full path to where you want to mirror the material.
outPath=${basePath}mirror
- Arch= -a # Architecture. For Ubuntu can be i386, powerpc or amd64.
- sparc, only starts in dapper, it is only the later models of sparc
- arch=i386,amd64
arch=amd64
- Minimum Ubuntu system requires main, restricted
- Section= -s # Section (One of the following - main/restricted/universe/multiverse).
section=main,restricted,universe
- Release= -d # Release of the system (Dapper, Edgy, Feisty, Gutsy), and the -updates and -security ( -backports can be added if desired)
release=oneiric,oneiric-updates,oneiric-security,
- When Ubuntu 12.04 (LTS Precise) is released, you should use this instead
- release=oneiric,oneiric-updates,oneiric-security,precise,precise-updates,precise-security
- Server= -h # Server name, minus the protocol and the path at the end
- CHANGE "*" to equal the mirror you want to create your mirror from. au. in Australia ca. in Canada.
- This can be found in your own /etc/apt/sources.list file, assuming you have Ubuntu installed.
server=us.archive.ubuntu.com
- The --nosource option only downloads debs and not deb-src's
- The --progress option shows files as they are downloaded
- --source \ in the place of --no-source \ if you want sources also.
- Start script
debmirror -a $arch --no-source -s $section -h $server -d $release \
--progress -e http $outPath
</source> Note, when Ubuntu 12.04 (LTS Precise) is soon released, you should comment out the line about the release in the above section.
Trusting the Ubuntu Archives
We need to set up our mirroring software to trust all of Ubuntu's software archives. This can be done with:
sudo gpg --keyring /usr/share/keyrings/ubuntu-archive-keyring.gpg --export --homedir /media/ihris/ubuntuMirror/keyring/ | sudo gpg --no-default-keyring --keyring trustedkeys.gpg --import --homedir /media/ihris/ubuntuMirror/keyring/
sources.list
The file /etc/apt/sources.list tells apt-get where to look for software packages to install.
We will want to have two versions of the sources.list file. One that will use the hard drive (sources.list.harddrive) and one that will use the internet (sources.list.internet). You will need to create a file /etc/apt/sources.list.harddrive
sources.list.internet
The default ubuntu installation assumes that you are connected to the interent. So we will simply copy the existing /etc/apt/sources.list to sources.list.internet
sudo cp /etc/apt/sources.list /etc/apt/sources.list.internet
sources.list.hardrive
We now need to create a version of the sources.list that will use the hard drive.
echo "deb file:///media/ihris/" `lsb_release -cs` "main universe " | sudo tee /etc/apt/sources.list.harddrive
Updating the Software Repository
Using the Software Repository
source.list.hardrive as sources.list
Did you copy the /etc/apt/sources.list to /etc/apt/sources.list.internet as described above? If not STOP Let's switch to use the hard drive
sudo cp /etc/apt/sources.list.harddrive /etc/apt/sources.list
source.list.internet as sources.list
Now that we are done, we should restore our original /etc/apt/sources.list
sudo cp /etc/apt/sources.list.internet /etc/apt/sources.list