Installing Firefox as a package instead of a Snap on Ubuntu 22.04 LTS

The snap packaging system is a convenient way to install containerised applications.

However, containerisation of applications has drawbacks, including an inability to communicate directly with other applications on the system (after all, that's kind of the point of process isolation).

In Ubuntu 22.04 (Jammy Jellyfish), the Firefox browser has been moved over to using a snap package rather than a .deb, and the package in the repos is now just a wrapper triggering install of the snap.

Whilst process isolation does bring some security benefit, it also means that password managers such as KeepassXC are rendered useless because the Firefox extension can no longer communicate with the database.

Broken comms

Frustratingly, this isn't a surprise: a lot of things broke when Canonical moved Chromium to snap a couple of years back. That browsers are being moved over without the underlying problems being fixed is troubling.

However, it is possible to remove the Firefox snap and install as a native package instead.

This documentation details the process of uninstalling the Firefox snap, adding a repository and giving it's Firefox package priority over the one in the default repos.


Process

Become root

sudo -s

Remove the snap

snap remove firefox

Add the Mozilla Team PPA

add-apt-repository ppa:mozillateam/ppa

Increase the priority of it's firefox package

printf 'Package: firefox\nPin: release o=LP-PPA-mozillateam\nPin-Priority: 1500\n' | tee /etc/apt/preferences.d/mozilla-firefox

Note: If you also want to take thunderbird from the PPA, set Package: * in the string above instead

Install Firefox

apt-get -y install firefox

If you launch Firefox, you should now have the non-snap version installed.

Because we've added the PPA, unattended-upgrades (if enabled) should automatically install updates for you.


Conclusion

Snap packages undoubtedly have their place, but (IMO) they're extremely poorly suited for applications that are often extended.

They're also a terrible option for browsers, not just because of things like extension communications but also because they also tend to bundle in things like certificate stores: ignoring the system's trust-store in favour of one outside the control of the end-user.

Snap chromium broke extensions, trust store and PulseAudio

Back in 2020, moving Chromium from snap was a hacky mess, thankfully, moving Firefox back out of snap is much less painful and can be completed in a couple of quick steps.