[Bug 804070] New: User can no longer update various, commonly-updated, components on their system.
https://bugzilla.novell.com/show_bug.cgi?id=804070 https://bugzilla.novell.com/show_bug.cgi?id=804070#c0 Summary: User can no longer update various, commonly-updated, components on their system. Classification: openSUSE Product: openSUSE 12.1 Version: Final Platform: x86-64 OS/Version: Other Status: NEW Severity: Critical Priority: P5 - None Component: Development AssignedTo: bnc-team-screening@forge.provo.novell.com ReportedBy: suse@tlinx.org QAContact: qa-bugs@suse.de Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.28) Gecko/20120306 Firefox/13.6.28 Perl is a scripting language with strong historical usage in system administration. This means end users and system admins use it to write scripts to administer their system. It it doesn't pretend to be a binary interface, nor is it published as one. It is a scripting language, first and foremost. OpenSuSE 12.1 removed support for development and system administration from the end user in the latest, bug-fixed versions of perl. Developers of utilities for system maintenance (i.e application developers), locked in the version of perl, they require, to a specific binary version -- because rather than relying on perl as a scripting language, they are creating dependencies on the unpublished, and unstable binary interface. To create dependencies on an unpublished and unstable interface, is bad practice. The result of this, is that to reserve their "bad practice", they now prohibit the user from installing any newer perl that might change the unpublished and unstable binary interface. If an application ships that needs a specific binary interface to perl, I would suggest they build such a library and reserve a special copy of it in a application specific location, or, better, a common location for common usage of that-specific perl version. However, they cannot reserve the perl namespace for their private usage on a user system, where may want to upgrade it. Compare this situation to the following parallel and perhaps you'll better understand the problem. A user is used to using MS-OFFICE Visual Basic to do their work. They even have automated tasks that run, based off of this scripting language. Another company creates a product to manage users on a MS-based network. They decided to use Visual Basic to do their interface, but for some reason, used an unpublished, binary interface to call Visual Basic directly from their program rather than using it as a scripting language. As a result, they require a specific version of Visual Basic -- VB 6.0.17-build1097, for their stuff to keep working. So they put hooks into the Windows-system installer that disallow upgrading Visual Basic. Of course new versions come out all the time, including those fixing bugs and security problems. But now the user can't upgrade due to some 3rd party developer's bad design. First, it wouldn't happen on Windows, because MS allows developers that need specific versions to ship "run-time-libraries" with their product that sit in the application installation directory. MS also, in Win7, started supporting Side-by-Side copies of, frequently used, development-runtimes. This means if different applications were developed and tested with different versions of a runtime library, both of those libraries can be added "in parallel", to a system-area for holding multiple-versions of commonly used development runtimes. In other words, MS would consider it silly for some application developer to tell users "we own this app, and you can no longer update it on your system", when the app developer is the one who caused themselves grief by relying on an unpublished and unstable binary interface! Nevertheless, they supported the development practice of requiring a specific version of a runtime by allowing multiple runtimes to exist at the same time in a versioned, runtime-lib space, while the user is free to update the product they use -- Office that has scripting support, to any version they want. Opensuse projects and developers cannot reserve specific versions as being the ONLY versions that can be installed in common system binary and library path. Those common paths are used by all programs, and to disallow updating them to "a current release" (or a newer release) than is installed on the system is an unacceptable practice. Note, the same problem exists with Tcl, Python, Ruby, gcc, etc. All of those languages come out with new versions that some users will want to update or upgrade on their system. Having parts of the underlying OS block such upgrades needs to be forbidden. Telling users they can't upgrade the software on their machine because the maker of the some application only tested with a specific version takes away the ability of the user to use the software of their choice on their system. In short, some opensuse projects are sealing off large portions of the system from the user that the user has commonly had free access to upgrade -- and still, on an open-source system, **should**. This needs to be fixed ASAP as system-applications like YAST now forbid the user upgrading their Perl to the latest official release that supports Unicode fixes. We aren't talking about the user trying to install older versions of the software in system libraries than came with the system. As has been pointed out -- it is COMMON practice to allow system libraries and utilities to be upgraded to NEWER versions. This is too widely held and used practice to be taken away from users. Part of the problem here is by SuSE's own making in having each new version of an application language eliminate and replace all previous versions. The claim is made in the installation-specifications (rpmspecs) of the new packages that they TAKE THE PLACE of all prior versions. If this is NOT true, and applications require specific versions of the previous products, then it CANNOT be said that the new version *replaces* the old version. The old version needs to be allowed to remain until the last software that requires it is removed from the system is removed. Once the last piece of software that was developed to require a *specific* version is removed from the system, the installation system can remove the old copy. Right now, I have 4 versions of Microsoft's .Net framework installed on my system -- a 32-bit and 64-bit version of each of v2.0.50727 and v4.0.30319. If projects in OpenSuSE are going to require specific binary libraries -- then they need to support multiple versions or keep their needed version in a project specific directory -- but they cannot take user application update ability from the users because they have committed the cardinal sin of not restricting themselves to the stable and published API. Reproducible: Always Steps to Reproduce: 1. Try to install a perl5.16.1 rpm on a suse 12.1 system 2. Watch yast block the installation because it's got hard-coded dependencies to a specific, and older version of the product. 3. Try various ways to install lastest perl -- copy from suse 12.2 or factory, or rebuilt from opensuse's own 5.16 source RPM's, and note yast (and vim) are hard coded to use 5.14. vim is easily fixable, yast -- not so much. Actual Results: User cannot upgrade applications to their current versions. In trying various workarounds, rebuilding 5.16 for 12.1, or trying to install the 5.16.x from 12.2 or factory, various system instabilities can be caused. Expected Results: User can upgrade open-source software on their system to later versions without headache. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c1
Cristian Rodríguez
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c2
L. A. Walsh
So question -- if I build a binary on OBS -- can I specify what OS it is being built for? Or is it always going to build for factory? Yes, <repository name="openSUSE_12.2"> <path project="openSUSE:12.2" repository="standard"/> <arch>x86_64</arch> <arch>i586</arch> </repository> I.e. if I take the source rpm for "12.2/3 can I tell OBS to build it in a 12.1 environment? Yes. ==========================
I'm not alone in thinking this is a supported use case. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c3
Cristian Rodríguez
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c4
L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c5
Cristian Rodríguez
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c6
--- Comment #6 from L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c7
Christian Boltz
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c8
--- Comment #8 from L. A. Walsh
Linda, if you check "rpm -ql" of the packages blocking the perl update, you'll notice that they place files in versioned directories, for example (taken from current factory) /usr/lib/perl5/vendor_perl/5.16.2/x86_64-linux-thread-multi/.
In other words: updating perl means you have to update/recompile *lots of* packages. This is possible (otherwise updating perl in Factory would be impossible) - but it is not as easy as, let's say, updating to a new KDE version.
If you have a good idea how to make the dependencies less strict, I'm sure the perl maintainer will accept your patch.
There are 2 things that I do to deal with that issue, as I've been updating my perl like this for several years, at least (and have never had an issue with it affecting yast) -- the difference has been that I usually have done it from the sources and not tried it from the RPM's Perl's configuration script, by default, will include the previous generation's include directories, because *they* assume most people will want them and they have a high enough confidence that they will work, that they put this as a default in the "perl-for-dummies" installation script. What I usually have done after an upgrade (before if I'm more alert than I've been of late), is go into cpan and create a dump listing of all the installed modules ("cpan -a"). Then after I have installed the new perl, I first try the recompile command in cpan ("cpan -r") which "Recompiles dynamically loaded modules" -- that should fix any hiccups in dynamic compatibility. Rebuilding the opensuse modules would be an easier task...there are far fewer of them on my system than other modules. Right now, I have about 20 modules that don't want to compile and build the latest version -- I'm not sure howmany of those are opensuse packages, but to give you an idea of the likely hood of those being "important": I have 145 openSUSE module RPM's installed. (there may be more than one package in an RPM, but usually the package is named after the module -- indicating that usually it is closer to a 1:1 relation. So call 1000 of those openSUSE maybe? That's out of 6198 modules listed in my latest autobundle snapshot. Note -- the actual perl library -- for things like what gvim would use, livs in /usr/lib64/libperl.so (if you've built it generically). Vim doesn't require perl to function -- it's a runtime loadable feature -- if it doesn't load, vim still works -- some perl scripts used by some extensions to perl won't function. I just removed the ones that caused problems and that complained I had the wrong version of perl installed. (because the editor itself doesn't depend on any of those script languages -- there is no reason NOT to let it load them at runtime -- at least you will still have an editor, if not your favorite extension).. Does the above sound ignorant and unrational? As for submitting a patch. I've already been told it wouldn't be accepted -- the change TO hard coding the version dependencies came in 12.1 -- they want to keep it -- but it's BAD software practice for open-source software where users can always rebuild and install the latest versions from the sources upstream of suse -- which they are far more likely to do if suse's rpm's won't install due to interlocking version dependencies (which have been there for a while). But now they are also interlocking the binaries requiring huge amounts of software to be rebuilt. It's the interlocking binaries that is the most problematic, which they did, because they claim not doing so caused problems. However, when I asked what problems were caused or bugid's, I was met with silence. Very often at suse, I've seen problems and fault placed squarely on the wrong piece of software. Due to a bug in *grub*, xfs dropped from being the default FS, and was actually cautioned against (and said to be unsupported) as a root file system. But the problem wasn't in XFS -- but in grub. Rather than taking the approach that grub needed to be fixed before moving people onto it, the approach is to drop all other software that gets in the way. That narrow-focus attitude is creating great harm. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c9
--- Comment #9 from Christian Boltz
Perl's configuration script, by default, will include the previous generation's include directories, because *they* assume most people will want them and they have a high enough confidence that they will work, that they put this as a default in the "perl-for-dummies" installation script.
That sounds like a good idea when compiling your own perl, but I doubt it makes sense on a distribution level ("openSUSE 12.3 supports perl module paths from 12.2" doesn't sound too useful IMHO).
Note -- the actual perl library -- for things like what gvim would use, livs in /usr/lib64/libperl.so (if you've built it generically).
Vim doesn't require perl to function -- it's a runtime loadable feature -- if it doesn't load, vim still works -- some perl scripts used by some extensions to perl won't function.
That's probably why the perl requirement is only in the vim-enhanced package, and not in the base package. I can't and won't go too deep in technical details because I don't know all details, which is for sure needed here before judging.
I just removed the ones that caused problems and that complained I had the wrong version of perl installed. (because the editor itself doesn't depend on any of those script languages -- there is no reason NOT to let it load them at runtime -- at least you will still have an editor, if not your favorite extension)..
That probably depends on the POV. Maybe some people would say a "Recommends" is enough, and others say a "Requires" is needed because otherwise some features won't work.
As for submitting a patch. I've already been told it wouldn't be accepted -- the change TO hard coding the version dependencies came in 12.1 -- they want to keep it
Who is "they"? Names or, better, links to the ML archive would be helpful. [rant removed]
However, when I asked what problems were caused or bugid's, I was met with silence.
Well, I somehow understand that - let's just say that I sometimes need some popcorn while reading your mails, which might also cause that people don't want to be involved in endless discussions with you.
Very often at suse, I've seen problems and fault placed squarely on the wrong piece of software. Due to a bug in *grub*, xfs dropped from being the default FS, [...] That narrow-focus attitude is creating great harm.
I don't think this is a general problem. Sure, sometimes strange things happen, but I'm sure there are good reasons for it. (Worst case is that "good reasons" means "no time to fix it" - but even this is a valid reason.) I met lots of the guys working at SUSE on conferences, and they are all friendly (I even survived my "1001 bugs" talk where I brought the "best" bugs onto the stage at the openSUSE conference ;-) and they know what they are doing (that is not meant sarcastic - I'm serious about that). -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c10
--- Comment #10 from L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c11
--- Comment #11 from L. A. Walsh
Created an attachment (id=525365) --> (http://bugzilla.novell.com/attachment.cgi?id=525365) [details] a diff to the rpm-spec file for vim to change to dynamic linking for supported libs
Sorry, I think it was unclear in the patch this patch was against the lastest source in factory (7.3.785-1.6.src.rpm). -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c12
--- Comment #12 from L. A. Walsh
That sounds like a good idea when compiling your own perl, but I doubt it makes sense on a distribution level ("openSUSE 12.3 supports perl module paths from 12.2" doesn't sound too useful IMHO.
---- One of the issues you mentioned earlier for not supporting previous version paths was that each version of perl put libraries into V.Maj.min subdirectories. When it was said that perl can include previous version subdirs, it sounds like circular logic -- saying that previous version compatibility wouldn't be useful on a distribution level. But that's exactly what we are talking about -- One of the reasons given for putting the perl version in the binary is because the location of the binary directories is moved with each version. It seems that it was with that in mind, the ability to include 1 or more previous version directories became a solution to allow people to 'recently old', libs. I noted with Vim, only perl had its version locked -- python and ruby, in fact are not even included in the list of dependencies of perl. Yet they included in the same way perl is. So why perl? If perl provided a generic non-versioned link (perl.so => perl.so.5.16.2), to the versioned link, then programs like 'vim' could continue to use the generic interface, as mostly, vim's usage is for users to run their scripts -- vim doesn't require it anymore than it requires ruby or python.
From a user perspective (vs. the technical perspective, above), the reasons it makes sense when compiling your own perl to include previous recent-version lib-dirs is that there is a long lag time before all systems remake all of their extensions to exist in the new directories.
That's probably why the perl requirement is only in the vim-enhanced package, and not in the base package.
But I want to be able to use the enhanced features some of the time but not have my editor disabled if one of those requirements goes missing. On windows, Vim automatically adapts (at load time) to the absence or presence of run-time loadable libraries: iconv (international charset conversion), perl, 2 versions of python, ruby and tcl. It's been built that way for the past several years (at least for perl) --- and the makefile options are already present in the in linux rpm. ready -- they just have to be used. AFAIK, it doesn't Note -- in the patch someone added a dependency for 'systemd' -- yet vim doesn't require systemd to run. It generates a "temp-description file", that systemd can use -- but if systemd isn't there, that won't affect vim. I don't know if that was put in there just to make all packages require systemd in 12.3 or if they misunderstood what dependencies were. Vim also comes
I just removed the ones that caused problems and that complained I had the wrong version of perl installed. (because the editor itself doesn't depend on any of those script languages -- there is no reason NOT to let it load them at runtime -- at least you will still have an editor, if not your favorite extension)..
That probably depends on the POV. Maybe some people would say a "Recommends" is enough, and others say a "Requires" is needed because otherwise some features won't work.
If one don't install "all of suse", some features of the distribution will be missing. Is that a reason for any package in the distro to require every other package? I'm talking about hard-coded pathnames and versions being bound into the binary of vim.
As for submitting a patch. I've already been told it wouldn't be accepted -- the change TO hard coding the version dependencies came in 12.1 -- they want to keep it
Who is "they"? Names or, better, links to the ML archive would be helpful.
The other Christian said that any patch submitted to undo the hard-coded versioning wouldn't be accepted, because that's the way they want it -- and it's not going to get fixed.
Well, I somehow understand that - let's just say that I sometimes need some popcorn while reading your mails, which might also cause that people don't want to be involved in endless discussions with you.
Example -- how do I call a script early in the systemd bootup phase to have it mount my /usr partition before it does anything else. No one knew systemd well enough to tell me how this might be possible. I even asked, simply, how to turn off it's flipping my video mode on bootup. Again -- no one new. Once I found the time to do either of them -- the former took a few hours, the latter took a kernel regen (I removed the video driver for my card from the kernel -- so it couldn't flip the mode -- not the BEST solution, but if there is no other...?)
I met lots of the guys working at SUSE on conferences, and they are all friendly (I even survived my "1001 bugs" talk where I brought the "best" bugs onto the stage at the openSUSE conference ;-) and they know what they are doing (that is not meant sarcastic - I'm serious about that).
I have generally presumed so, but if the reasoning looks flawed and it looks like they rats running a maze because they were told to run the maze, I want to know. When I ask 'why' questions, the responses of many indicate they don't know. When I suggest alternate workaround I'm given no consideration. With systemd, they have it boot -- but they need to call & boot /usr right after udev starts -- as for some other probs -- they also need to let "LVM" start before mounting local file systems (but that's another matter). Changes seem to be getting pushed through whether they sre needed or not -- and I say not, only because I often suggest multiple way the same things could be accomplished to achieve the stated goal, yet am still given the brush off. That tends to make me not want to give up because I feel that both parties can have have what they want if they did it a different way, and to me that simply seems like the right choice? Trying to stay away from rant...... -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c13
L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c14
--- Comment #14 from L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c15
--- Comment #15 from L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c16
Andreas Jaeger
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c17
L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c18
--- Comment #18 from L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c19
Andreas Jaeger
From the upstream bug: And just to be clear, we guarantee binary compatibility across minor versions, but not across major versions.
So an XS module compiled under 5.14.1 will continue working if the installed perl is upgraded to 5.14.3, but not if to 5.16.0: it will need to be recompiled then. And also: "The version of perl which your vendor (SUSE, in this case) supplies -- typically as /usr/bin/perl -- is for the *vendor's* use. The vendor is entitled to use it to run programs that come as part of their distribution. You, the customer, are permitted to use that, but if your own needs require you to make heavy use of CPAN distributions or to periodically upgrade perl to a new major version, then you are better off building your own perl from source or getting a release tarball from perl.org and installing perl in some place like /usr/local/bin/perl." The specific patch you have for vim is something we can add if the vim maintainers agree. -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c20
Andreas Jaeger
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c21
--- Comment #21 from L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c22
--- Comment #22 from L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c23
--- Comment #23 from L. A. Walsh
https://bugzilla.novell.com/show_bug.cgi?id=804070
https://bugzilla.novell.com/show_bug.cgi?id=804070#c24
--- Comment #24 from L. A. Walsh
That's to default to using only the MAJ-MIN versions for perl's lib directories.
Sorry, left off example... for current perl, that would be just "5.16" (leave off the 3rd num). A patch for current systems to transition to that to such a system is to use symlinks for 5.16.0, 5.16.1 => 5.16.cur... -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
http://bugzilla.novell.com/show_bug.cgi?id=804070
--- Comment #32 from Bernhard Wiedemann
participants (1)
-
bugzilla_noreply@novell.com