[arch-general] library version conflict -- how does Arch solve this ?
Hello all, Today I installed Latex (texlive). Doing this installed new versions of libpng and libjpeg, and this broke emacs, xv and gnuplot (and maybe others I haven't discovered yet). I was able to make xv work again by removing and re-installing it. This didn't help for emacs, but adding a symbolic link in /usr/lib (to the wrong library !!!) made it work again. But I've been unable to get gnuplot working again, and this is one of my most essential tools. So what's the Arch way to solve this ? I find it extremely strange that updating a library removes the original - never seen this on any other distro. Nor is there any need to do this. Ciao, -- FA O tu, che porte, correndo si ? E guerra e morte !
On 08/02/10 11:21, fons@kokkinizita.net wrote:
Hello all,
Today I installed Latex (texlive). Doing this installed new versions of libpng and libjpeg, and this broke emacs, xv and gnuplot (and maybe others I haven't discovered yet).
I was able to make xv work again by removing and re-installing it. This didn't help for emacs, but adding a symbolic link in /usr/lib (to the wrong library !!!) made it work again. But I've been unable to get gnuplot working again, and this is one of my most essential tools.
So what's the Arch way to solve this ?
Do a full system update and then rebuild any packages from the AUR.
I find it extremely strange that updating a library removes the original - never seen this on any other distro. Nor is there any need to do this.
We only package the latest stable versions of software and so very rarely have multiple different versions of a library.
On Mon, Feb 08, 2010 at 11:29:28AM +1000, Allan McRae wrote:
I find it extremely strange that updating a library removes the original - never seen this on any other distro. Nor is there any need to do this.
We only package the latest stable versions of software and so very rarely have multiple different versions of a library.
Providing only the latest in the repos is OK, but erasing a previous version **with a different major version number** on a user's system surely isn't, as existing applications will depend on it. If I have /usr/lib/libpng.so -> libpng12.so /usr/lib/libpng12.so -> libpng12.so.12.0.0 /usr/lib/libpng12.so.12 -> libpng12.so.12.0.0 /usr/lib/libpng12.so.12.0.0 and installing a new app requires version 14, then the new situation should be /usr/lib/libpng.so -> libpng14.so /usr/lib/libpng12.so -> libpng12.so.12.0.0 /usr/lib/libpng12.so.12 -> libpng12.so.12.0.0 /usr/lib/libpng12.so.12.0.0 /usr/lib/libpng14.so -> libpng14.so.14.0.0 /usr/lib/libpng14.so.14 -> libpng14.so.14.0.0 /usr/lib/libpng14.so.14.0.0 which means that a previously installed app that expects libpng12.so or /usr/lib/libpng12.so.12 will still work. Replacing is allowed only if the major version number stays the same (which implies the lib will be compatible with the one it replaces). The only alternative to this is making sure that updated versions of all apps are made available as soon as the new library is used by any of them, and this is clearly impossible. I'm pretty sure that at the moment a system update or even complete fresh install including texlive, emacs and gnuplot will have the latter two not working. The most recent versions (as of writing) require different libraries. So, apparently there is no solution. Ciao, -- FA O tu, che porte, correndo si ? E guerra e morte !
I find it extremely strange that up... Providing only the latest in the repos is OK, but erasing a
All programs should be rebuilt with the new libs. On Feb 7, 2010 9:06 PM, <fons@kokkinizita.net> wrote: On Mon, Feb 08, 2010 at 11:29:28AM +1000, Allan McRae wrote: previous version **with a different major version number** on a user's system surely isn't, as existing applications will depend on it. If I have /usr/lib/libpng.so -> libpng12.so /usr/lib/libpng12.so -> libpng12.so.12.0.0 /usr/lib/libpng12.so.12 -> libpng12.so.12.0.0 /usr/lib/libpng12.so.12.0.0 and installing a new app requires version 14, then the new situation should be /usr/lib/libpng.so -> libpng14.so /usr/lib/libpng12.so -> libpng12.so.12.0.0 /usr/lib/libpng12.so.12 -> libpng12.so.12.0.0 /usr/lib/libpng12.so.12.0.0 /usr/lib/libpng14.so -> libpng14.so.14.0.0 /usr/lib/libpng14.so.14 -> libpng14.so.14.0.0 /usr/lib/libpng14.so.14.0.0 which means that a previously installed app that expects libpng12.so or /usr/lib/libpng12.so.12 will still work. Replacing is allowed only if the major version number stays the same (which implies the lib will be compatible with the one it replaces). The only alternative to this is making sure that updated versions of all apps are made available as soon as the new library is used by any of them, and this is clearly impossible. I'm pretty sure that at the moment a system update or even complete fresh install including texlive, emacs and gnuplot will have the latter two not working. The most recent versions (as of writing) require different libraries. So, apparently there is no solution. Ciao, -- FA O tu, che porte, correndo si ? E guerra e morte !
fons@kokkinizita.net writes:
On Mon, Feb 08, 2010 at 11:29:28AM +1000, Allan McRae wrote:
I find it extremely strange that updating a library removes the original - never seen this on any other distro. Nor is there any need to do this.
We only package the latest stable versions of software and so very rarely have multiple different versions of a library.
Providing only the latest in the repos is OK, but erasing a previous version **with a different major version number** on a user's system surely isn't, as existing applications will depend on it.
(snip)
The user should recompile (or update the system) so the applications now use this new version. In extreme cases, you can install the older library version from AUR.
On Mon, Feb 08, 2010 at 12:23:28AM -0200, Andre Ramaciotti wrote:
Providing only the latest in the repos is OK, but erasing a previous version **with a different major version number** on a user's system surely isn't, as existing applications will depend on it.
The user should recompile (or update the system) so the applications now use this new version. In extreme cases, you can install the older library version from AUR.
And if the current version of that application refuses to use the new library ? I did re-install gnuplot, it wants a different version. Ciao, -- FA O tu, che porte, correndo si ? E guerra e morte !
On Mon, Feb 8, 2010 at 10:49 AM, <fons@kokkinizita.net> wrote:
On Mon, Feb 08, 2010 at 12:23:28AM -0200, Andre Ramaciotti wrote:
Providing only the latest in the repos is OK, but erasing a previous version **with a different major version number** on a user's system surely isn't, as existing applications will depend on it.
The user should recompile (or update the system) so the applications now use this new version. In extreme cases, you can install the older library version from AUR.
And if the current version of that application refuses to use the new library ? I did re-install gnuplot, it wants a different version.
I just installed gnuplot here, never used it before, and it runs fine (just did 'gnuplot' followed by 'q' to quit). Version is 4.2.6-2. Again, perhaps your mirror is not up-to-date.
On 8 February 2010 03:49, <fons@kokkinizita.net> wrote:
On Mon, Feb 08, 2010 at 12:23:28AM -0200, Andre Ramaciotti wrote:
Providing only the latest in the repos is OK, but erasing a previous version **with a different major version number** on a user's system surely isn't, as existing applications will depend on it.
The user should recompile (or update the system) so the applications now use this new version. In extreme cases, you can install the older library version from AUR.
And if the current version of that application refuses to use the new library ? I did re-install gnuplot, it wants a different version.
Ciao,
-- FA
O tu, che porte, correndo si ? E guerra e morte !
Don't forget that it's most likely it's not gnuplot what is failing but some library on which gnuplot depends. Your only choice is to run pacman -Syu or use distro without rolling updates.
Hi fons, On Mon, Feb 8, 2010 at 10:02 AM, <fons@kokkinizita.net> wrote: <snip>
Replacing is allowed only if the major version number stays the same (which implies the lib will be compatible with the one it replaces).
The only alternative to this is making sure that updated versions of all apps are made available as soon as the new library is used by any of them, and this is clearly impossible.
Actually, the new libpng/libjpeg was in [testing] for a couple of weeks while rebuilds were done for every single application in the official repos (including [community] and [community-testing]). They were all moved to [core],[extra], and [community] at the same time. So no, it is not impossible, though very difficult. The devs/TUs have done it.
I'm pretty sure that at the moment a system update or even complete fresh install including texlive, emacs and gnuplot will have the latter two not working. The most recent versions (as of writing) require different libraries.
So, apparently there is no solution.
This would be a bug. I'm pretty sure the most recent versions for all work though, unless your mirror is only partially updated. Haven't had any problems here (though I don't use those specific apps).
On 8 February 2010 10:02, <fons@kokkinizita.net> wrote:
The only alternative to this is making sure that updated versions of all apps are made available as soon as the new library is used by any of them, and this is clearly impossible.
I'm pretty sure that at the moment a system update or even complete fresh install including texlive, emacs and gnuplot will have the latter two not working. The most recent versions (as of writing) require different libraries.
So, apparently there is no solution.
Hi Fons Actually, that's exactly how it was: http://www.archlinux.org/news/482/ Everything was hunted down and rebuilt in testing, before being moved to the repos wholesale. That then results in a huge update for some people, so partial updates would definitely break your system. Hence, -Syu and making sure it completes. -- GPG/PGP ID: B42DDCAD
fons@kokkinizita.net writes:
Hello all,
Today I installed Latex (texlive). Doing this installed new versions of libpng and libjpeg, and this broke emacs, xv and gnuplot (and maybe others I haven't discovered yet).
I was able to make xv work again by removing and re-installing it. This didn't help for emacs, but adding a symbolic link in /usr/lib (to the wrong library !!!) made it work again. But I've been unable to get gnuplot working again, and this is one of my most essential tools.
So what's the Arch way to solve this ?
I find it extremely strange that updating a library removes the original - never seen this on any other distro. Nor is there any need to do this.
Ciao,
Arch is a rolling distro, so it doesn't keep older versions of libraries (except in special cases such as Qt3 and Qt4). The Arch way would be updating your system running 'pacman -Syu' and getting the new version of these packages. Also, check if the mirrors you're using are up to date.
On 02/08/2010 03:21 AM, fons@kokkinizita.net wrote:
Hello all,
Today I installed Latex (texlive). Doing this installed new versions of libpng and libjpeg, and this broke emacs, xv and gnuplot (and maybe others I haven't discovered yet).
I was able to make xv work again by removing and re-installing it. This didn't help for emacs, but adding a symbolic link in /usr/lib (to the wrong library !!!) made it work again. But I've been unable to get gnuplot working again, and this is one of my most essential tools.
So what's the Arch way to solve this ?
pacman -Qs cairo if is different than cairo then is your job to rebuild it against new libpng. -- Ionut
participants (8)
-
Allan McRae
-
Andre Ramaciotti
-
fons@kokkinizita.net
-
Ionut Biru
-
Lukáš Jirkovský
-
Ng Oon-Ee
-
Ray Rashif
-
Robert Howard