How to Force Downgrade PulseAudio Packages on Ubuntu Karmic: A Step-by-Step Solution


3 views

When working with Ubuntu's alpha/beta releases like Karmic, package regressions are common. The PulseAudio upgrade from version 0.9.15 to 0.9.16~test4 demonstrates this perfectly - breaking microphone functionality while offering no simple rollback path through standard package managers.

The core issue emerges when Synaptic's "Force Version" option is grayed out. This typically happens when:

1. Newer packages have version-locked dependencies
2. The package is marked as "essential"
3. Downgrading would break reverse dependencies

Here's how to safely downgrade without removing ubuntu-desktop:

# First download all necessary .deb files
wget http://old-releases.ubuntu.com/ubuntu/pool/main/p/pulseaudio/pulseaudio_0.9.15-4ubuntu3_amd64.deb
# Repeat for all required packages from the old release

# Create a holding directory
mkdir ~/pulseaudio_downgrade
mv *.deb ~/pulseaudio_downgrade
cd ~/pulseaudio_downgrade

# Install all packages simultaneously to avoid dependency hell
sudo dpkg -i *.deb

# Force hold the packages to prevent auto-upgrade
sudo apt-mark hold pulseaudio libpulse0

For a more maintainable solution, create apt preferences:

# /etc/apt/preferences.d/pulseaudio-pin
Package: pulseaudio libpulse*
Pin: version 0.9.15*
Pin-Priority: 1001

Confirm successful downgrade with:

dpkg -l | grep pulseaudio
pactl list sinks
# Check microphone functionality with:
parec --format=s16le --channels=1 --rate=44100 --latency=4m | sox -t raw -r 44100 -e signed-integer -b 16 -c 1 - -d

If you encounter dependency problems, this script can help:

#!/bin/bash
for pkg in pulseaudio libpulse0; do
    sudo apt-get install --reinstall "$(apt-cache show $pkg | 
    grep -E "^Version: 0.9.15" -A 20 | 
    grep -oP "Filename: \K.*" | head -1)"
done

After downgrade, verify system integrity:

sudo apt-get check
sudo apt-get -f install
sudo dpkg --configure -a

When testing bleeding-edge packages on Ubuntu Karmic (9.10 alpha), I encountered microphone functionality breaking after updating pulseaudio to version 0.9.16~test4. The issue lies in the transitional state of Karmic's audio stack during alpha development. Here's how I safely reverted to the stable 0.9.15 version without breaking system dependencies.

The pulseaudio ecosystem consists of several interdependent packages. Attempting to remove them directly would trigger removal of ubuntu-desktop meta-package due to these dependency chains:

pulseaudio → libcanberra-pulse → libcanberra-gtk → ubuntu-desktop

First, download all previous versions of the affected packages from Ubuntu's package archives:

wget http://old-releases.ubuntu.com/ubuntu/pool/main/p/pulseaudio/\
pulseaudio_0.9.15-4ubuntu3_i386.deb
wget http://old-releases.ubuntu.com/ubuntu/pool/main/p/pulseaudio/\
libpulse0_0.9.15-4ubuntu3_i386.deb
# Repeat for all packages listed in the question

Use dpkg with force options to bypass version checks while preserving dependencies:

sudo dpkg -i --force-downgrade --force-depends \
pulseaudio_0.9.15-4ubuntu3_i386.deb \
libpulse0_0.9.15-4ubuntu3_i386.deb

After downgrading core packages, fix potential dependency issues with:

sudo apt-get -f install
sudo apt-mark hold pulseaudio libpulse0

Confirm the downgrade was successful with:

dpkg -l | grep pulseaudio
pactl list short

Until Karmic stabilizes, pin the packages in /etc/apt/preferences:

Package: pulseaudio*
Pin: release a=karmic-updates
Pin-Priority: -1