Search Results: "myon"

4 May 2020

Christoph Berg: arm64 on

The repository has been extended to cover the arm64 architecture. We had occasionally received user request to add "arm" in the past, but it was never really clear which kind of "arm" made sense to target for PostgreSQL. In terms of Debian architectures, there's (at least) armel, armhf, and arm64. Furthermore, Raspberry Pis are very popular (and indeed what most users seemed to were asking about), but the raspbian "armhf" port is incompatible with the Debian "armhf" port. Now that most hardware has moved to 64-bit, it was becoming clear that "arm64" was the way to go. Amit Khandekar made it happen that HUAWEI Cloud Services donated a arm64 build host with enough resources to build the arm64 packages at the same speed as the existing amd64, i386, and ppc64el architectures. A few days later, all the build jobs were done, including passing all test-suites. Very few arm-specific issues were encountered which makes me confident that arm64 is a solid architecture to run PostgreSQL on. We are targeting Debian buster (stable), bullseye (testing), and sid (unstable), and Ubuntu bionic (18.04) and focal (20.04). To use the arm64 archive, just add the normal sources.list entry:
deb buster-pgdg main
Ubuntu focal At the same time, I've added the next Ubuntu LTS release to focal (20.04). It ships amd64, arm64, and ppc64el binaries.
deb focal-pgdg main
Old PostgreSQL versions Many PostgreSQL extensions are still supporting older server versions that are EOL. For testing these extension, server packages need to be available. I've built packages for PostgreSQL 9.2+ on all Debian distributions, and all Ubuntu LTS distributions. 9.1 will follow shortly. This means people can move to newer base distributions in their .travis.yml, .gitlab-ci.yml, and other CI files.

24 March 2020

Christoph Berg: Announcing

Users had often asked where they could find older versions of packages from I had been collecting these since about April 2013, and in July 2016, I made the packages available via an ad-hoc URL on the repository master host, called "the morgue". There was little repository structure, all files belonging to a source package were stuffed into a single directory, no matter what distribution they belonged to. Besides this not being particularly accessible for users, the main problem was the ever-increasing need for more disk space on the repository host. We are now at 175 GB for the archive, of which 152 GB is for the morgue. Our friends from have had a proper archive host ( for some time already, so it was about time to follow suit and implement a proper archive for as well, usable from apt. So here it is: The archive covers all past and current Debian and Ubuntu distributions. The apt sources.lists entries are similar to the main repository, just with "-archive" appended to the host name and the distribution:
deb DIST-pgdg-archive main
deb-src DIST-pgdg-archive main
The oldest PostgreSQL server versions covered there are 8.2.23, 8.3.23, 8.4.17, 9.0.13, 9.1.9, 9.2.4, 9.3beta1, and everything newer. Some example:
$ apt-cache policy postgresql-12
  Installed: 12.2-2.pgdg+1+b1
  Candidate: 12.2-2.pgdg+1+b1
  Version table:
 *** 12.2-2.pgdg+1+b1 900
        500 sid-pgdg/main amd64 Packages
        500 sid-pgdg-archive/main amd64 Packages
        100 /var/lib/dpkg/status
     12.2-2.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12.2-1.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12.1-2.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12.1-1.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12.0-2.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12.0-1.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12~rc1-1.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12~beta4-1.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12~beta3-1.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12~beta2-1.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
     12~beta1-1.pgdg+1 500
        500 sid-pgdg-archive/main amd64 Packages
Because this is hosted on S3, browsing directories is only supported indirectly by static index.html files, so if you want to look at some specific URL, append "/index.html" to see it. The archive is powered by a PostgreSQL database and a bunch of python/shell scripts, from which the apt index files are built. Archiving old distributions I'm also using the opportunity to remove some long-retired distributions from the main repository host. The following distributions have been moved over: They are available as "DIST-pgdg" from the archive, e.g. squeeze:
deb squeeze-pgdg main
deb-src squeeze-pgdg main

28 March 2017

Axel Beckert: System Tray Icon to Monitor a Linux Software RAID Locally

About a year ago I bought a new workstation computer for myself at home. It s a Tuxedo XUX_Cube which is advertised as gaming PC. But I ordered a slightly atypical non-gamer configuration: Of course the box runs Debian. To be more precise, it runs Debian Sid with sysvinit-core as init system and i3 as window manager. As I usually have no monitoring clients on my laptops and private workstations, I rather often felt the urge to do a cat /proc/mdstat on that box. So at some point I wanted something like smart-notifier, but for Linux Software (MD) RAIDs. And since I found nothing, I did what Open Source guys usually do in such cases: I wrote it myself of course in Perl and called it systray-mdstat. First I wondered about which build system would be most suitable for that task, but in the end I once again went with Dist::Zilla for the upstream build system and hence dh-dist-zilla for the Debian packaging. Ideas for the actual implementation were taken from Wouter s fdpowermon for the systray icon framework in Perl and Myon s mdstat Xymon plugin for an already proven logic to parse /proc/mdstat. (Both, Wouter and Myon have stated in a GnuPG-signed e-mail that I copied less code than would validate their copyrights, so I was able to license it under a single license, namely GNU GPL version 3.) As of now, systray-mdstat is also available as package in Debian Unstable. It won t make it to Stretch as its first line of code has been written after the soft-freeze for Stretch was already in place.

29 May 2016

Christoph Berg: vcswatch is now looking for tags

About a week ago, I extended vcswatch to also look at tags in git repositories. Previously, it was solely paying attention to the version number in the top paragraph in debian/changelog, and would alert if that version didn't match the package version in Debian unstable or experimental. The idea is that "UNRELEASED" versions will keep nagging the maintainer (via DDPO) not to forget that some day this package needs an upload. This works for git, svn, bzr, hg, cvs, mtn, and darcs repositories (in decreasing order of actual usage numbers in Debian. I had actually tried to add arch support as well, but that VCS is so weird that it wasn't worth the trouble). There are several shortcomings in that simple approach: The new mechanism fixes this for git repositories by also looking at the output of git describe --tags. If there are any commits since the last tag, and the vcswatch status according to debian/changelog would otherwise be "OK", a new status "COMMITS" is set. DDPO will report e.g. "1.4-1+2", to be read as "2 commits since the tag [debian/]1.4-1". Of the 16644 packages using git in Debian, currently 7327 are "OK", 2649 are in the new "COMMITS" state, and 4227 are "NEW". 723 are "OLD" and 79 are "UNREL" which indicates that the package in Debian is ahead of the git repository. 1639 are in an ERROR state. So far the new mechanism works for git only, but other VCSes could be added as well.

