Maemo 5 Fremantle

As of now, debian.dev-zero.nl also carries a repository for Maemo 5 Fremantle. Maemo is the Debian-based operating system created by Nokia, running on N810 internet tablets and N900 phones. Development of Maemo at Nokia has come somewhat to a halt, since first MeeGo was announced, and later Nokia announced the strategic partnership with Microsoft to switch to Windows Phone 7 devices.

Since I own a N900, and every now and then, I need a package that is not available from Nokia’s, or other community-driven repositories, I decided to host the packages that I build myself on this website. To get the packages, add this to your sources.list:

deb http://debian.dev-zero.nl/debian/ fremantle main

At this time, two packages are available here:

  • libncursesw5, copied from repository.maemo.org, because it is only in the SDK repository and it is a dependency of Zsh
  • zsh 4.3.12, ported from Debian unstable, built using the Maemo SDK

If any more packages are added in the future, I will write about it on this blog.

Update 5 Sep 2011:

The package ‘libncursesw5’ was removed from the repository, because it is available in downloads.maemo.nokia.com, one of the repositories that is configured on a Maemo 5 device by default.

Incron: easy use of the inotify system

This is just a short post, to point out the convenience of a tool named ‘incron‘. Incron is described as an ‘inotify cron‘ system. It behaves much like traditional cron, but instead of time periods, filesystem events are used to trigger certain actions.

In my daily work, quite often I come across situations, where I have to post-process files, that are uploaded to a certain place. For example, a third party regularly uploads video files to one of our servers, and when they do, I have to make sure they are transcoded to a different audio and video format. Enter ‘incron’. It allows you, in a crontab kind of way to define commands, that have to be executed when certain files or directories change.

I have an incron-tab entry, that looks like this:

/home/vod/videofiles IN_MOVED_TO /usr/local/bin/process_upload $#

/home/vod/videofiles is a directory, and when a file is moved into that directory (which is done by the uploading party, through the FTP server) and subsequently the inotify event ‘IN_MOVED_TO‘ is triggered, the process_upload script is fired, with the name of the file (specified as ‘$#‘) as its first argument. Couldn’t be simpler.

Take a look at incron’s web page for more use cases, examples and documentation.

Recording audio in Ubuntu

Today, I was looking for a way -on my Ubuntu Lucid workstation- to record audio, but not from a specific source, but let’s say the audio from ‘the system’. In particular, I wanted to record the audio output of a Windows application running under Wine.

After some googling, I found this blog posting, that explains how to record audio from the ‘monitor’ source of a Pulseaudio device. Just what I needed! So I wrote the script below. It uses Gstreamer for the recording, but some ideas for other tools are included as well.

#!/bin/zsh
# A script to record audio from a pulseaudio monitor device
# Needed packages:
# - pulseaudio-utils (for pactl and -if wanted- parec)
# - gstreamer0.10-tools (for gst-launch-0.10)
# - gstreamer0.10-plugins-ugly-multiverse (for lame mp3 encoder)
# - gstreamer0.10-plugins-good (for wavenc)
# - lame (for lame, if wanted)
#
# Ideas from
# http://www.outflux.net/blog/archives/2009/04/19/recording-from-pulseaudio/

FORMAT=mp3
OUT=$1
d=

while getopts wa i
do
 case "$i"
 in
  w)
   FORMAT=wav
   ;;
  a)
   d=`date +%Y%m%d%H%M%S`
   ;;
 esac
done

shift "$(($OPTIND - 1))"

if [ "$d" != "" ]
then
 OUT="/tmp/$d.$FORMAT"
fi

if [ "$OUT" = "" ]
then
 echo "Usage: `basename $0` [-w] " >&2
 echo "       `basename $0` -a" >&2
 echo "Options:" >&2
 echo " -w               use wav encoding instead of mp3" >&2
 echo " -a               auto-filename, /tmp/.(mp3|wav)" >&2
 exit 1
fi

monitor=$(pactl list | grep -m 1 'Monitor Source' | awk '{print $3}')
if [ "$monitor" = "" ]
then
 echo "Error: no monitor device found" >&2
 exit 1
fi

echo "Using monitor: $monitor"
echo "Recording to : $OUT"
echo "File format  : $FORMAT"

encoder="lame vbr=4 vbr-quality=2"
if [ "$FORMAT" = "wav" ]
then
 encoder="wavenc"
fi

# Some ideas for use of other tools instead of Gstreamer:
#   parec -d "$monitor" | sox -t raw -r 44100 -sLb 16 -c 2 - $OUT.wav
#   parec -d "$monitor" | sox -t raw -r 44100 -sLb 16 -c 2 - $OUT.wav silence 1 0.50 0.1% 1 2.0 0.1% : newfile : restart
#   parec -d "$monitor" | lame -rh - $OUT

