Pamac didn't display correct list of display, but updated them when I only wanted to update 3 displayed apps

Hi all.

This morning, when I refreshed Pamac, saw that I had 3 pending updates, so I proceeded to update them.

However, after I clicked “Apply”, there was a whole bunch of downloads, in the range of GBs, which cannot be from the 3 apps I wanted to update.

As seen below, the update even involved post-transaction hooks, which was definitely not for the updates of the 3 apps.

Upon checking, I understand that this morning, the 2025.05.14 stable update was released, and the massive download was probably due to the complete stable update.

So the issues here:

  1. Pamac did not display the list of update available correctly.
  2. Pamac did not follow the user’s selection of apps to be updated.
1 Like

Pamac should allow you to check for updates (I use Octopi, rather than the Pamac GUI, and always use pacman for system upgrades first, then rebuild any AUR packages as needed, therefore don’t have that GUI in front of me to check).

It is normal and expected for Pamac to do a full system sync before applying new packages; pacman does the same if you use it the way it’s recommended.

Yup, this is the key - “should”.
And that’s why this post existed - in reality, “didn’t”.

I would also like to emphasize that I did refresh databases when checking updates, before I proceeded with Apply.

1 Like

I just checked my other system, which does (I think) still have the Pamac notifier and GUI (looks the same as your screenshot).

I’d suggest to the maintainer(s) that this is added; for example, with Octopi, one can right-click the icon to check for updates. (That’s all I actually use it for). :wink:

You mean this refresh databases function?

It does check for updates - not for single app, but for all apps.

Again, the issue here is:
Pamac refreshed the databases, checked for updates, and only showed me 3 updates available - as per 1st post.

And after I selected 3 apps to update, the update proceeded to update the 3 apps AND apps not selected (and not displayed as “update available”), thereby undermining user’s control in the update management.

I see what you mean.

However, looking at the other machine, mine seems to show the whole lot once I scroll down? (I haven’t counted them). I didn’t explicitly search for or select any packages first, though. This might make the difference. :thinking:

This is a bit puzzling, but there have been a number of issues with Pamac lately … :man_shrugging:

I can confirm that pamac-manager (the pamac GUI) does indeed act in the manner described by @anon39617291 . It’s more of a paper cut, than an actual bug.

At some point the system Tray app will locate updates and display them, and opening pamac-manager from there will list the updates found. But selecting Apply in pamac-manager will trigger a Refresh databases, and if there are more updates or other required packages, they will be included in the Apply activity.

There appears to be a disconnect between what the System Tray App is seeing and informing pamac-manager of, and what a full refresh will reveal

1 Like

There is a disconnect - and the disconnect is by design - I will try to shed some light on this.

The design is inherited from pacman and the underlying libalpm.

To know which packages has changed there is a need to fetch the latest databases.

Fetching the latest database will replace the current metadata - so if you only wanted to check - your metadata will not be in sync with your actual system state - and this is important - especially if you do not sync.

pamac update checker is defaulting to check every 6 hours - but this preset can be individually configured using a set of choices in the GUI.

This check work much the same way as the checkupdates script provided by the pacman-contrib package.

The checkupdates script fetches metadata from the first mirror in the mirrorlist, stores it in a temporary location and compares with metadata about the running system (stored in /var/lib/pacman/local).

I don’t know the exact mechanism powering the pamac-checkupdates service but I believe it is something similar, only fetching the metadata using the predefined intervals, and storing it in a temporary location.

To avoid partial updates and 404 Not Found for removed packages - pamac manager will always do a metadata sync before the actual sync - and thus the sync listing will then exhibit the described behavior - where more packages may be added to list.

This behavior is to be consistent and will match the pacman -Syu command.

You may even have two systems on the same network which behaves differently due to elapsed time, when the system was last active or online and the mirrorlist being different. The latter is caused by the pamac-mirrorlist.timer which randomizes the mirrorpool and the mirrorlist once a week.

It is possible to configure pamac to use the equivalent to pacman -S but in doing so you may introduce a partial sync - therefore pamac default to the equivalent of pacman -Syu.

2 Likes

Well that makes sense for my part I have never seen it as a Problem, because I often do a Refresh Database, anyway, prior to Applying any update.

1 Like

Clicking on the arrow in bottom right corner of pamac GUI would show more information about update process (refreshing mirrors, installing packages and post-transaction hooks)

Pamac option “Do not check for updates when installing” in Advanced tab has a warning

Misconfiguration of these settings can lead to a broken system
Modify them only if you know what you are doing

AUR package pcloud-drive could be built in pamac CLI without updating repository packages, but building an AUR package might fail if there is an out of date dependency

I do leave this setting as default, which means Pamac should check for update every 6 hrs.

Reality:
There was notification for new update at 0100+, which I checked, applied, refreshed database, completed.
At 0500+, there was another notification for an update for another app.

Implication:
Pamac does not follow the settings in Preference.

On my Pamac, doing refresh database will trigger 2-step function:

  1. The updater will check for updates.
  2. It will then automatically apply ALL updates.

The issue here: I want to check for update and select apps I want to update, NOT auto-update ALL apps without allowing me any choice.

And the following screenshot is a perfect example - I performed refresh databases, and PAMAC wanted to update the app immediately.
If this particular transaction doesn’t require user confirmation, the update would have proceeded on its own.

Yes, I’m aware of this.
The issue here, is that:

The arrow allows user to “view” the update process, but have NO control over the update - since it does not follow the user’s update instruction - to ONLY update the 3 selected apps.

