Ubuntu Enhanced (experimental)

PPA description

See https://github.com/savoury1/ubuntu-rolling for detailed procedures relating to this package and how to (even significantly) upgrade your own Xenial-based system with packages from newer than Xenial series of Ubuntu.

UPDATE (Oct 2020): The initial idea behind this experimental PPA was to give Xenial users a way to keep their system quite up-to-date with newer software. In the time since this PPA was created (Aug 2019) many other PPAs have been added to this Launchpad site with "proper" backports of almost all the software that the "enhancement" process was to provide. Thus, this PPA is somewhat redundant, though the enhancement to "apt-cache policy" (show the version of a package in numerous different series with one terminal command) is still very useful.

-----START EXPERIMENTAL WARNING-----

This package is related to an experimental project and should be understood as not being necessarily useful (and even potentially quite dangerous, in terms of system stability/functionality) for regular users of Ubuntu and Ubuntu-based distributions.

If you know at least some amount about Debian packages, Debian packaging (and manually running apt & dpkg commands, for instance) then you might well see the uses of this project (enhancement to the apt-cache command for instance).

If you know a good amount about Debian packages, Debian packaging and perhaps even write complex combinations of apt and/or dpkg(-deb) commands in arcane Bash scripts AND want a to-your-needs custom-built Xenial-based Ubuntu (sort of) "rolling release" system, then dive on in!

For users whose knowledge (relative Debian/Ubuntu packaging and/or any Linux based distribution packaging) lies in between (or experts with knowledge far beyond) the two above stated broad groups of users: it is up to you if you want to experiment with this package and/or the procedures at the website.

*** The entire responsibility for any system breakage lies with the person(s) who use this package and/or the info/scripts given at the linked website. ***

So it's on you if you break it folks! And if that (perhaps) unfortunately happens, it's also a chance to learn potentially plenty about how to fix it (a big part of this whole process for me, for sure).

*** No warranty given, no liability whatsoever for me, so on, so forth. ***

-----END EXPERIMENTAL WARNING-----

This is a small package that adds the full set of standard repositories for 14 other Ubuntu "series" to the installed system, as well as a small bash script called "apt-all" that allows usage of "sudo apt-get install" commands relative the repositories of any of the 14 other series.

New "<series>-repositories-lo.pref" & "<series>-repositories-hi.pref.save" files (for the 14 other series) are created in /etc/apt/preferences.d (simple binary switch pinning system) and new "official-repos-<series>.list" files are created in /etc/apt/sources.list.d/ (identical to default "official-package-repositories.list" files for each series, renamed to "official-package-repos-<series>.list" so that all can co-exist on the one system). As stated, one small script "apt-all" is also added (to /usr/bin).

This package was designed and created on a Xenial-based system (Linux Mint 18.1 Serena MATE) with the intention of keeping Serena up-to-date far beyond the Xenial LTS EOL (the original package was called "serena-enhanced" on the test system used for all this work). MATE 1.16 based on GTK2 is great for me (MATE 1.18+ is now GTK3 based), as my consistent preference for more than 30 years of GUI-based computer operating system usage is for a simple, fast, visually uncluttered desktop experience.

Thus, it became important to be able to upgrade Serena (while keeping GTK2 based MATE 1.16) to Bionic-era (and newer) packages. The "ubuntu-enhanced" package in this PPA and this whole project is the result of that intention to make a Serena Enhanced (initially) and then more general Xenial Enhanced "rolling release" installation process.

Having 15 series of packages and package information (specifically Xenial, Bionic, Cosmic, Disco, Eoan, Focal, Groovy, Hirsute, Impish, Jammy, Kinetic, Lunar, Mantic, Noble, and Oracular) available can be very useful in various situations (ie. see the "apt-cache" section below). From ubuntu-enhanced v0.15.0 packages from 15 series are included. Based on the currently installed series the installation process of ubuntu-enhanced will determine the 14 other series to add to the apt/dpkg system (with low pin priority being default) such that one can access packages (and package info) from all 15 series.