24 September 2015

Lars Wirzenius: FUUG grant for Obnam development

I'm very pleased to say that the FUUG foundation in Finland has awarded me a grant to buy some hardware to help development of Obnam, by backup program. The announcement has more details in Finnish.

5 September 2015

Christoph Berg: 10 Years Debian Developer

I knew it was about this time of the year 10 years ago when my Debian account was created, but I couldn't remember the exact date until I looked it up earlier this evening: today :). Rene Engelhard had been my advocate, and Marc Brockschmidt my AM. Thanks guys! A lot of time has passed since then, and I've worked in various parts of the project. I became an application manager almost immediately, and quickly got into the NM front desk as well, revamping parts of the NM process which had become pretty bureaucratic (I think we are now, 10 years later, back where we should be, thanks to almost all of the paperwork being automated, thanks Enrico!). I've processed 37 NMs, most of them between 2005 and 2008, later I was only active as front desk and eventually Debian account manager. I've recently picked up AMing again, which I still find quite refreshing as the AM will always also learn new things. Quality Assurance was and is the other big field. Starting by doing QA uploads of orphaned packages, I attended some QA meetings around Germany, and picked up maintenance of the DDPO pages, which I still maintain. The link between QA and NM is the MIA team where I was active for some years until they kindly kicked me out because I was MIA there myself. I'm glad they are still using some of the scripts I was writing to automate some things. My favorite MUA is mutt, of which I became co-maintainer in 2007, and later maintainer. I'm still listed in the uploaders field, but admittedly I haven't really done anything there lately. Also in 2007 I started working at credativ, after having been a research assistant at the university, which meant making my Debian work professional. Of course it also meant more real work and less time for the hobby part, but I was still very active around that time. Later in 2010 I was marrying, and we got two kids, at which point family was of course much more important, so my Debian involvement dropped to a minimum. (Mostly lurking on IRC ;) Being a PostgreSQL consultant at work, it was natural to start looking into the packaging, so I started submitting patches to postgresql-common in 2011, and became a co-maintainer in 2012. Since then, I've mostly been working on PostgreSQL-related packages, of which far too many have my (co-)maintainer stamp on them. To link the Debian and PostgreSQL worlds together, we started an external repository ( that contains packages for the PostgreSQL major releases that Debian doesn't ship. Most of my open source time at the moment is spent on getting all PostgreSQL packages in shape for Debian and this repository. According to minechangelogs, currently 844 changelog entries in Debian mention my name, or were authored by me. Scrolling back yields memories of packages that are long gone again from unstable, or I passed on to other maintainers. There are way too many people in Debian that I enjoy(ed) working with to list them here, and many of them are my friends. Debian is really the extended family on the internet. My last DebConf before this year had been in Mar del Plata - I had met some people at other conferences like FOSDEM, but meeting (almost) everyone again in Heidelberg was very nice. I even remembered all basic Mao rules :D. So, thanks to everyone out there for making Debian such a wonderful place to be!

2 July 2015

Christoph Berg: PostgreSQL 9.5 in Debian

Today saw the release of PostgreSQL 9.5 Alpha 1. Packages for all supported Debian and Ubuntu releases are available on deb YOUR_RELEASE_HERE-pgdg main 9.5 The package is also waiting in NEW to be accepted for Debian experimental. Being curious which PostgreSQL releases have been in use over time, I pulled some graphics from Debian's popularity contest data: Before we included the PostgreSQL major version in the package name, "postgresql" contained the server, so that line represents the installation count of the pre-7.4 releases at the left end of the graph. Interestingly, 7.4 reached its installation peak well past 8.1's. Does anyone have an idea why that happened?

4 February 2015

Christoph Berg: statistics

At this year's FOSDEM I gave a talk in the PostgreSQL devroom about Large Scale Quality Assurance in the PostgreSQL Ecosystem. The talk included a graph about the growth of the repository that I want to share here as well: The yellow line at the very bottom is the number of different source package names, currently 71. From that, a somewhat larger number of actual source packages that include the "pgdgXX" version suffixes targeting the various distributions we have is built (blue). The number of different binary package names (green) is in about the same range. The dimension explosion then happens for the actual number of binary packages (black, almost 8000) targeting all distributions and architectures. The red line is the total size of the pool/ directory, currently a bit less than 6GB. (The graphs sometimes decrease when packages in the -testing distributions are promoted to the live distributions and the old live packages get removed.)

9 July 2014

Christoph Berg: New urxvt tab in current directory

Following Enrico's terminal-emulators comparison, I wanted to implement "start a new terminal tab in my current working directory" for rxvt-unicode aka urxvt. As Enrico notes, this functionality is something between "rather fragile" and non-existing, so I went to implement it myself. Martin Pohlack had the right hint, so here's the patch:
--- /usr/lib/urxvt/perl/tabbed  2014-05-03 21:37:37.000000000 +0200
+++ ./tabbed    2014-07-09 18:50:26.000000000 +0200
@@ -97,6 +97,16 @@
       $term->resource (perl_ext_2 => $term->resource ("perl_ext_2") . ",-tabbed");
+   if (@  $self-> tabs   )  
+      # Get the working directory of the current tab and append a -cd to the command line
+      my $pid = $self-> cur pid ;
+      my $pwd = readlink "/proc/$pid/cwd";
+      #print "pid $pid pwd $pwd\n";
+      if ($pwd)  
+         push @argv, "-cd", $pwd;
    push @urxvt::TERM_EXT, urxvt::ext::tabbed::tab::;
    my $term = new urxvt::term
@@ -312,6 +322,12 @@
+sub tab_child_start  
+   my ($self, $term, $pid) = @_;
+   $term-> pid  = $pid;
+   1;
 sub tab_start  
    my ($self, $tab) = @_;
@@ -402,7 +418,7 @@
 # simply proxies all interesting calls back to the tabbed class.
-   for my $hook (qw(start destroy key_press property_notify))  
+   for my $hook (qw(start destroy key_press property_notify child_start))  
       eval qq 
          sub on_$hook  
             my \$parent = \$_[0] term parent 

25 June 2014

Christoph Berg: Comparing Version Numbers in Shell

On RedHat/CentOS/rpm systems, there's no dpkg --compare-versions available - sort -V can help to compare version numbers:
version_lt ()  
    newest=$( ( echo "$1"; echo "$2" )   sort -V   tail -n1)
    [ "$1" != "$newest" ]
$ version_lt 1.5 1.1 && echo yes
$ version_lt 1.5 1.10 && echo yes

16 May 2014

Christoph Berg: PostgreSQL 9.4 on Debian

Yesterday saw the first beta release of the new PostgreSQL version 9.4. Along with the sources, we uploaded binary packages to Debian experimental and, so there's now packages ready to be tested on Debian wheezy, squeeze, testing/unstable, and Ubuntu trusty, saucy, precise, and lucid. If you are using one of the release distributions of Debian or Ubuntu, add this to your /etc/apt/sources.list.d/pgdg.list to have 9.4 available: deb codename-pgdg main 9.4 On Debian jessie and sid, install the packages from experimental. Happy testing!

25 February 2014

Christoph Berg: Trusty and Saucy on

Over the past few weeks, new distributions have been added on Ubuntu 13.10 codenamed "saucy" and the upcoming Ubuntu LTS release 14.04 codenamed "trusty". Adding non-LTS releases for the benefit of developers using PostgreSQL on their notebooks and desktop machines has been a frequently requested item since we created the repository. I had some qualms about targeting a new Ubuntu release every 6 months, but with having automated more and more parts of the repository infrastructure, and the bootstrapping process now being painless, the distributions are now available for use. Technically, trusty started as empty, so it hasn't all packages yet, but of course all the PostgreSQL server packages are there, along with pgAdmin. Saucy started as a copy of precise (12.04) so it has all packages. Not all packages have been rebuilt for saucy, but the precise packages included (you can tell by the version number ending in .pgdg12.4+12 or .pgdg13.10+1) will work, unless apt complains about dependency problems. I have rebuilt the packages needing it I was aware about (most notably the postgresql-plperl packages) - if you spot problems, please let us know on the mailing list. Needless to say, last week's PostgreSQL server updates are already included in the repository.

12 February 2014

Christoph Berg: on DDPO

More and more packages are getting autopkgtest aka DEP-8 testsuites these days. Thanks to Antonio Terceiro, there is" running the tests. Last weekend, I've added a "CI" column on DDPO that shows the current test results for your packages. Enjoy, and add tests to your packages!

8 December 2013

Christoph Berg: TF101 flickering and a loose cable

My ASUS Transformer TF101 had suddenly started flickering in all sorts of funny colors some weeks ago. As tapping it gently on the table in the right angle made the problem go away temporarily, it was clear the problem was about a loose cable, or some other hardware connection issue. As I needed to go on a business trip the other day, I didn't look up the warranty expiration day until later that week. Then, Murphy struck: the tablet was now 2 years + 1 day old! Calling ASUS, some friendly guy there suggested I still tried to get ASUS to accept it for warranty, because the tablet had been with them last year for 5 days, so if they added that, it would still be within the warranty period. I filled out the RMA form, but one hour later the reply was they rejected it because it was out of warranty. Another guy on the phone then said they would probably only do the adding if it had been with them for maybe 10 days, or actually really 30 days, or whatever. Some googling suggested that the loose cable theory was indeed worth a try, so I took it apart. Thanks to a forum post I could then locate the display connector and fix it. Putting the case back together was actually harder than disassembling it because some plastic bits got stuck, but now everything is back to normal.

15 September 2013

Christoph Berg: Jessie, the HP 6715b, and Wifi

If you are upgrading your HP/Compaq 6715b to Debian Jessie, and suddenly Wifi stops working because the PCI device is gone, install the "rfkill" package:
# lspci   tail -2
02:04.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 02)
10:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express (rev 02)
# rfkill list 1
1: hp-wifi: Wireless LAN
    Soft blocked: yes
    Hard blocked: no