gst-launch-0.10 pulsesrc device=$monitor ! queue ! \
  audio/x-raw-int,rate=44100,channels=2 ! audioconvert ! \
  $encoder ! filesink location=$OUT

I hope it will be of use to anyone.

Distributed Checksum Clearinghouse

Distributed Checksum Clearinghouse, a.k.a. DCC is an anti-spam content filter, that works by comparing checksums of received mail, to recognize (and possibly block) unsollicited bulk e-mail. At DevZero.nl, over 50% of the SPAM we receive, is found with DCC, and there are very few false positives. DCC has been around for more than 10 years, but unfortunately, its license does not comply with the DFSG and it was removed from Debian in 2008.

Debian.dev-zero.nl has carried a Debian package for DCC since it was founded, but it hasn’t been updated in quite a while. The version that was in the archive (1.3.102) dated from February 2009. The latest version, that was released on November 9, 2010 is 1.3.134, and this version was packaged and uploaded to lenny-custom today.

As usual, both i386 and amd64 packages are available. A small warning: the packages have not been  tested extensively, but I run them in production, so any problems that arise, I will fix.

PHP 5.3.3-7

Last Wednesday, PHP 5.3.3-7 was uploaded to unstable. This version contains about 15 patches for problems that have been fixed in newer versions upstream, including a problem on 32-bit installations with large floating point numbers, that could crash or hang your server.

Enough reason for a new backport, so as of now, this version (5.3.3-7tzz1~bpo50) is available on debian.dev-zero.nl, in lenny-custom. It is i386-only at the moment, amd64 will follow soon.

My own changelog additions are:

php5 (5.3.3-7tzz1) unstable; urgency=low
* Packaged for Lenny
* Added a patch to allow the 5th argument of mail() in safe mode
  (001-safe_mode_mail_arg5_ok.patch)
* Change build-dep on automake from 1.11 to automake (>= 1.10) |
  automake1.11 | automake1.10
-- Martijn Grendelman <m@rtijn.net>  Wed, 05 Jan 2011 16:35:51 +0100

Exim 4.72

Earlier this month, a serious security vulnerability was discoverd in Exim.  While a security update for Lenny’s version 4.69-9 was released the very same day, different versions remain vulnerable. On December 26th, version 4.72-3 was uploaded to Unstable, containing the fixes for this issue from upstream’s version 4.73 RC1.

I am sure, that this version will enter Lenny-backports when it hits Testing, but until then, a Lenny build is available from debian.dev-zero.nl. As usual, both i386 and amd64 are here.

Please note that this package was built against libdb4.8 from Lenny-backports, so you can not install this package without access to the backports repository.

Update January 7, 2011: exim4 4.72-3~bpo50+1 has entered backports.debian.org yesterday, so the exim4 packages have been removed from debian.dev-zero.nl

Removals

The following outdated packages have just been removed from the archive:

  • zaptel-modules-2.6.26-1-amd64
  • zaptel-modules-2.6.26-1-686
  • cciss-vol-status
  • debian-sipo-keyring
  • apache2 and everything related, they are available on backports.debian.org now
  • libapr1, libapr1-dbg, libapr1-dev, they are available on backports.debian.org now
  • libaprutil1 and everything related, they are available on backports.debian.org now

Many other outdated packages (mostly VLC and other multimedia-stuff) will remain in the archive, but will not be updated anymore. Since I have upgraded my workstation to Squeeze, I haven’t got any way to test the packages before I upload them. Other packages may receive updates.

PHP 5.3.3

It took a while -as a matter of fact, this is the first update to the repository in over 8 months- but today, the latest version of PHP was uploaded to debian.dev-zero.nl. While PHP 5.3.3 was already released in July by the PHP development team, it took until late October for the first release by the Debian maintainer team to reach unstable. After that, four more uploads were done, and with version 5.3.3-6, things seem to have stabalized a little and this version migrated to testing on December 13th.

As usual, the PHP packages are available in lenny-custom, for both amd64 and i386.

PHP 5.3.2

On March 4th, PHP 5.3.2 was released by the PHP development team and on March 13th, it was uploaded to Unstable. Today, this version (5.3.2-1) was backported to Lenny and uploaded to lenny-custom.

As usual, both amd64 and i386 are available.

Apache updated

The backport of Apache 2.2 was updated to 2.2.15-2 from Testing. In Testing/Unstable, this package (apache2.2-bin, to be precise)  has a dependency on libssl >= 0.9.8m, because of some fixes concerning secure session renegotiation in mod_ssl. However, this version was built against Lenny’s 0.9.8g.

For more information on secure session renegotiation in OpenSSL, see  its documentation.

Packages are available for i386 and am64, as usual.