Arch Hurd LiveCD: i686-core-2010-08-25.iso

August 26, 2010 at 7:08am Tagged: , and , with 2 Comments

It's been two months and twenty days since the last Arch Hurd LiveCD, and an update is definitely needed. The old LiveCD had, much to my embarrassment, a flaw in the "Install System" section that would make it impossible to install without manual intervention, and even then be a bit hit-and-miss for multi-partition set ups. In this new LiveCD, all known bugs have been eradicated, packages have been updated, and the whole thing just works better.

Changelog

  • Updated installation packages - the livecd now features packages current as of today, 2010-08-25, and so less needs to be updated after installing.
  • Updated LiveCD packages - the packages on the livecd itself have been updated, and as a result has become much more stable. This is most likely due to the recent GNU Mach / Hurd / glibc updates by Matthias. melpo, you rock.
  • Updated and new documentation - the installation guide has been updated a little over the past few months, and so the latest version of that is on the livecd. Additionally, the livecd now features an introduction to translators written by Arne Babenhauserheide.
  • Updated /arch/setup - this fixes all known bugs with the old setup script, I've tested it with a variety of different set ups, and it seems to work pretty well.
  • Updated initscripts - In addition to all the changes melpo has made to the initscripts in the past two months, there has been a small change from how the old livecd used to work. In the old livecd, there was a 32MB ext2 image which was mounted in RAM and used as a temporary filesystem. Now, a temporary ext2 filesystem is created on the fly at boot; this enables the ISO to be just a little bit smaller.

New Arch Hurd mirror in the UK

August 23, 2010 at 8:47pm Tagged: and , with 0 Comments

We now have another mirror hosted in the UK - that makes two servers in the UK and two in Germany. This mirror is (currently) only available through HTTP. Mirrors outside Europe would also be awesome, so don't be shy :)

Positive Internet

Many thanks to Positive Internet (their website is currently being re-done to be much nicer than what it is now, I'm told) for this latest mirror, and to the other two mirror providers.

Additionally, as you may have noticed, I have taken down the livecd from the Arch Hurd server, as we're getting very close to the bandwidth limit for this month. The livecd will return next month, and hopefully our bandwidth usage will remain low.

New Arch Hurd Mirror in Germany

August 22, 2010 at 4:16pm Tagged: and , with 0 Comments

Well, we've got another mirror already, this time hosted by Karsten Heiken on disposed.de.

disposed.de

The server is located in Germany (as is the Narf Hosting one), and is accessible via FTP and HTTP.

Arch Hurd Mirrors

August 21, 2010 at 3:56pm Tagged: and , with 0 Comments

The Arch Hurd LiveCD has been surprisingly popular, and we have (at the time of writing) consumed 80% of our monthly bandwidth quota for this month. I plan to release the next version of the LiveCD next month, and there's a real chance we'd go over the limit without mirrors. Thus, I am happy to announce that there is now an Arch Hurd LiveCD mirror (which may also become a package mirror in the future), hosted by Narf Hosting.

Narf Hosting

The hosting was negotiated by gtklocker. Thanks to Narf Hosting and gtklocker! :)

Now, if you try to download the LiveCD through the direct HTTP download, you get redirected to a random mirror (so files.archhurd.org and archhurd.narfhosting.com currently), to cut down our bandwidth usage. One mirror should be more than enough for the forseeable future, but if you want to provide some bandwidth, please contact me. Currently we only have packages on the main server, so a package mirror would be great.

We use rsync for our mirror-able content, so as long as you have some spare bandwidth and the ability to run rsync through cron, you too can be an Arch Hurd mirror. A full list of mirrors, which will be updated automatically, can be found on the new mirrors page.

linhurd: A script for comparing Arch Hurd and Arch Linux repositories

June 3, 2010 at 10:15pm Tagged: , , and , with 0 Comments

I've just finished writing linhurd which is, as the title says, a tool for comparing the Arch Hurd and Arch Linux repositories. linhurd can show packages in the Arch Linux repos but not the Arch Hurd ones (and vice versa), and package version differences between the two.

I expect I will be mainly using linhurd for checking if any of my packages have fallen behind and are out of date (checking against Arch Linux is easier than checking upstream, lazy, I know), and it'll probably be useful when deciding what to package next.

The Script

#!/bin/bash

LINHURDDIR=/var/cache/linhurd

function getpaccfg()
{
    if [[ "$1" == "linux" ]]; then
    core="ftp://ftp.archlinux.org/core/os/i686"
    extra="ftp://ftp.archlinux.org/extra/os/i686"
    else
    core="http://files.archhurd.org/repo/core"
    extra="http://files.archhurd.org/repo/extra"
    fi

    echo "[options]"                           >  $LINHURDDIR/$1/pacman.conf
    echo "DBPath  = $LINHURDDIR/$1/"           >> $LINHURDDIR/$1/pacman.conf
    echo "LogFile = $LINHURDDIR/$1/pacman.log" >> $LINHURDDIR/$1/pacman.conf

    echo "[core]"                              >> $LINHURDDIR/$1/pacman.conf
    echo "Server = $core"                      >> $LINHURDDIR/$1/pacman.conf

    echo "[extra]"                             >> $LINHURDDIR/$1/pacman.conf
    echo "Server = $extra"                     >> $LINHURDDIR/$1/pacman.conf
}