*** Scripted pinning -- apt/dpkg ***

The "apt-all" script is key and if you take away the shebang + printargs + comments + whitespace (and compress a couple of commands to easy one-liners) it is about 30 lines of Bash commands.

What "apt-all" does is switch the name (using a ".save" filename extension) on the pin file (in /etc/apt/preferences.d) for one selected other series, giving that series temporary priority (990) over your own (500 by default). Then "apt-all" runs a standard "sudo apt-get install" command, thus giving the user access to all the packages in the single specified other series.

There are a few lines of code to monitor for a break signal to (try) ensure the file pinning a series other than that installed ends up with the default filename (ie. "<series>-repositories-hi.pref.save" in /etc/apt/preferences.d) once apt-all completes execution. So as to ensure other series usually have low priority (50) which is the default "state" for the setup (safe, no potential danger to system stability except if/when "apt-all" is invoked).

*** Power failures / why not sed / etc ***

Yes, sed could certainly be used to change the pin priority for the specified other series, but in the event of an entirely unexpected situation (ie. power failure, common in many parts of the world at least) you can end up with the other series still having high priority (on system restart and/or whenever next running an apt-get command).

So by using a simple renaming trick ("everything's a file" -- in this case, a set of files whose names show the toggle state for high pin preference of other series) in the event of power (or other) failure it is easy to see the current status. If any of the 14 "<series>-repositories-hi.pref.save" files in /etc/apt/preferences.d do NOT have a ".save" extension (and instead end only with ".pref") then something failed.

To fix a situation like this one simply needs to invoke "apt-all" again (no arguments necessary) as it always automatically renames any current hi pins (ie. "<series>-repositories-hi.pref" in /etc/apt/preferences.d) with correct ".save" extensions to clean-up after any possible previous failure.

There is also some error handling in "apt-all" relative a critical config file /etc/apt/otherseries that is created by ubuntu-enhanced on installation. That config file should ONLY have precisely 14 series names (other than your own) in it. The sanity check in "apt-all" is likely not foolproof if you put unexpected data in /etc/apt/otherseries so best not to modify that file (there should be no need to in any case).

*** apt-cache becomes more powerful ***

Even if you never use the "apt-all" script to grab packages from series other than your own, having the additional other repository pref files installed in the /etc/apt/preferences.d directory with low pin value (50) makes the apt-cache commands more powerful. For instance:

$ apt-cache policy meld
meld:
  Installed: 3.20.4-0ubuntu1~16.04.sav0
  Candidate: 3.20.4-0ubuntu1~16.04.sav0
  Version table:
     3.22.2-1 50
         50 http://mirrors.kernel.org/ubuntu noble/universe amd64 Packages
         50 http://mirrors.kernel.org/ubuntu noble/universe i386 Packages
         50 http://mirrors.kernel.org/ubuntu oracular/universe amd64 Packa
         50 http://mirrors.kernel.org/ubuntu oracular/universe i386 Packag
     3.22.0-2 50
         50 http://mirrors.kernel.org/ubuntu lunar/universe amd64 Packages
         50 http://mirrors.kernel.org/ubuntu lunar/universe i386 Packages
         50 http://mirrors.kernel.org/ubuntu mantic/universe amd64 Package
         50 http://mirrors.kernel.org/ubuntu mantic/universe i386 Packages
     3.22.0-1 50
         50 http://mirrors.kernel.org/ubuntu kinetic/universe amd64 Packag
         50 http://mirrors.kernel.org/ubuntu kinetic/universe i386 Package
     3.20.4-2 50
         50 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
         50 http://archive.ubuntu.com/ubuntu jammy/universe i386 Packages
 *** 3.20.4-2~16.04.sav0 500
        500 http://ppa.launchpad.net/savoury1/gtk-xenial/ubuntu xenial/mai
        500 http://ppa.launchpad.net/savoury1/gtk-xenial/ubuntu xenial/mai
        100 /var/lib/dpkg/status
     3.20.4-1 50
         50 http://archive.ubuntu.com/ubuntu impish/universe amd64 Package
         50 http://archive.ubuntu.com/ubuntu impish/universe i386 Packages
     3.20.3-1 50
         50 http://archive.ubuntu.com/ubuntu hirsute/universe amd64 Packag
         50 http://archive.ubuntu.com/ubuntu hirsute/universe i386 Package
     3.20.2-2 50
         50 http://old-releases.ubuntu.com/ubuntu groovy/universe amd64 Pa
         50 http://old-releases.ubuntu.com/ubuntu groovy/universe i386 Pac
     3.20.2-1ubuntu1 50
         50 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages
         50 http://archive.ubuntu.com/ubuntu focal/universe i386 Packages
     3.20.1-1 50
         50 http://old-releases.ubuntu.com/ubuntu eoan/universe amd64 Pack
         50 http://old-releases.ubuntu.com/ubuntu eoan/universe i386 Packa
     3.20.0-2 50
         50 http://old-releases.ubuntu.com/ubuntu disco/universe amd64 Pac
         50 http://old-releases.ubuntu.com/ubuntu disco/universe i386 Pack
     3.18.3-1+16.04.sav0 500
        500 http://ppa.launchpad.net/savoury1/utilities/ubuntu xenial/main
        500 http://ppa.launchpad.net/savoury1/utilities/ubuntu xenial/main
     3.18.2-1 50
         50 http://old-releases.ubuntu.com/ubuntu cosmic/universe amd64 Pa
         50 http://old-releases.ubuntu.com/ubuntu cosmic/universe i386 Pac
     3.18.0-6 50
         50 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Package
         50 http://archive.ubuntu.com/ubuntu bionic/universe i386 Packages
     3.14.2-1 500
        500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Package
        500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages

This shows all meld versions from 15 official series and two Launchpad PPAs. The current installed package version is 3.20.4-0ubuntu1~16.04.sav0 which is from ppa:savoury1/gtk-xenial (GTK 3.22.30 and other upgrades, making Meld >= 3.20 buildable). There is also a version 3.18.3 for Xenial users who have not upgraded their GTK stack (3.18.3 is highest possible with GTK < 3.20). All repos other than Xenial are currently pinned low (50) with Xenial having usual priority (500) as it is the installed series.

It's actually quite often very handy to have a fast terminal way to check the versions of any specified package(s) in the 15 different Ubuntu series in question. As shown, this can be done very simply with "apt-cache policy" (on any of the 15 series) after this ubuntu-enhanced package is installed.

*** Usage: apt-all ***

The "apt-all" script takes one series name (Xenial, Bionic, Cosmic, Disco, Eoan, Focal, Groovy, Hirsute, Impish, Jammy, Kinetic, Lunar, Mantic, Noble, or Oracular) as the first argument (lowercase), exactly "install" as the second argument (safety, no accidental or even intentional "apt-get upgrade" commands are allowed with a different series via "apt-all") and then the package(s) you want to install as the third and final argument.

Example: apt-all bionic install meld

This invocation would do these tasks:

=> Switch Bionic to have temporary high priority

=> $ sudo apt-get install meld

=> Switch Bionic back to low priority as usual

Thus "apt-all" is simple to use and is all about giving a front-end for easy choice from all the packages of 14 other series of Ubuntu than your own.

FINAL WARNING: While easy to use, "apt-all" is also very powerful (due it allowing install of any/all packages from series other than that installed) and could destroy the reliability/functionality of an existing install with careless usage (ie. upgrade/downgrade to newer/older packages without doing necessary homework about dependency/compatibility with all related packages, possibly causing unrecoverable system-breakage). So PLEASE DO BE CAREFUL!!!

*** Updates ***

26/8/19 -- New package ubuntu-enhanced replaces xenial-enhanced and is compatible for installation on five different Ubuntu series (Xenial, Bionic, Cosmic, Disco and Eoan). Gives access to all packages (in all "pockets") in all of the repositories for these series, no matter what series is installed.

