[root tip] Update Manjaro the smart way

Manjaro updates


Either when you use your system or shortly after login - a message appears - telling you there is updates available. When you click the message Pamac opens with the updates pane listing 100’s of packages ready to download/install on your system. Almost per instinct you click the update now - provide your password and the flow begin. Suddenly your screen goes blank - you wait - nothing happens. You press CtrlAltF4 - nothing happens - you wait - nothing happens. You hold the power button until the system powers off and press it again to power on your system - and now you are having a black screen maybe a message …

What now? Could the situation have been avoided?

While - of course - there is no guarantee - the following headlines may help you understand what goes on behind the scenes.

  1. Know your system
  2. What happens when you update
  3. Why happens when an update stalls
  4. Updating the smart way
  5. Conclusion

Know your system


There is a few packages - which when updated most likely will require a restart. A short list of important system packages which probably requires restart

  • ucode
  • cryptsetup
  • linux
  • nvidia
  • mesa
  • systemd
  • wayland
  • xf86-video
  • xorg

Another part of knowing your system is which foreign packages you have installed. Foreign packages is defined as everything not in the official repository so keeping a list of packages installed by an AUR helper or using makepkg -i will be of help when you update your system.

What happens on update?


Most of us has been using Windows and we know from Windows that system files may be locked an the system must be restarted to the file can be replaced with the updated versions.

Due to the modularity of Linux only needed portions of an application is loaded into memory and the rest is loaded on as-needed-basis - and this includes kernel, kernel modules and drivers.

When you build a package using an AUR helper the package is build using the - at build time - available system libraries. When you update your system - you are potentially replacing those dependencies with new libraries - which in turn may influence your system stability - especially when it comes to a kernel module build for a specific kernel.

When you reboot your system after an update the system will usually use the updated kernel upon reboot - and the device relying on a custom kernel module will fail because the module has not been rebuild.

Only after a successful update and a successful restart you can begin to update your custom modules.

What happens when an update stalls?


The following is a simplified description - of what may happen.

When you run huge updates within the graphical environment - whether you use a terminal or a gui package manager - the system may end in a state where it needs to load a specific library at a specific memory address pointing at a specific routine in the library - but due to updates - the library is no longer existing - it has been updated to a never version - and your update stalls.

Updating the smart way


Updating the smart way includes knowing which packages may pose a problem if the update is run with the GUI. I showed you a list of packages which by a lot of users experience often requires special attention.

When Pamac shows you a huge list of update - it can be hard to get a clear view and you could miss one.

You can use a small utility script simplifying the task of evaluating a huge list of updates.

When you have evaluated the list and found this update to have the potential to stall - the smart way is to update using the console. Logout of your GUI and switch to TTY.

Before executing the update command - verify your primary mirror is up-to-date by using the pacman-mirrors command without arguments.

$ pacman-mirrors
Pacman-mirrors version 4.16.4
Local mirror status for unstable branch
Mirror #1   OK  00:31   Denmark  https://www.uex.dk/public/manjaro/

Depending on the result you may proceed to update the system

$ sudo pacman -Syu

If you need to rebuild your mirror list - you will need to use below variation of the update command - forcing your system package database to equal your primary mirror’s databases and as pointed to by @cscs Pamac has a timer - rebuilding your mirror list on a regular base - in which case the this command should be favored.

$ sudo pacman -Syyu

When you reboot after a successful update - first thing to do is rebuilding your foreign packages, drivers and kernel modules. This can be done from a terminal in the GUI session - but if you want to ensure you get no problems - TTY is recommended CtrlAltF4.

Just switch back to GUI using CtrlAltF7

Rebuilding all your AUR packages using a single command e.g.

$ pamac upgrade -a

Conclusion

Following a few basic rules will help you keep your system healthy and hopefully you will avoid problems from a stalled update.

13 Likes

For anyone like me, who is yet planning to move away from Windows, this is super useful. Thank you for this tip!

Unless mirrors have changed, such as if you have pamac-mirrorlist.timer running :wink:
(in which case 2 ys)

1 Like

This post was flagged by the community and is temporarily hidden.

1 Like

I have some project with some friend to put your OS on some company machine’s and we would like to know is it’s possible to do only security update has in Debian?

In my opinion I would go with full update but my friend are a bit … well they fear it will crash to often. (I have been using manjaro for the past cople of year’s with almost no issue in that regard but I have to convince them :slight_smile: )

No.

Arch/Manjaro comes with the following requisite:
Partial Upgrades are Not Supported.

You could probably hold off on updates for some time … but I wouldnt suggest for long.
And … if you need to install another package - its full update time.

You can check a box in pamac to install a package without updating under preferences.

So if you needed a program on the day of updates and you didn’t want to update until others had updated first, in order to avoid problems you could do so.

Also in Preferences you can set a program not to be updated. That might be useful if you need a program to work a certain way. Although it might be better to use a flatpak in that situation.

Well … yeah … I could set my kernel and more to the “IgnorePkg” line … but its still not supported and still a bad idea.

https://wiki.archlinux.org/index.php/System_maintenance#Partial_upgrades_are_unsupported

… are you sure?
At least for the longest time that was impossible, and I certainly cant find such an option.

pamac was built with just these kinds of mistakes in mind. And thus defaulted to refreshing dbs and downloading updates whenever there is a package transaction.
pacman on the other hand you could fire away using -S and it wouldnt update.
But again … that is the incorrect way to install a package, and considered a partial upgrade. (see above)

Under Preferences/Advanced/ Do not check for updates when installing.

While I’m at it, two little thing’s that bug me with update’s.
I know that I can do some automatic update but is there a way to set it up with pamac or I do have to create a service with a cron job that run every day?
Also, is there a way to make the power manager or the screen manager to keep my computer alive while it is updating? i had some issues with this before, If I try to update and forget to remove the auto-lock and sleep, my computer would go to sleep while updating creating a huge mess!!

Thank’s! That’s what I tough but you never know :slight_smile:
I think I will go with snap or flatpack instead for most of the software part and maintain the system separately

Ah. I do see it now. Wonder when that got added.
I am not totally against it.
But … theres a reason its under Advanced.

Couldnt tell you for sure as … I wouldnt use such a thing.
But … it looks like pamac can handle it … though it will still prompt (not just do it without asking).

Eh … you could do any number of things, like in plasma set to ‘presentation mode’, make an alias so that updates always keep the session active, etc etc …
I think I actually wrote a script for someone like this somewhere … if I find it I will post.

1 Like

If you do that, I’d suggest the routine includes at least these two things:

  • Checking available disk space (the cache(s) can accumulate a LOT of previously-installed packages over time if not kept an eye on)

  • Verifying that the system isn’t running on battery before doing updates.

1 Like

This is indeed good advise!