Trouble Updating - side discussion

The community can be harsh, it is true @abracadabra Quite often I am horrified at the attitudes and judgements of my fellow moderators, and sometimes the Team members themselves have bad days.

Sometimes people jump to conclusions, are judgemental, and sometimes unfairly - I’m the first to admit this.

Let me look into this issue, I wish to support you in your endeavour. Remember, this is a technical forum, where we value accurate and useful information… it is not a reddit, where the number of up/downvotes counts more as validation than anything else.

The core issue - Partial Upgrades are Unsupported

  • Arch and Arch-based systems explicitly forbid partial upgrades.
  • Running pacman -Sy <pkg> syncs the repo database BEFORE installing, which creates a desynchronised state between the new database and the old installed packages. This breaks systems due to dependency mismatches.
  • Read your Bible. If you don’t like it, then go to the Arch forum and tell them how ignorant and stupid they are.

The Dangerous Claim:

  • Some idiot claimed “You can use `pacman -S all day long without sync issues if you don’t run -Sy first”.
  • Why is this stupid?
    • pacman -S uses the local database which is old, and installing new packages MAY pull in outdated dependencies IF the repos changed (which is why we synchronise and update).
    • Pull in outdated dependencies (if the package requires newer libraries than what’s installed).
    • Create inconsistencies that will compound in time.

Example:

  • run pacman -S firefox 3 months after you last did an -Syu. As the local database is 3 months out of date, and the new firefox requires a newer glibc than you have, then it will be broken.

Why the comments require removal:

  • Context matters - the user was in a broken state from the error sudo pacman -S pacman and recommending pacman -S is normalising very unsafe habits. Remember, the forum is supposed to be useful and generally safe and reliable information… not a reddit chat where anything goes.

Community Standards:

Arch and Manjaro must aggressively prohibit unsafe advice. Even if -S alone isn’t as bad, it is still risky. Yes, you can get away with it ‘all day long’ on a good day… You can play Russian Roulette on your own time, but not in this forum.

Justified or Unjustified:

  • Accusing other members of the forum of ignorance ignores the safety principle.
  • Complaints about the community disregard why rules exist; The very design of pacman makes it extremely difficult to recover from partial upgrades, and also can waste a lot of time doing so… Not understanding this is common, it is simply the view of an uninformed person (which we could describe as ‘ignorance’).

Moving On:

Reading your statement, I could rephrase it to be acceptable:

“While pacman -S uses the local database and avoids immediate sync issues, it should ONLY be used if you recently ran -Syu. Otherwise, always run -Syu first.”

Key Takeaways

  1. Always run sudo pacman -Syu before installing/updating anything. This is not negotiable.
  2. Never run pacman -Sy alone or pacman -Sy <pkg>.
  3. pacman -S <pkg> is safe only if your system is fully updated.

Judgement time

The staff acted entirely correctly in this case to prevent the spread of harmful advice, even if the comment contained a badly phrased seed of truth.

Safety is more important than pedantry in a support forum.

Advice:

Do not pursue, or argue about this matter further. You may consider this a warning, and should you further spam the forum with unjustified complaints about a fully justifiable action, then I will not warn or discuss the matter with you further.

4 Likes

Hmm, I’m not sure that is the case.
AFAIK pacman will try to download/install the version it knows from its outdated local database - not the newest one. Most mirrors won’t have that at that point and you might get a lot of 404 not found errors. Same goes for dependencies.

2 Likes

Aha, @freggel.doe you’re perfectly right - but obviously we’re still entering wild west territory… so yes, dependencies might bring in some 404 errors and the upgrade will fail which dies, indeed, mitigate the risk of actual breakage.

However, there are still risks:

  • Partial Success - if some dependencies are available, you’re still moving towards a partially upgraded system and possibly mismatching dependencies.
  • Even if they are available, they might have been built against newer versions of libraries - so installation might go ahead, but then fail to run.

So yes, the most common outcome is that the installation fails with missing packages… and that’s a good thing.

Still, we will be assholes and insist that the only sensible advice remains the same - to always update the system with pacman -Syu before installing.

I should have thought of a better example than Firefox… but we have a Religion, and to suggest partial upgrading is simply heresy for which people should be rightly burned at the stake :wink:

2 Likes

The update fails when you encounter the first non-existent package, during the download phase, and nothing is installed. Any packages that have been downloaded follow this rule :arrow_down:

That’s what pkgrel is for. If they are available then the version hasn’t changed and it is compatible with what’s already installed.

EDIT:

Let me try to break this down for everyone:

When you use -S, pacman first checks to see if the package exists in the database. If it doesn’t then we get a target not found error and the operation fails.

If it is found then the filename (which contains the version, including the pkgrel) is retrieved from the database.

Pacman requests the filename from the mirror, if it’s not found we get a 404 (file not found) error and the operation fails.

If the file is found then it’s downloaded and installed. This means the package is consistent with the system.

This applies to all packages that need to be installed, if any package is not available then the operation fails. Remember we haven’t updated the database yet, so anything downloaded is still compatible with the installed system, but hasn’t been installed anyway (it’s just a file somewhere).

So there are only two ways to enter a partial update state (using pacman):

  1. By using a command which updates the local database but doesn’t update the installed software (this would include a failed update), followed by installing an updated package.

  2. Installing a manually built package that isn’t consistent with the system.

2 Likes

Do you mean me?
Was it me?
Oh! Please tell me it was me!

1 Like

The flagging and the confirmation of flags for posts #1 and #2 was completely appropriate.

Nothing further needs to be added.