How to make your own Ubuntu Repository DVDs
Corrections and fixes submitted by the community are added and credited within the main tutorial. However, many of the posts that follow add great ideas. Please feel free to browse. But this first post should have all you need in terms of accomplishing the task at hand. And a big thanks to the brilliant souls who've added so many detailed and beautifully formatted ideas!
EDIT: This tutorial has fallen behind a bit. A clean up will begin shortly.
Sensiva reports that 9.10 Karmic Koala has an issue with this, stemming from a bug in apt:
Let me describe it in details. If I want to install a program that needs more than one package, and those packages are located on different DVDs, APT used to fetch then install then ask for the next disc. But with Karmic, after fetching it doesn't install, it prompts for the next discs... etc and then starts installation, the packages currently in the last disc in the drive are installed, then giving an error about the other packages which are located in the previous discs because they are not there. Its not a problem in the discs, I think its APT behavior itself that should be changed. Unfortunately I don't know how to adjust this way of APT in Karmic. but a workaround for this is pointing APT to the local repos already downloaded on the harddrive and not using the created DVDs. I have tested it and worked fine.
! What's The Point Of This Tutorial?
A local set of repositories proves useful for friends and family who have slow
bandwidth. Assembled from various sources
(see the references below) these steps should create Ubuntu repository DVDs to share or keep in storage, however the need arises.
What level experience do you need?
I've tried to conform to the tutorial rules. However, the very nature of this tutorial requires a bit more thinking than simply copying and pasting. Feel free to post a question about some step that may not work right for you. But the idea is to reduce the amount of text in the tutorial within reason by not detailing each step.
Hard Disk Requirements (Please Read This)
Roughly 45 gigabytes free hard drive space: to store the complete set of .deb
files Ubuntu offers; to create four DVD ISOs; left-over space for the function of the PC. Now, in a day and age of the 1 terabyte drive... this may not be a huge consideration any more. But if your drive is smaller than 60 Gb, this download will take its toll. Download sizes alone (not including space required to make DVD ISOs):
4.10 - Warty Warthog: 9.72 GB
5.04 - Hoary Hedgehog: 11.53 GB
5.10 - Breezy Badger: 12.17 GB
6.06 - Dapper Drake: 15.71 GB
6.10 - Edgy Eft: 17.46 GB
7.04 - Feisty Fawn: 19.90 GB
7.10 - Gutsy Gibbon: 24.81 GB
8.04 - Hardy Heron: 28.85 GB
8.10 - Intrepid Ibex: 26.72 GB
9.04 - Jaunty Jackalope: 27.53 GB
9.10 - Karmic Koala: 32.11 GB
10.04 - Lucid Lynx: 32.29 GB
10.10 - Maverick Meerkat: 39.38 GB
11.04 - Natty Narwhal: 40.00 GB
11.10 - Oneiric Ocelot: 42.79 GB
Well, you get the point. From Warty to Oneiric we went from roughly 10 Gb to 43 Gb.
01. Install the necessary tools1. Install the necessary tools
covers what you'll need to get started.
02. Extract debcopy
is not necessary to do first, but we get it out of the way at the beginning.
03. The Big Download
has the command necessary to download the desired repositories. Make your changes according to the type you need.
04. Divide into DVD-sized portions
prepares the files to make the DVDs.
05. Create ISOs
finishes what began in step 4.
06. Burning the ISO files
covers how to write the files to blank discs.
07. Getting It All To Work
is the instructions on how to tell Ubuntu to use the DVDs as a source for installing new software.
08. Updating the local repositories
shows how to keep what you've downloaded up-to-date.
09. Pointing Apt locally
shows you how to use what you've downloaded to your own advantage (should you decide to keep it around).
10. You only want a setup DVD?
is a link to Ubuntu setup DVDs for download.
answers some frequently asked questions.
Q1: How would I do this through DOS/Windows?12. Classic Ubuntu Repository Downloads
Q2: Why don't I skip this mess and download pre-made DVD ISOs?
Q3: What if I wanted to combine or add in more repositories? Something like Canonical Commercial? Or MediBuntu?
Q4: How to get "debmirror" to download and validate the "Release.gpg" file.
Q5: How do I setup a local Ubuntu mirror from a set of Repository DVDs?
. Warty? Hoary? Breezy? Feisty, anyone? Don't fret about older editions disappearing. Help is right here.
gives credit where credit is due - and links
14. Mission, Vision & Values
Open a terminal (from the top-left side of the Ubuntu screen: Applications → Accessories → Terminal). Please do not close this application throughout the length of this tutorial.
Copy the following code and paste it into the terminal.
Hit the Enter key after pasting. (A quick way to "paste" text into the terminal is to hold down the following keys Ctrl+Shift+V, or right click in the terminal and click Paste in the context menu.)
sudo apt-get install debmirror liblockfile-simple-perl liblog-agent-perl ruby mkisofs dpkg-dev libdigest-sha1-perl libruby libzlib-ruby
While debpartial is still in the repositories (big fancy phrase that means: this is an official and valid Ubuntu file), starting with Hardy Heron, it is not considered part of Hardy Heron or newer -- it is 100% compatible. Provided below is the link to the necessary software:
>> CLICK HERE << to download DebPartial from Canonical.Once saved on the desktop, double-click the file and extract debpartial to your home directory/folder.
2. Extract debcopy
The debcopy file is included in debpartial (downloaded and installed in Step 1). Let's extract it now for later use. Please paste the following code into the Terminal:
cp /usr/share/doc/debpartial/examples/debcopy.gz ~
3. The Big Download
Use this code to start downloading Lucid Lynx's repository files:
To see the whole code with some brief explanations:
debmirror --nosource -m --passive --host=archive.ubuntu.com --root=ubuntu/ --method=http --progress --dist=lucid,lucid-security,lucid-updates,lucid-backports, --section=main,restricted,universe,multiverse --arch=i386 ~/UbuntuRepos --ignore-release-gpg
Some variables in blue.
--nosource -m --passive \
--host=archive.ubuntu.com \ (select a faster repository if need be)
--root=ubuntu/ --method=http --progress \
--arch=i386 ~/UbuntuRepos \ (this puts our files in /home/USER/UbuntuRepos)
- Want a detailed explanation of this command? CLICK HERE. (links to a post in this thread.)
- Be forewarned: this can take a long time, perhaps 24 or so hours. Downloading individual files is slow.
Did the download stop midway?4. Divide into DVD-sized portions
Press the up cursor key on your keyboard and the command should re-appear. Hit Enter and the download will pick up where it last left off.
Regular network glitches?
Try adding one of the following argument(s) to the command (the number following "-t" is the length of time -- in seconds -- before the retry begins) :
--timeout=seconds -t 120
The "120" means 120 seconds or 2 minutes. Increase it to 4 minutes, for example, like this:
--timeout=seconds -t 240
- Note: If you changed repositories in Step 3 then the following command will require editing:
1. Replace the red lucid in the code above with your repository choice (i.e., intrepid, jaunty or karmic).
debpartial --nosource --dirprefix=ubuntu --section=main,restricted,universe,multiverse --dist=lucid,lucid-security,lucid-updates,lucid-backports --size=DVD ~/UbuntuRepos ~/UbuntuDVDs
2. If you plan on burning CDs instead of DVDs, then replace --size=DVD with --size=CD74 (for 650 megabyte CD-Rs), or --size=CD80 (for 700 megabyte CD-Rs)
How many CDs will we need to create? How do we find out? Paste this code in the Terminal and hit Enter:If the last folder is ubuntu3 you need to create 4 DVDs. If the last folder is ubuntu4 then it will be 5 DVDs, and if the last folder is ubuntu31, you'll need to create 32 CDs, and so on. NOTE: Oneiric's repository size = 42.79 Gb. You're going to need a large stack of CDs.
Having determined the number of physical discs you'll need, use the following as your pattern until all discs are complete (the only change from one to the next is the final number). These represent Lucid Lynx's requirements:
ruby ~/debcopy -l ~/UbuntuRepos ~/UbuntuDVDs/ubuntu0
ruby ~/debcopy -l ~/UbuntuRepos ~/UbuntuDVDs/ubuntu1
ruby ~/debcopy -l ~/UbuntuRepos ~/UbuntuDVDs/ubuntu2
ruby ~/debcopy -l ~/UbuntuRepos ~/UbuntuDVDs/ubuntu3
ruby ~/debcopy -l ~/UbuntuRepos ~/UbuntuDVDs/ubuntu4
ruby ~/debcopy -l ~/UbuntuRepos ~/UbuntuDVDs/ubuntu5
ruby ~/debcopy -l ~/UbuntuRepos ~/UbuntuDVDs/ubuntu6
5. Create ISOs
ruby ~/debcopy -l ~/UbuntuRepos ~/UbuntuDVDs/ubuntu7
These instructions assume you've got enough data to make 8 DVDs. If you've downloaded repositories that do not need an 8th DVD, none will be created.
mkisofs -f -J -r -V "Ubuntu 10.04 1/8" -o ubuntu-10.04-$(date -I)-complete-i386-dvd1.iso ~/UbuntuDVDs/ubuntu0
mkisofs -f -J -r -V "Ubuntu 10.04 2/8" -o ubuntu-10.04-$(date -I)-complete-i386-dvd2.iso ~/UbuntuDVDs/ubuntu1
mkisofs -f -J -r -V "Ubuntu 10.04 3/8" -o ubuntu-10.04-$(date -I)-complete-i386-dvd3.iso ~/UbuntuDVDs/ubuntu2
mkisofs -f -J -r -V "Ubuntu 10.04 4/8" -o ubuntu-10.04-$(date -I)-complete-i386-dvd4.iso ~/UbuntuDVDs/ubuntu3
mkisofs -f -J -r -V "Ubuntu 10.04 5/8" -o ubuntu-10.04-$(date -I)-complete-i386-dvd5.iso ~/UbuntuDVDs/ubuntu4
mkisofs -f -J -r -V "Ubuntu 10.04 6/8" -o ubuntu-10.04-$(date -I)-complete-i386-dvd6.iso ~/UbuntuDVDs/ubuntu5
mkisofs -f -J -r -V "Ubuntu 10.04 7/8" -o ubuntu-10.04-$(date -I)-complete-i386-dvd7.iso ~/UbuntuDVDs/ubuntu6
Note: If you changed repositories in Step 3 then each command above will require editing. Replace the version number of 10.04 with:
mkisofs -f -J -r -V "Ubuntu 10.04 8/8" -o ubuntu-10.04-$(date -I)-complete-i386-dvd8.iso ~/UbuntuDVDs/ubuntu7
- 9.04 for jaunty and 9.10 for karmic, 10.10 for maverick
- i386 for amd64, powerpc or sparc
- If you're committed to creating CD-R ISOs (detailed in Step 4) then make the following changes:
- replace -dvd1.iso with -cd1.iso
- replace -dvd2.iso with -cd2.iso (and so on until all 50 or so CD-R ISOs are completed)
6. Burning the ISO files
Using Ubuntu (Link)
- Insert a blank CD into your burner. A "CD/DVD Creator" or "Choose Disc Type" window will pop up. Close this, as we will not be using it.
- Browse to the created ISO image in the file browser
- Right click on the ISO image file and choose Write to Disc.
- Select the write speed. It is recommended that you write at the lowest possible speed.
- Start the burning process and repeat these steps until all ISOs are done.
Using Kubuntu (Link)
- Find the ISO image in the file browser (available at System Menu > Home Folder on bottom of the screen next to KMenu.)
- Right click on the ISO → Actions → Write CD Image with K3b...
- K3b will now automatically verify the md5sum, make sure these match.
- Place Blank CD in burner and click on start.
Using Xubuntu (Link)
- Launch the burning tool, xfburn (available at Applications → Accessories → xfburn.)
- Choose from the main toolbar, or from the menu Actions the option "Burn CD Image",
- From the Burn CD Image dialog box, click over (None) from "image to burn", and find the ISO image in the file browser
- In the dialog, click 'Burn Image'.
7. Getting it all to work
There are two ways to add a DVD/CD to your repository list:
"KPackageKit" and "Adept"
8. Updating the local repositories (i.e., "Now what!?")
Kubuntu's built-in package managers seem to have difficulties with adding CD/DVD ROMs to the list of available system packages. Try using the "Terminal" solution.
Open Synaptic Package Manager (System
→ Synaptic Package Manager
). Enter your password. From the menu: Edit
→ Add CD-ROM....
and follow the clearly written instructions in each dialog box. Repeat until all your media (DVDs, CDs) have been entered. Should this fail, try the following.
Open a Terminal
) and enter the following command:
Insert the first disc and follow the instructions (it will ask you to name each disc). When apt-cdrom
is finished with the disc, eject it with
(yeah, just type it in and hit Enter) and insert the next and use the same command. Repeat the process per disc.
Once the last disc
is done, enter this code in the Terminal:
sudo apt-get update
sudo apt-get upgrade
which will update your system if any newer files are available. You can now open Synaptic Package Manager
to use tens of thousands of packages.
(To be added:
how to remove previously added DVD/CD entries in apt when old discs are replaced with new, as well as correcting any goofs that occur when incorrectly labeling the discs, etc.)
Now that you have gigabytes of .deb files all tucked neatly into the ~/UbuntuRepos folder... what on earth do you do to keep it updated? Start again? Sort of. Read on...
Open the Terminal (Applications → Accessories → Terminal) and go to the folder where you initially ran debmirror (by default: your home folder) and run the command in Step 3 again. This only makes an incremental update consuming roughly 10 minutes instead of 25 hours. Run this daily and ISO creation won't have the added bore of a long download.
If new DVDs are required or desired, delete your original .iso files (in your home folder) and run steps 5 through 7 to recreate them.
9. Pointing Apt locally
luvr has a tutorial entitled "Creating a Trusted Local Repository from which Software Updates can be installed" that is more detailed than my addition. CLICK HERE for this Ubuntu Forums HOWTO. It begins with:
"If you manage multiple PCs running Ubuntu, you will likely want to keep them all updated. Thus, you will want to install the Ubuntu updates to each of them as they become available, and you will have each PC individually download all of the updates from the Ubuntu repositories on the internet. This may, however, be impractical to you—particularly if, e.g., you are on a rather slow internet connection, or if your monthly data transfer volume is severely limited, or if you simply prefer to save the bandwidth."Credit=Geochelone
It is possible to use the files you've downloaded as your own local repository. It can be used for updates and installing new packages. But this will only work well if you keep these files up-to-date. If not, you will fall behind in security updates.
With that out of the way let's proceed. Enter the following code in the terminal:
This creates the necessary files for apt to know what is in your local repositories.
cd ~/UbuntuRepos && dpkg-scanpackages . /dev/null > Packages && gzip Packages && cd ~
Once completed insert the following into your sources.list file:
deb file:/home/[USER NAME HERE]/UbuntuRepos/ lucid main multiverse restricted universe
deb file:/home/[USER NAME HERE]/UbuntuRepos/ lucid-security main multiverse restricted universe
NOTE: Don't forget these two things:
- modify these lines for jaunty or karmic
- put hash marks (#) before each Internet repository line you no longer require. Example:
# deb http://archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
10. You only want a setup DVD?
Head over to this link and select the corresponding Ubuntu suite you desire.
The difference between the Ubuntu setup CD
and the Ubuntu setup DVD
is how much of the repositories are on the setup disc. The DVD contains quite a bit more, most of "Main" if I'm not mistaken. However, if you have the repository DVDs handy, a setup DVD is redundant and not recommended. Save your bandwidth and don't bother. However, if you want a snazzy setup DVD, try this on for size:
Click here: Ultimate Edition
Click here: SuperOS
Question 1: How would I do this through DOS/Windows?
Answer 1. I... honestly... don't... know. I can't imagine how tedious it would be to try to assemble all this file by file. If you're a dual-booter or you've got faster bandwidth on a Windows machine elsewhere then I understand your dilemma. debmirror is the binary that does all the work. I cannot imagine that anyone has made a port for Windows. Until someone shows me a blog that tells Windows users how to accomplish this I suggest looking at the solutions in Q2.
Answer 2. This is a "round about" way of using a Windows PC where the bandwidth is fast. Try using the Ubuntu setup CD in "Live User Mode". Follow the instructions in this tutorial and use the Windows Hard Drive as your destination. Well, look. I didn't think it would be easy, just... sorta... possible.
Question 2: Why don't I skip this mess and download pre-made DVD ISOs?
Answer 1. Pre-made DVD ISOs are fine for a single, never-to-be-repeated download (if time is an issue). Here's the difficulty: to get updates means downloading the ISOs again (sorta time consuming). If a single ISO download is right for you -- use this link: ftp://ftp.leg.uct.ac.za/pub/linux/ub...-packages-dvd/
Answer 2. Modem connections make this tutorial impossible regardless the O/S. Consider purchasing inexpensive DVD ISOs from an online vendor. Examples are:
They will provide exactly what you need: Ubuntu Repository DVDs with setup disks - perfect for that off-line PC. These companies will ship these discs right to your door for a small fee (no affiliation with the author).
Question 3: What if I wanted to combine or add in more repositories? Something like Canonical Commercial? Or MediBuntu?
Answer. Don't do it!
OK. Now that I've got your attention... let me say that jocose says you can. But you must follow his instructions here. Please note: these instructions have not been tested in our labs at Muppet Central. Advance at your own risk.
For those of you who want to mess around and don't mind burning an extra CD or two, continue reading:
debmirror will only erase your original files. You must change the name of the download folder(s). Let me explain and illustrate.This is what debmirror appears to do when run:
- debmirror receives the file list from the server within the command line (archive.ubuntu.com, for example).
- debmirror then looks for the "destination" folder. If it doesn't exist, it creates it.
- if debmirror finds that the destination folder already exists it compares the files it finds with the remote server's file listing.
- debmirror then carefully erases everything in the destination folder that is not an exact match with that list.
- debmirror downloads files it deems are missing in the destination folder.
If you are updating a local set of files, this is a good thing. But if you choose a different server, this is a bad thing.
The quick way to add files from different servers (such as MediBuntu and Canonical) is to put the additional files in unique folders. Examples: ~/MediBuntuRepos and/or ~/CanonicalRepos (your folder names may vary). Then replace ~/UbuntuRepos in each command.
If you're feeling confused by the above description and you just want to start downloading, the following steps show how to create Canonical and Medibuntu CD sets:
debmirror --nosource -m --passive --host=archive.canonical.com --root=/ --method=http --progress --dist=lucid,lucid-backports,lucid-proposed,lucid-security,lucid-updates --section=partner --arch=i386 ~/CanonicalRepos --ignore-release-gpg
debpartial --nosource --dirprefix=ubuntu --section=partner --dist=lucid,lucid-backports,lucid-proposed,lucid-security,lucid-updates --size=CD80 ~/CanonicalRepos ~/CanonicalRepos/CD
ruby debcopy -l ~/CanonicalRepos ~/CanonicalRepos/CD/ubuntu0
Replace lucid with intrepid, jaunty or karmic.
mkisofs -f -J -r -V "Canonical" -o ubuntu-7.10-$(date -I)-Canonical.iso ~/CanonicalRepos/CD/ubuntu0
Architecture options = amd64, powerpc or sparc
debmirror --nosource -m --passive --host=packages.medibuntu.org --root=/ --method=http --progress --dist=lucid --section=free,non-free --arch=i386 ~/MediBuntuRepos --ignore-release-gpg
ruby debcopy -l ~/MediBuntuRepos ~/MediBuntuRepos/CD/ubuntu0
Replace lucid with intrepid, jaunty or karmic.
mkisofs -f -J -r -V "MediBuntu" -o ubuntu-7.10-$(date -I)-MediBuntu.iso ~/MediBuntuRepos/CD/ubuntu0
Architecture options = i386, amd64, powerpc
(To add MediBuntu to your personal repositories: https://help.ubuntu.com/community/Me...07a38a00d70e9f)
The Google directories appear... then disappear. This is the last directory address I have.
debmirror --nosource -m --passive --host=dl.google.com --root=/linux/deb/ --method=http --progress --dist=stable --section=non-free --arch=i386 ~/GoogleRepos --ignore-release-gpg
Question 4: How to get "debmirror" to download and validate the "Release.gpg" file.
Answer. I don't know!!! But luvr does. Thanks for the addition.
luvr tackles this question with this patient and well laid out post: Click Here.
Q5: How do I setup a local Ubuntu mirror from a set of Repository DVDs?
I just don't know!!! But luvr
does. Thanks for the addition.
tackles this question with this patient and well laid out post: Click Here.
12. Classic Ubuntu Repository Downloads
For anyone who is interested for whatever reason... be it nostalgia, business, just plain techno geek, or reasons you would probably not want everyone to know, here are example codes for the classic repositories.
Warty Warthog on the i386 architecture:
Warty Warthog on the 64-bit AMD architecture:
debmirror --nosource -m --passive --host=old-releases.ubuntu.com --root=ubuntu/ --method=http --progress --dist=warty,warty-security,warty-updates,warty-backports, --section=main,restricted,universe,multiverse --arch=i386 ~/WartyRepos_i386 --ignore-release-gpg
Doing it this way clearly defines a different folder for each repository set. Note the coloured text can be changed to suit the version, architecture, and output folder as per your original tutorial method.
debmirror --nosource -m --passive --host=old-releases.ubuntu.com --root=ubuntu/ --method=http --progress --dist=warty,warty-security,warty-updates,warty-backports, --section=main,restricted,universe,multiverse --arch=amd64 ~/WartyRepos_amd64 --ignore-release-gpg
Please note a few points:
1. Don't mix repositories. If you have enough free hard drive space to keep these repositories around then put each version's files in a different folder (fear not: they're not being updated any more: what you download never needs to be updated). Here we've used "~/UbuntuReposWartyi386" and "~/UbuntuReposWartyAMD64" and not "~/UbuntuRepos". All contents of ~/UbuntuRepos will be wiped to accommodate the new download. We encourage a folder for each version, e.g. Wartyi386, WartyAMD64, Hoaryi386, HoaryAMD64, etc.
2. the architectures currently available in each (old.release) version are:
- 4.10 (Warty Warthog); i386, amd64, ppc.
- 5.04 (Hoary Hedgehog); i386, amd64, ppc, ia64, sparc.
- 5.10 (Breezy Badger); i386, amd64, ppc, ia64, sparc.
- 6.10 (Edgy Eft); i386, amd64, ppc, ia64, sparc.
- 7.04 (Feisty Fawn); i386, amd64, ppc, sparc.
- 7.10 (Gutsy Gibbon); amd64, armel, hppa, i386, ia64, lpia, powerpc, sparc.
- 8.04 (Hardy Heron)
If you're still running a classic copy of Ubuntu and want to install software, change your sources.list file to reflect that release. If it would be Warty Warthog, 4.10, you'd use the following:
## EOL upgrade sources.list
deb http://old-releases.ubuntu.com/ubuntu/ warty main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ warty-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ warty-security main restricted universe multiverse
#deb http://old-releases.ubuntu.com/ubuntu/ warty-backports main restricted universe multiverse
#deb http://old-releases.ubuntu.com/ubuntu/ warty-proposed main restricted universe multiverse
This tutorial was pieced together from:
- Ramon's original tutorial has vanished. It was last seen at http://cargol.net/~ramon/ubuntu-dvd-en. It was very basic and designed for Warty Warthog. Then I found...
- How to Make Ubuntu DVDs by Burt (significant modifications to Ramon's tutorial. Bert's instructions were brought to this forum for a local reference. Thanks Burt for improving on Ramon's original.)
The tutorial was updated with the help of the thoughtful comments by forum friends ... and I may have polished it up a bit. I take responsibility for all errors and give credit to contributors for all accuracies.
Other related links:
14. Mission, Vision & Values
- My mission was to put the repository tutorial here in the Ubuntu Forums, to include extra elements and ensure that those with basic Ubuntu experience could accomplish this. This tutorial was added to this Forum for these reasons:
- The original tutorial disappeared.
- The original tutorial did not reflect Ubuntu's 6-month updates or the changes the tutorial needed due to the difference in the size of the growing repositories, etc.
- The original tutorial tutorial only focused on i386.
- My vision is to keep it maintained (the repositories are forever changing, making this necessary), improve its wording, answer questions that arise due to the lack of clarity that perpetually plagues the text.
- My values cover only active versions, with a focus on the most recent Long Term Support distribution. Support for abandoned ("unsupported") editions or future alpha/beta ("unstable") editions must be maintained by forum members who feel the need to have these. Please do not perceive my refusal to work on these as a personal affront. Send me the codes. I'll add them and credit the author.
- Note: k3lt01 has stepped up to the plate and has sent me the codes for the classic (i.e., discontinued) distros. Should you encounter problems with these codes, let me know and I'll fix 'em.