On 02/07/2013 05:23 AM, Phil Perry wrote:
On 02/02/13 14:06, Lamar Owen wrote:
On 01/30/2013 08:12 AM, Phil Perry wrote:

I may have jumped the gun here somewhat. Managing the kernel module is
probably the easy part. I forgot about the hard part, and that is
managing the many linked X11 libraries that are also version-specific.

Ok, another track here.

Phil, how difficult do you think it would be to have all the packages be
installable both individually and side-by-side? That is, have multiple
versions of the kmod and the X bits installed, into different
nonconflicting directors? Then, use alternatives to manage the different
trains? That way, I could install the legacy train with the mainline
installed, switch to it with alternatives, and uninstall the mainline,
which wouldn't break dependencies. And, when/if I upgrade my video card
I can install the mainline, switch to it, and uninstall the legacy,
again without breaking deps or configs. I have no idea how difficult
that would be, either.


I guess that sounds doable in principle.

Without knowing how alternatives works, I guess installing each package in it's own space, and then have some script copy all the files to their correct location based on which driver is selected, create the symlinks etc and do any other housekeeping tasks is what would be required. If one can do those things from within a RPM package then I see no reason why a script couldn't handle it too. You would have to call weak-modules to handle the kABI tracking kernel module.
alternative installs each set of files belonging to a package in a separate folder and uses/manages symlinks to link
- the real file to /etc/alternatives/somelocation
- /etc/alternatives/somelocation to the place where the result should be

for instance

[wolfy@wolfy ~]$ ls /usr/lib/sendmail -l
lrwxrwxrwx. 1 root root 30 Jun 7 2011 /usr/lib/sendmail -> /etc/alternatives/mta-sendmail

[wolfy@wolfy ~]$ ls -l /etc/alternatives/mta-sendmail
lrwxrwxrwx. 1 root root 25 Jun 7 2011 /etc/alternatives/mta-sendmail -> /usr/lib/sendmail.postfix

All symlinks are manipulated via alternatives add|remove|set | other commands. At least that is the theory. A simple example can be found at line 94 here: http://pkgs.fedoraproject.org/cgit/ssmtp.git/tree/ssmtp.spec



TBH, any such solution is (a) going to require a major non-trivial rewrite and (b) significantly diverges from the packaging paradigm. For these reasons I'm extremely reluctant to pursue such a solution if for no other reason that adding such complexity is almost certainly going to add an increased risk of unreliability.
Actually it's not very complicated. It's just a looooooong command.




Or maybe a check in %pre that can abort installation of the driver if
the hardware isn't supported, leaving the old one in place?


Can this be done? Can one abort a package installation from a %pre script?
you can exit with an error but...



Even if it is possible, how would one handle deps in a yum transaction? nvidia-x11-drv requires kmod-nvidia of the same version and vice versa. If you abort the installation of one, that will affect other packages in the yum transaction and the depsolve resolution is already done at this point and the transaction underway.
... that's a no-no because any error will fail the whole transaction



The more I look at this whole issue the more I see there are no easy solutions.
This approach would need to make all the [pairsof] relevant kmods parallel installable and at the end a script would detect the correct driver and use alternative to activate it.



Moving forward, I have been writing a utility (nvidia-detect) to detect NVIDIA graphics cards and recommend the appropriate driver. Here is some example output:
Really really nice. That's the first step for the approach above.
_______________________________________________
elrepo mailing list
[email protected]
http://lists.elrepo.org/mailman/listinfo/elrepo

Reply via email to