Manjaro Linux (or Manjaro for short) is a Linux distribution based on Arch Linux, using Xfce, GNOME, and KDE Plasma as the default desktop environment and, like Arch, rolling updates. The goal is to provide a free operating system that is easy to use for PCS.

Advantages of rolling upgrades

One benefit of rolling updates is that we can quickly access the latest packages, for example: as of now (2020-11-15), OpencV is only 3.20 in the official Ubuntu repository, while OpencV in Manjaro has been upgraded to 4.50. If you are a developer who needs opencV 4 features, you will need to compile the 4 or above source package on Ubuntu, but you can download it directly on Manjaro.

# ubuntu 18.04 LTSmcoder@Chaoqun-PC:~/workspace/my_doc/blog$ sudo apt search opencv-dev Sorting... Done Full Text Search... Done libopencv-dev/bionic- Security,bionic-updates,now 3.2.0+dfsg-4ubuntu0.1 amD64 [installed] development Filesfor opencv

# manjaro 20
[chaoqun@manjaro local$sudo Pacman-SS OpencV Extra/gST-plugin-OpencV 1.18.1-1 Multimedia Graph Framework - OpencV plugin extra/ OpencV 4.5.0-1 [installed] Open Source Computer Vision Library Extra/Opencv-samples 4.5.0-1 [installed] Open Source Computer Vision Library  (samples)Copy the code

Disadvantages of rolling upgrades

Taking advantage of the rolling upgrade, I made it a habit to sync the software library every few days:

[chaoqun@manjaro local$sudo Pacman-SS OpencV Extra/gST-plugin-OpencV 1.18.1-1 Multimedia Graph Framework - OpencV plugin extra/ OpencV 4.5.0-1 [installed] Open Source Computer Vision Library Extra/Opencv-samples 4.5.0-1 [installed] Open Source Computer Vision Library  (samples) [chaoqun@manjarolocal]$sudo pacman-syu [sudo] chaoqun [sudo] chaoqun [sudo] Core is in the latest version extra community is in the latest version Multilib is in the latest version Resolving dependencies... Looking for package conflicts... Software Package (1) eigen-3.3.8-3 All Installation size: 6.54 MiB Net Update size: 0.08 MiB :: Install? [Y/n]Copy the code

Then today, I hit a few big holes:

  1. [Fixed] Qt 5.15.13 causes my debug to appear strange.
  2. Some changes in eigen-3.3.8-3 have caused bugs in the code that would otherwise have compiled, but I don’t want to change my code against that version right now;

Earlier, I had a problem getting into my desktop due to a system update. I uninstalled my desktop in TTY mode and reinstalled it, which took me a long time to fix.

So the downside of rolling upgrades is obvious: instability! The latest software package may introduce uncontrollable bugs.

How did Pacman get downgraded

Let’s start with the key: Install downgrade programs! In Arch Linux, there is a utility called “downgrade” that will help you downgrade installed packages to any older version available. This utility will check your local cache and remote server (Arch Linux repository) for older versions of the required packages. You can select any old stable package from this list and install it.

Manjaro software source has this software, download and install directly through Pacman-S downgrade. If sudo reels (reels), check (reels) if sudo reels (reels), reels (reels) if sudo reels (reels).

[chaoqun@manjaro local]$ sudo downgrade eigen

Downgrading from A.L.A. is disabled on the stable branch. To override this behavior, set DOWNGRADE_FROM_ALA to 1 .
See https://wiki.manjaro.org/index.php?title=Using_Downgrade  forOptional package: -1) eigen 3.3.7 7 Any (local) + 2) eigen 3.3.8 3 ANY (local) Enter a number to select the package: 1 Loading the package... Warning: Demoting Package eigen (3.3.8-3 => 3.3.7-7) resolving dependencies... Looking for package conflicts... Software Package (1) eigen-3.3.7-7 All Installation Size: 6.47 MiB Net Update size: -0.08 MiB :: Install? [Y/n] Y (1/1) checking key in keyring [# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #] 100%(1/1) Checking software package integrity [# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #] 100%(1/1) Loading a software package file [# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #] 100%(1/1) Checking for file conflicts [# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #] 100%(1/1) Checking available storage space [# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #] 100%:: Dealing with package changes... (1/1) is being downgraded# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #] 100%:: Running post-transaction hook functions... (1/1) Arming ConditionNeedsUpdate... Add eigen to IgnorePkg? [y/N] nCopy the code

I found that the bug was caused by the introduction of Eigen. I degraded eigen and the code was compiled successfully. I will update eigen again after the updated version is released for some time.

Reference

  1. How do I degrade packages in Arch Linux