2/9/19 -- New PPA (now also called ubuntu-enhanced) and new release 0.5 with improvements to "apt-all" for better error handling.

26/9/19 -- Fixed issue with post installation script on Bionic and newer due official-packages-repositories.list file no longer being used. Enhanced apt setup on series newer than Xenial is now actually configured correctly!

12/5/20 -- Added Groovy Gorilla to configuration and uploaded new 0.7 package allowing installation on any Ubuntu series from Xenial through to Groovy. This version also uses the correct server for old series past end of support.

31/10/20 -- Added Hirsute Hippo to configuration and uploaded new 0.8 package allowing installation on any Ubuntu series from Xenial through to Hirsute.

7/5/21 -- Added Impish Indri to configuration and uploaded new 0.9 package allowing installation on any Ubuntu series from Xenial through to Impish.

21/10/21 -- Add Jammy Jellyfish to configuration and uploaded new 0.10 package for install on supported Ubuntu series from Xenial through Jammy.

30/4/22 -- Add Kinetic Kudu to configuration and uploaded new 0.11 package for install on any supported Ubuntu series from Xenial through Kinetic.

28/10/22 -- Add Lunar Lobster to configuration and uploaded new 0.12 package for install on any supported Ubuntu series from Xenial to Lunar.

29/4/23 -- Add Mantic Minotaur to configuration and uploaded new 0.13 package for install on any supported Ubuntu series from Xenial to Mantic.

28/10/23 -- Add Noble Numbat to configuration and uploaded new 0.14 package for install on any supported Ubuntu series from Xenial to Noble.

29/4/24 -- Add Oracular Oriole to configuration and uploaded new 0.15 package for install on any supported Ubuntu series from Xenial to Oracular.

Adding this PPA to your system

You can update your system with unsupported packages from this untrusted PPA by adding ppa:savoury1/ubuntu-enhanced to your system's Software Sources. (Read about installing)

sudo add-apt-repository ppa:savoury1/ubuntu-enhanced
sudo apt update
        
Technical details about this PPA

This PPA can be added to your system manually by copying the lines below and adding them to your system's software sources.

Display sources.list entries for:
deb https://ppa.launchpadcontent.net/savoury1/ubuntu-enhanced/ubuntu YOUR_UBUNTU_VERSION_HERE main 
deb-src https://ppa.launchpadcontent.net/savoury1/ubuntu-enhanced/ubuntu YOUR_UBUNTU_VERSION_HERE main 
Signing key:
4096R/E996735927E427A733BB653E374C7797FB006459 (What is this?)
Fingerprint:
E996735927E427A733BB653E374C7797FB006459

Dependencies:

For questions and bugs with software in this PPA please contact Rob Savoury.

PPA statistics

Activity
7 updates added during the past month.
View package details

Overview of published packages

18 of 8 results
Package Version Uploaded by
ubuntu-enhanced 0.15.0-1~24.10.sav0 Rob Savoury ()
ubuntu-enhanced 0.15.0-1~24.04.sav0 Rob Savoury ()
ubuntu-enhanced 0.15.0-1~23.10.sav0 Rob Savoury ()
ubuntu-enhanced 0.15.0-1~22.04.sav0 Rob Savoury ()
ubuntu-enhanced 0.15.0-1~20.04.sav0 Rob Savoury ()
ubuntu-enhanced 0.15.0-1~18.04.sav0 Rob Savoury ()
ubuntu-enhanced 0.15.0-1~16.04.sav0 Rob Savoury ()
xenial-enhanced 0.3-1sav0 Rob Savoury ()
18 of 8 results

Latest updates

  • ubuntu-enhanced 7 days ago
    Successfully built
  • ubuntu-enhanced 7 days ago
    Successfully built
  • ubuntu-enhanced 7 days ago
    Successfully built
  • ubuntu-enhanced 7 days ago
    Successfully built
  • ubuntu-enhanced 7 days ago
    Successfully built