понедельник, 16 февраля 2009 г.

Manage extra software channels in RHEL

It's not difficult, really.

Try to manage package channels (aka repositories, repos), but not standalone packages, when you installing something outside your main channel. This save you from dependencies hell and make your updates rather smooth.

For example let's update RHEL 5.2 to 5.3 and make all your media playable with standard gstreamer engine via Totem/Rhythmbox players.
  1. Disconnect all extra channels during update, you can update them later
  2. During update you can have dependencies problems, just remove problem packages
  3. After update you can plug in extra repos and restore removed packages

    To have your media playable you need 2 additional packages (not distributing in main channel be course US still have software patents) with necessarily plugins:
    gstreamer-plugins-bad
    gstreamer-plugins-ugly

  4. Connecting extra RPMforge channel (former DAG, more RHEL friendly then Livna)

    This extra channels not support latest RHEL updates and using "Just works" method. So we need to make downgrades packages from main channel to work with them. You don't need mix several channels with packages duplicates - this can give you only extra headache.
    So let's install packages, resolving conflicts with managing channels.

  5. First, install gstreamer-plugins-bad:

    yum install gstreamer-plugins-bad
    it's conflicting with libdvdread.so.3 library, let's see wich package provides it:

    yum provides libdvdread.so.3
    we got libdvdread package, we need to downgrade it.

  6. Let's remove it to replace with extra channel version.

    yum remove libdvdread
    this can give us some more dependacies. You are going just replace it with older version, so you can be free to ignore them:

    rpm -e --nodeps libdvdread

    Now you can continue installation:
    yum install gstreamer-plugins-bad


    This installs libdvdread from RPMforge channel by dependencies. First done.

  7. Next, let's install gstreamer-plugins-ugly:

    yum install gstreamer-plugins-ugly

    we got conflict with latest gstreamer-plugins-good package from main channel.
    Reason - main channel have 0.10.9 gstreamer version, extra channel using 0.10.3.
    Solution - with help of RHN or RPM Search we can find close 0.10.4 version in RHEL 5.2.

    Let's downgrade this package to RHEL 5.2 version.

  8. To downgrade package gstreamer-plugins-good you need remove current version:

    rpm -i --nodeps gstreamer-plugins-good

    Then download package from RHN or here and install it with:

    rpm -i --nodeps gstreamer-plugins-good-0.10.*.el5.i386.rpm

    And restrict future RHEL updates of this package. Just add line to /etc/yum.conf:
    exclude=gstreamer-plugins-good
Done. Now you have system configuration, which have extra gstreamer plugins packages with necessary codecs and ready for updates.