pamac is not a monolithic application. It’s a framework. There is libpamac, which interfaces with ALPM and which has separately installable plugins for Snap and FlatPak, there is pamac-cli, and then there is either pamac-gtk (gtk4) or pamac-gtk3.

libpamac also comes with a systemd timer, which periodically checks for updates by polling the mirror. However, this is only a periodic poll, and the selected mirror may not be fully synchronized yet at the time of the polling.

pamac-gtk/pamac-gtk3/pamac-cli will conduct an additional poll to fully sync with the selected mirror whenever you tell it to install the updates. This is intentional.

You should never update only the desired packages. Manjaro is a rolling-release distribution, and by only updating selected packages, you risk breaking your system. This is called a partial-update scenario, and this is not supported.

2 Likes

Thanks for the reminder!
:handshake:
I’m aware that I should be updating “system updates” as a whole package, not separate apps.

As such, you can see from my 1st thread, the selection of apps for update, was solely for “non-system updates”.

1 Like

That may be why I don’t have problems, with updates on my computers.

I do ALL available updates, when they are presented, regardless, not just selected packages. This has been my habit since I started using Linux back in the Mandrake days.

2 Likes

Then here’s another UNIX principle for you to learn: there are no non-system updates. :grinning:

UNIX is a fully integrating operating system. There is no distinction between operating system and application software.

All applications, once installed, become mere extensions of the operating system, which is conceived as one big toolbox, from which you pick the tools you like. Some tools come as duplicates in terms of functionality — for instance, you can have multiple editors installed at the same time, or even multiple compilers — but each one will do things just a little differently, and you use the tools you like best.

As such, because of this tight integration, all application software added onto the system also ties in with the system’s shared libraries, and it is imperative that the additional software “speaks the same language” as the shared libraries.

This tight integration can be disadvantageous under certain circumstances — e.g. because not everything evolves at the same pace, and so the adoption of newer software may have to be delayed in order not to break the rest of the system.

This is why Snaps, FlatPaks and AppImages were created — they come as containerized and standalone environments with their own sets of shared libraries. The downside of this however is the amount of extra disk space such package formats require.

2 Likes

That’s a very easy-to-understand explanation!
I believe WinOS is also working similarly.

I have encountered some dependency issues with official repo and AUR.
And having understand the issues, I mostly rely on Flatpak nowadays.
The app selection I shown in 1st thread, were Flatpak (except pCloud, which only available on AUR).

My update philosophy is simple:
Flatpak, just update as and when an update is available - it’s easy to roll back to older version, since it is only 1 app.
For system update, don’t rush to install a freshly baked system update - wait a day or two, see how other experienced users fare.
(I know about Timeshift, just that I’m lazy to use it)

Back to Pamac:
Issue 1 - when refresh databases, the command actually refresh databases and update.
Issue 2 - when apply updates, Pamac intentionally updates apps not listed, and intentionally ignores user’s selection of apps to update. User loses control of what / when / how to update.

No, Windows works exactly the other way around. Microsoft Windows regards applications as a separate layer on top of the operating system — not security-wise, but organizationally.

Windows doesn’t even have a proper software manager, because it was designed to be used with proprietary software from independent software vendors, and it even requires each software title to come with its own installer. The only thing that, even though remotely, somewhat resembles integration in that regard is the so-called InstallShield, which guides the application software’s installation into the Windows Registry.

You have to keep in mind where Microsoft Windows comes from in terms of its design philosophy. It is still for most part based upon the design principles of MS-DOS.

There should not be any dependency issues with the official repo packages. The AUR however is another beast.

AUR packages are intended to be used with Arch proper, which is more bleeding-edge than Manjaro Stable or even Manjaro Testing. Technically speaking, Manjaro Unstable would be your best bet for successfully using the AUR.

No, no, and no. You still don’t understand. It does not update “packages not listed”. It updates the system, period. The fact that certain packages are not listed is merely due to the intervals between the polling and the fact that your primary mirror may be out of sync.

This is not a flaw in pamac — as explained to you already, pacman works the same way — but merely a result of the fact that the mirrors are not 100% in lockstep, and the fact that the periodic polling for updates is, as the name says, periodic — it does not poll every second of the day, but only every couple of hours.

2 Likes

Let me be clearer:

  1. Should the GUI command refresh database, execute system update? Or it should just refresh the databases and show list of available updates?
  2. When the GUI command apply update, on a page that showed 3 apps have available update, should it update beyond the 3 apps selected?

Without user’s knowledge nor control, right?
Is this not perceived as a flaw?

This is an issue, isn’t it?

I’m not here to challenge how things have evolved in Linux, nor what is “intentional” or “unintentional”.

I’m simply pointing out the fact that GUI command refresh databases actually performs update, instead of, as the command name implies, only refresh databases.
And the fact that user has no control over what he wants to update, when he clicks apply update.

(Sigh) You really still don’t get it, do you? :roll_eyes:

The user doesn’t need to have control over what he wants to update. The user should update everything that’s eligible for updating.

Either you update the whole lot, or you refrain from updating — maybe until there is more feedback from the community on the result of the update process. But you do not update certain packages and not update others.

Besides, checkupdates does not update anything. It merely tells you that there are updates. You still have the final say on whether to go ahead with it or not.

Really that is all the user needs to know.

This is not the update manager taking control from the user. This isthe update manager doing it’s job and insuring everything will work correctly.

The user control point is initiating the process, clicking Apply or typing sudo pacman -Syu or pamac update. Although I would recommend pamac checkupdates followed by pamac update, belt and braces.

I learned this the hard way on Mandrake, hence my habit.

2 Likes