this post was submitted on 01 Oct 2025
24 points (85.3% liked)
Linux
58833 readers
618 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 6 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I think you are a little confused at the problem here. The issue is that partial updates are not supported. The reason for this is very simple, Arch ensures that any given package list works on its own, but not that packages from different versions of the package list work together. So if Firefox depends on libssl the new Firefox package may depend on a new libssl function. If you install that version of Firefox without updating libssl it will cause problems.
There is no way around this limitation. If you install that new Firefox without he new libssl you will have problems. No matter how you try to rules lawyer it. Now 99% of the time this works. Typically packages don't depend on new library functions right away. But sometimes they do, and that is why as a rule this is unsupported. You are welcome to try it, but if it breaks don't complain to the devs, they never promised it would work. But this isn't some policy where you can find a loophole. It is a technical limitation. If you manage to find a loophole people aren't going to say "oh, that should work, let's fix it" it will break and you will be on your own to fix it.
Focusing on your commands. The thing is that
pacman -S firefox
is always fine on its own. If Firefox is already installed it will do nothing, if it isn't it will install the version from the current package list. Both of those operations are supported. Alsopacman -Rs firefox && pacman -S firefox
is really no different than justpacman -S firefox
(other than potentially causing problems if the package can't be allowed to be removed due to dependencies). So your command isn't accomplishing anything even if it did somehow magically work around the rules.What is really the problem is
pacman -Sy
. This command updates the package list without actually updating any packages. This will enter you system into a precarious state where any new package installed or updated (example ourpacman -S firefox
command form earlier) will be a version that is mismatched with the rest of your system. This is unsupported and will occasionally cause problems. Generally speaking you shouldn't runpacman -Sy
, any time you are using-Sy
you should also be passing-u
. This ensures that the package list and your installed packages are updated together.I'm not familiar with arch or pacman. What prevents a package from becoming too new? Like if a new version of libssl is released that removes a necessary function but a package like Firefox has become abandoned, then even updating everything will result in a broken application. Does it not have version dependencies like debs and rpms?
I'm also not familiar. But my understanding is that the package maintainers should prevent this situation. Because otherwise even if there are package version dependencies (I don't actually know if pacman does this) it would just block the update which results in a partial update which isn't supported. For example if your theoretical unmaintained Firefox blocks the update of libssl but Python requires new functionality you would be stuck in dependency hell. Leaving this problem to the users just makes this problem worse. So the package maintainers need to sort something out.
It is a huge pain when it happens but tends to be pretty rare in practice. Typically they can just wait for software to update or ship a small patch to fix it. But in the worst case you need to maintain two versions of the common dependency. In lots of distros very common dependencies tend to get different packages for different major version for this reason. For example libfoo1 and libfoo2. Then there can be a period where both are supported while packages slowly move from one to the other.
If a package manager can block an upgrade due to version dependencies, it can also pull in those dependencies for a partial upgrade.
If a function is removed from libssl and it’s used in firefox, firefox build would fail, so it’s still not possible to have a functional setup.
Yeah, that kind of a condition would require the maintainer to patch the source of the non-updated program.
And that would be fine if there is just a little change, with an alternate function available but if the change requires changing the logic of the application, you are essentially expecting the package maintainer to do the software developer's work.
The deprecation process is a good way to prevent this.