# rfkill unblock wifi
# rfkill list 1
1: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
# lspci   tail -2
10:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express (rev 02)
30:00.0 Network controller: Broadcom Corporation BCM4311 802.11a/b/g (rev 02)
Reports on the internet say that the same could be done by going into the BIOS and selecting "Reset to default" - this makes the Wifi LED active until about udev is started on the next boot. To be done: figure out how to automate this.

31 July 2013

Christoph Berg: Version Numbers

Following an idea by Ansgar Burchardt, I've done some digging on version numbers in Debian: Most common version numbers:
projectb=> select version::text, count(*) from source group by 1 order by 2 desc;
  version     count 
 4:4.10.5-1     131
 1.0-1          120
 1.0.0-1         95
 1.1-1           95
 1.0.1-1         93
 1.2-1           88
 1.0-2           82
 0.2-1           80
 0.3-1           79
 0.5-1           77
 0.04-1          76
 1.1.1-1         76
 0.10-1          74
 1.4-1           72
 1.1-2           71
 0.1-1           70
 0.11-1          70
Version number with the most spellings: (considered equal by the dpkg definition, implemented in the "debversion" type)
projectb=> select version::text, count(*) from source where version = '1.02-1' group by 1 order by 2 desc;
  version     count 
 1.2-1           88
 1.02-1          46
 1.002-1          4
 1.000002-1       1
 001.002-1        1
 1.00002-1        1
