One of the hidden gems of GitHub is Jess Frazelle’s Dockerfiles Repo, a collection of Dockerfiles for applications she runs in containers to keep her desktop clean and minimal. While reading the NMap Dockerfile I noticed a little bit of shell I’d not seen before. I’ve included the file itself below. The line in question is && rm -rf /var/lib/apt/lists/*, a tiny bit of shell that does some additional cleanup once apt has installed the required packages. Read on →


All this week there are Ubuntu Developer IRC workshops. While I don’t actually use Ubuntu at work it’s always a good idea to keep up with the new and shiny, and as an extra incentive a lot of the technical details mentioned also apply to Debian, which I do have to admin on a daily basis. While the IRC logs don’t go in to huge details the two sessions I’ve looked at (getting started and packaging perl modules) each contain enough useful links to make them worth my time. Read on →

In a conversation with Stuart the subject of cron timings came up, and after a brief discussion the ugly head of @reboot reared. While most people know that you can use the special ‘event’ syntax to trigger cronjobs at specific times I’d guess a very small number of them actually know how it works. For example does cron rerun @reboot jobs when the service is restarted? (hint - no it doesn’t. Read on →


Having spent a (very) little time over the last month fiddling with an existing FAI setup (which is used to install Debian machines) one amazingly insightful feature of Kickstart (a provisioning tool for Redhat and Fedora) has earned a place in my heart - /root/anaconda-ks.cfg. It might not seem like much, but by having the interactive installer produce a working config that can be reused, the barrier to entry is seriously lowered and makes experimentation much easier. Read on →

When it comes to config files the Debian people and I agree on basic principles - we’re both keen on applications having a directory where you drop multiple config files to allow for easier deployment and management. Even if they do sometimes seem a little… over zealous (Debian developers? Never!) and you end up with the split Exim4 configs. So one of the little quirks that I’d like an answer to is, why does Debian have a single big interfaces file and no support for a directory of files? Read on →

I’ve had a couple of people mail asking about my “frigging apt” comment in a previous post (the last paragraph). It’s actually as simple as the comment implies. Here’s an example - wget http://ftp.dk.debian.org/debian/pool/contrib/v/vmware-package/vmware-package_0.22_i386.deb dpkg -i vmware-package_0.22_i386.deb apt-get install -f # get prompted about installing lots of packages I don’t have any really well thought out reasons to not like this approach - in the few cases I’ve tried it I’ve found it to work; it just feels a little… icky. Read on →

Ever wanted a Debian package to be just a -little- bit different? Here’s how. While most of the software we’re pulling in from Debian is fine for our uses there are a couple of applications that we’d like to be a little different than the stock versions. Rather than go away and package them ourselves (which would require a lot more packing skills and time than I currently have - improving those skills is one of the reasons I’m doing this series) it’s possible to download a source version of a Debian package, make a small amendment and then repackage it for personal use. Read on →

Now that we have a local apt repository we can start to fill it with our own custom goodness. One of the first things I’m going to need is virtual packages. At work we’ll be using them to pull reusable components together in to a number of full applications (and using the apt mechanisms to force upgrades when a component changes) and to group Nagios plugins (we’ll be packaging some of those in a later blog post) in to sensible sections; we’re going to have a lot of Nagios plugins. Read on →

Ever wanted your own apt-repo? If not hit the back button about…. now. My new employers are going to be very Debian heavy on the systems side of the project I’m on so I’m currently in the process of sharpening my Debian specific skills (I’ve always tried to avoid Unix solutions that were tied to a single OS or distro but in this case we might as well do it The Debian Way). Read on →


All I wanted to do was stop the IPv6 kernel module from starting on boot. It shouldn’t be hard, it shouldn’t be difficult and despite the early hour of the day, it shouldn’t require me to google. But it seems that it does, as a start point the Planete Beranger Disable IPv6 post shows the many different ways to solve the problem. Unfortunately it seems that the Debian Etch install I’m testing on doesn’t like: Read on →

Over at the top-like command for disk io thread on GLLUG Kostas Georgiou mentioned a Linux /proc file entry I’d never heard of before, and after some digging it looks like it could be useful when debugging certain IO problems. Assuming you have 2.6.6 or above - or a vendor patched kernel. When you activate the option with a echo 1 > /proc/sys/vm/block_dump as root (read the article and consider turning syslog off first) the kernel starts to log which processes are accessing which disk blocks and inodes. Read on →


I’ve spent a lot of time today installing Debian boxes and testing build documents. After using both the old and new installers (Sarge installer RC2) I’ve come to a bundle of conclusions. The new installer hides a lot of the complexity from most users (use expert mode to get it back). It has a better screen for per-partition options (although it does make you do each one on a separate screen) and it flows a lot better. Read on →

While I’ve spent a fair amount of time running around on Linux it’s typically been in a mixed Unix environment (Linux, Solaris and HPUX mostly) so my tool-set was comprised of portable applications and scripts. In my current job I’m working with an almost entirely Debian server environment, the few Redhat machines are living on borrowed time as the bosses want them gone. While this may put a crimp on my cross-platform skills it does give me the chance to delve deeper into the “Debian way”, and to be fair it looks like it’s got a lot of neat tools. Read on →


I wasn’t going to mention this but I’m on dial-up this week and so dog slow down-loading has become an issue for me and this tool might be useful for people in a similar position. The short version is that the packages/Sources file is quite big, down-loading it each day can actually be quite a big hit in terms of bandwidth, apt-dupdate plans to get around this using bzipped diffs rather than re-sending the whole thing. Read on →

Arnaud Kyheng, a very bad man (but in a good way :)) has released an early version of Apt-Torrent. I’m not sure why but this seems like a madcap idea to me. The basic principles behind it, take the load away from the generous hosted main sites and distribute it a little, are sound and valid but it just seems odd to me. Still I feel the need to give it a twirl. Read on →

For those of you that don’t know it, and even for those that do, Ubuntu is a Linux distribution that is based upon Debian but with up-to-date desktop packages such as a modern Gnome. The distro itself has received a lot of good press and looks very promising. But that’s dull. No one cares if it’s technically excellent or it meets the needs of a large number of people (I may soon be running this on my Linux laptop so my views on this are pretty transparent :)) What is more interesting is controversy and differing opinions. Read on →

If you are working on a modern Unix machine (no, thats not an oxymoron) then it’s annoying difficult to determine the operating system name and version running. Where you should just be able to type ‘/etc/release’ and get the relevant details you instead need to either guess or brute-force your way through the possibilities. Debian stores this info in ‘/etc/debian_version’, Redhat in ‘/etc/redhat_release’. You know the world is going to end when Solaris makes the most sense and puts this information in ‘/etc/release’. Read on →