In Ubuntu LTS, applications are locked to the version fixed to the release date. For Ubuntu 22.04 "Jammy" those are:
I would like to install the latest upstream versions of these applications on my home server.
How can I do this in an easy and reliable way?
This can be done in at least two ways (the Snap way and the Debian way) - but I greatly prefer the Debian method. It's also possible to mix and match of you prefer, and install some apps with Snap, and some with Debian packages.
Please note that neither of these methods are recommended for production use, but both should be perfectly suitable for home use.
The Snap Way
This method will give you updated versions of apps, provided there is a Snap maintainer that regularly updates the packages. Unfortunately, this is not always the case. Another benefit is that apps auto-update with new releases.
Some popular command-line apps are available as Snap packages.
Each of these apps can be installed from the command line:
nano: (not recommended at the moment, since the snap seems abandoned)
htop:
tmux:
lnav:
If you choose to do so, remove the corresponding Debian packages:
My own experience with these Snap packages are somewhat mixed, which is why I choose the Debian method described below. Examples of problems I experienced:
Another general issue with snaps is that the manpages are not easily available - it requires a dirty hack to even get them working.
The Debian Way
This method will give you updated versions of apps, provided there is a Debian maintainer that regularly updates the packages. This is usually the case. In this scenario, you have to manually update the packages with each new release. Also, since Debian and Ubuntu are not 1:1 binary compatible, issues may in rare occasions arise from this method. Always try on a VM first!
With this method, you install updated versions directly from the Debian testing or unstable branches. This is somewhat experimental, but should still be safe for home use - and rather easy to rollback to a previous version in any case. I've done this for over 2 years without any problems whatsoever. The only drawback is that you have to manually update the applications installed in this way.
First, you locate the applications in the Debian Sid branch (usually has the latest packages):
Then, for each package check that the dependencies are actually compatible with your Ubuntu version. They usually are - but in the very end of the Ubuntu LTS cycle, there may be some cases where Debian uses a newer version of a library than Ubuntu - pay attention to this.
Now, create a directory, and download the correct version of each package (here for
amd64
architecture, version of 2022.12.20):Finally, install the packages from these files (version of 2022.12.20): (I usually test the installation on a VM first, before I install on a physical server)
Now you have the latest upstream versions of these applications installed. Please be careful to check the configuration files after each upgrade, since there can be changes in syntax etc. that needs to be fixed.
For the advanced user, you could create a script that monitors new versions of these Debian packages, and send you an alert when this is the case.
The Homebrew way
Install Homebrew -- it's generally known as a package installer for MacOS, but it works perfectly well on Linux.
The versions available for those tools:
To install them:
They will install into a separate directory that you'll have to add to the start of your PATH. On my Ubuntu system, it's
/home/linuxbrew/.linuxbrew/bin
. The installer will guide you there.There is an additional option that I have not yet explored myself - but it might be interesting for some users.
The Pacstall way
Please note that this could be considered experimental - the usual disclaimer applies - never run anything you don't trust.
A project exists called "Pacstall" - it corresponds to the Arch User Repository, by making easy-to-run install scripts for updated Ubuntu packages.
The installation method may vary - it can be compiling,
.deb
packages, and other installation methods as well.Pacstall is installed by running their install script:
This will install the application itself. You may need additional binaries for compilation:
After this is done, you can use the
pacstall
command to install supported applications. From the apps listed in the question, the following are currently available:The install script for each application is executed with the
pacstall
command, i.e.:This would be the easy way to install the correct binaries or compile supported applications from source.