I was recently installing Fedora Core 6 on a laptop without an Internet connection, and ran into some problems. During the package selection phase, the FC6 installer tells you that you can add packages after the initial installation. This is only really true if you are able or willing to install those packages from internet-based repositories, rather than from the CDs or DVD.
I kept the initial package selection minimal, knowing that I would need to add several optional packages immediately after the installation finished. But when I tried to do that, I discovered that the traditional Fedora system-config-packages program does nothing but produce this dialog and quit:
(It turns out it does this even with an internet connection; you should be logged in as root for it to work. Being sued to root is insufficient.)
Some poking around revealed that Fedora has switched to a new software installation/update application called pirut in recent releases (in FC5, which I skipped). Running pirut without an internet connection, but with the install DVD in the DVD drive, gives this accurate but not very helpful message:
The FC6 DVD contents look suspiciously like a standard yum repository, with a repodata directory containing the usual XML files. So at this pooint it occurred to me that editing /etc/yum.repos.d/fedora-core.repo to include a baseurl=file:///media/FC_6%20x86_64%20DVD line referring to the DVD mount point might get things working. That still gave the same Unable to retrieve software information error, but that was because I left the fedora-extras and fedora-updates enabled. OK, I modified the relevant files under /etc/yum.repos.d to disable other repositories.
Now pirut started without errors, and displayed the available packages. It looked promising, until I tried to install something:
So, I took a look at the repository metadata XML files in the repodata directory, and found that they did indeed include xml:base attributes with strange media:... URIs. I assume that these indicate which CD in a multi-CD set contains each package. In my case all the packages were on one DVD, so these attributes are pointless, but they are still present. So I copied the repodata directory to disk, modified the files to remove the offending xml:base attributes, and surrounded it with symlinks pointing to other directories on the DVD, to try to create something that yum and pirut would accept as a repository.
But it's not quite that simple. repodata/repomd.xml contains a bunch of checksums and mtime values for the other repository metadata files, which my edits had compromised. By this point, I had spent an hour wrestling with this problem, so I couldn't let pirut win. I wrote a shell script to automate the process of modifying the repository metadata files and fixing up repomd.xml to match the modified files. Finally, success. Pirut gave in, and installed packages from the DVD.
Prominent Linux distributions have greatly improved that software installation and update process over the last decade. Both Debian-derived and RPM-based distributions now have good support for accessing large repositories of packages over the internet. If you have good internet access, then you don't really need the distribution CDs or DVD after the initial install. But I wonder if the emphasis on installation over the internet has reached the point that distributions are neglecting installation of packages from CD/DVD. I hope that ability doesn't disappear. Although fast internet connections are widely available now, it's still quite possible to find yourself without one. And many DSL providers set monthly data limits, so it's sometimes preferable not to download packages that you already have sitting on a CD or DVD.
By the way, apart from this installation issue and a few other minor issues, FC6 seems quite nice so far. I have a more significant problem running Linux on this laptop, but it is not Fedora-specific (the built-in Atheros wifi chipset is too new to be supported by the madwifi driver). If I wanted everything to just work, I probably wouldn't be using Linux.