If we look at equivalent version numbers, the first table above looks entirely different:
projectb=> select version, count(*) from source group by 1 order by 2 desc limit 30;
  version     count 
 0.3-1          162
 1.0-1          160
 0.05-1         156
 0.04-1         154
 0.02-1         151
 1.02-1         141
 0.006-1        133
 1.001-1        131
 4:4.10.5-1     131
 0.7-1          127
(I'm also participating in the "longest version number" contest, I've just uploaded bind9 version 1:9.8.4.dfsg.P1-6+nmu2+deb7u1~bpo60+1 to backports.)

25 March 2013

Christoph Berg: How not to monitor a boolean

We were lazy and wrote a simple PostgreSQL monitoring check in shell instead of using some proper language. The code looked about this:
out=$(psql -tAc "SELECT some_stuff, t > now() - '1 day'::interval FROM some_table" some_db 2>&1)
case $out in
    *t) echo "OK: $out" ;;
    *) echo "NOT OK: $out" ;;
If the string ends with 't', all is well, if it ends with 'f' or someting else, something is wrong. Unfortunately, this didn't go that well: OK: psql: FATAL: database "some_db" does not exist

7 February 2013

Christoph Berg: PostgreSQL minor releases

We've just put the new PostgreSQL minor releases live on Building 5 major versions for 10 distributions produces quite a lot of stuff: Compiling took a bit more than 10 hours on a 2-cpu VM. Of course that includes running regression tests and the postgresql-common testsuite. Note: This will be the last update published on Please update your sources.list entries to point to!