function syncrepos()
{
    if [[ "$UID" != "0" ]]; then
    echo "ERROR: This script must be run as root when synchronising packages."
    exit 1
    fi

    if [[ ! -e $LINHURDDIR/linux/pacman.conf ]] || [[ ! -e $LINHURDDIR/hurd/pacman.conf ]]; then
    # Make sure we have nothing weird lying around
    rm -r $LINHURDDIR/
    mkdir -p $LINHURDDIR/{linux,hurd}/

        # Make pacman configs
    getpaccfg linux
    getpaccfg hurd
    fi

    # Synchronise and get package lists
    pacman -Sy --config $LINHURDDIR/linux/pacman.conf
    pacman -Sy --config $LINHURDDIR/hurd/pacman.conf
    pacman -Sl core extra --config $LINHURDDIR/linux/pacman.conf | sort | sed 's/-[0-9]*$//' > $LINHURDDIR/linux/packages.list
    pacman -Sl core extra --config $LINHURDDIR/hurd/pacman.conf  | sort | sed 's/-[0-9]*$//' > $LINHURDDIR/hurd/packages.list

    < $LINHURDDIR/linux/packages.list cut -d' ' -f2 | sort > $LINHURDDIR/linux/names.list
    < $LINHURDDIR/linux/packages.list cut -d' ' -f3 | sort > $LINHURDDIR/linux/versions.list

    < $LINHURDDIR/hurd/packages.list cut -d' ' -f2 | sort > $LINHURDDIR/hurd/names.list
    < $LINHURDDIR/hurd/packages.list cut -d' ' -f3 | sort > $LINHURDDIR/hurd/versions.list
}

function linux()
{
    comm $LINHURDDIR/linux/names.list $LINHURDDIR/hurd/names.list -2 -3
}

function hurd()
{
    comm $LINHURDDIR/linux/names.list $LINHURDDIR/hurd/names.list -1 -3
}

function versions()
{
    comm $LINHURDDIR/linux/names.list $LINHURDDIR/hurd/names.list -1 -2 | \
    while read pkg; do
    linux=`grep " $pkg " $LINHURDDIR/linux/packages.list | sed 's/^\(core\|extra\) //' | cut -d' ' -f2`
    hurd=`grep " $pkg " $LINHURDDIR/hurd/packages.list   | sed 's/^\(core\|extra\) //' | cut -d' ' -f2`

    if [[ "$linux" != "$hurd" ]]; then
        echo "$pkg $hurd [$linux]"
    fi
    done
}

function help()
{
    echo "linhurd: script to compare Arch Linux and Arch Hurd repositories."
    echo
    echo "Usage:"
    echo "    linhurd [--sync|-S] [--linux|-L] [--hurd|-H] [--versions|-V]"
    echo
    echo "Options:"
    echo "    --sync      -S: Synchronise the local Arch Linux and Arch Hurd pacman databases."
    echo "    --linux     -L: Show packages in Arch Linux core and extra that are missing from Arch Hurd."
    echo "    --hurd      -H: Show packages in Arch Hurd core and extra that are missing from Arch Linux."
    echo "    --versions  -V: Show package version differences between Arch Hurd and Arch Linux."
    echo "    --help      -h: Show this text."
    echo
    echo "Author: Michael Walker (Barrucadu) <mike@barrucadu.co.uk>"
}

if [[ "$1" == "" ]]; then
    help
else
    while [[ "$1" != "" ]]; do
    case "$1" in
        "--sync" | "-S")
        syncrepos;;
        "--linux" | "-L")
        linux;;
        "--hurd" | "-H")
        hurd;;
        "--versions" | "-V")
        versions;;
        "--help" | "-h")
        help;;
    esac
    shift
    done
fi

Using

First, generate pacman configs and sync databases by running:

sudo linhurd --sync

You should sync occasionally so the data doesn't fall too far behind what's actually in the repositories. This has to be run as root because (a) it edits files in /var/linhurd and (b) pacman complains when not run as root doing a database sync. However, the rest of linhurd is perfectly fine running as a normal user.

After syncing, you can check packages which are present in the Arch Linux repositories but not in the Arch Hurd ones by using the --linux flag (or -L), packages which are in the Arch Hurd repos but not the Arch Linux ones by passing the --hurd flag (or -H), and packages in both with version differences by using --versions (or -V). Multiple flags can be passed at once (exempli gratia linhurd -L -V).

In the future I may add an option to specify which repositories you wish to compare (though I don't suppose comparing any other than core and extra will give meaningful results).