7 December 2012

Christoph Berg:

So we finally made it, and sent out an official announcement for This new repository hosts packages for all PostgreSQL server versions (at the moment 8.3, 8.4, 9.0, 9.1, 9.2) for several Debian/Ubuntu distributions (squeeze, wheezy, sid, precise) on two architectures (amd64, i386). Now add packages for extension modules on top of all these, and you get a really large amount of binaries from a small number of sources. Right now there's 1670 .deb files and 148 .dsc files, but the .dsc count includes variants that only differ in the version number per distribution (we attach .pgdg60+1 for squeeze packages, .pgdg70+1 for wheezy and so on), so the real number of different sources is rather something like 81, with 38 distinct source package names. Dimitri Fontaine, Magnus Hagander, and I have been working on this since I first presented the idea at PGconf.EU 2011 in Amsterdam. We now have a Jenkins server building all the packages, an archive server with the master repository, and a feed that syncs the repository to the FTP (well, mostly http) server. If you were previously using, that's the same archive as on (one rsync away). Please update your sources.list to point to, I'll shut down the archive at that location at the end of January. Here's the Quickstart instructions from the Wiki page: Import the repository key from
wget -O -   sudo apt-key add -
Edit /etc/apt/sources.list.d/pgdg.list. The distributions are called codename-pgdg. In the example, replace squeeze with the actual distribution you are using:
deb squeeze-pgdg main
Configure apt's package pinning to prefer the PGDG packages over the Debian ones in /etc/apt/preferences.d/pgdg.pref:
Package: *
Pin: release
Pin-Priority: 500
Note: this will replace all your Debian/Ubuntu packages with available packages from the PGDG repository. If you do not want this, skip this step. Update the package lists, and install the pgdg-keyring package to automatically get repository key updates:
apt-get update
apt-get install pgdg-keyring

30 November 2012

Christoph Berg: pgbouncer running on the same hardware

We have a PostgreSQL server with 16 cores that was apparently running well below its capacity: load something between 3.0 and 4.0, around 200 active database connections, almost all always being <IDLE>. However, when the tps count reached 7k transactions per second, things started to throttle, and pgbouncer (running on the database server) started listing up to half of the client connections to be in cl_waiting state. Load was still low, but application performance was bad. The culprit turned out to be the kernel scheduler, fairly distributing CPU time among all running processes. There's one single pgbouncer process, but hundreds of postgres processes. A simple renice of the pgbouncer process did the trick and gave us another extra 2k tps.