zoukankan      html  css  js  c++  java
  • RPMForge——Quick Start build system

    How to setup multimedia on CentOS-5

    CentOS ships with basic sound support for audio content encoded with codecs for a variety of sound formats, including .wav and .ogg files. The alsa-utils and sox audio players are included for a TUI (CLI) environment; xmms is trivial to rebuild SRPMs. The popular full featured xmms player is omitted by the upstream, probably in light of the so-called Fraunhofer restrictions and non-free license requirements to address.

    For those in jurisdictions not affected by such, the following procedures will describe how to setup multimedia support under CentOS 5. After completing the steps below, you should be able to play dvds on your computer. You'll also be able to view different media formats, for example Xvid, dvix, quicktime etc. You will also have mplayer integrated as a browser plugin which will allow you to view streaming video/audio content from within Firefox.

    Some recommendations should be mentioned pertaining to the yum priorities plug-in. This will prevent accidentally overwriting packages from the base repositories. Also note the following needs to be performed as root user in a command line or terminal.

    Please consider following the wiki document to assist in setting up the priorities plug-in, due to the fact that we are adding some third party repositories, described in the Priorities article.

    Step 1: Add RPMforge repository access for your CentOS system. (Required for the majority of multimedia packages.)

    You can read the installation instructions at Installing RPMForge.

    Step 2: Install the multimedia applications.

    The following steps will use yum to install all the packages needed to have full multimedia support. Note there will be a lot of dependencies.

    yum install compat-libstdc++-33 libdvdcss libdvdread libdvdplay libdvdnav lsdvd libquicktime
    yum install flash-plugin mplayerplug-in mplayer mplayer-gui gstreamer-ffmpeg gstreamer-plugins-bad gstreamer-plugins-ugly
    

    Step 3: Install the w32Codecs. (Required for xvid and other proprietary formats.)

    wget www1.mplayerhq.hu/MPlayer/releases/codecs/mplayer-codecs-20061022-1.i386.rpm
    rpm -ivh mplayer-codecs-20061022-1.i386.rpm
    wget www1.mplayerhq.hu/MPlayer/releases/codecs/mplayer-codecs-extra-20061022-1.i386.rpm
    rpm -ivh mplayer-codecs-extra-20061022-1.i386.rpm
    

    You should now have full multimedia and video support for most popular formats.

    RPMForge is now RepoForge.

    You want to spin out some fancy RepoForge action yourself. Test rebuilding SPEC files before asking for a pull request perhaps. Here is a quick start guide with the possible commands you might run:

    • Spin out a new RHEL/CentOS machine

      KVM is your friend if you do not have a spare physical box.

    • Software development tools

        yum groupinstall "Development Tools"
        yum install git
    • Setup mock (available at RepoForge) and use RepoForge mock configuration to build packages

        yum install mock
    • Create a build user

        useradd -G mock repoforge
        sudo -u repoforge -i
    • Checkout the RepoForge RPMs repository (or fork our repo, & checkout your own fork - especially if you plan to submit patches back to us)

        git clone git://github.com/repoforge/rpms.git
    • Setup a build environment

        mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
        mkdir -p ~/rpmbuild/RPMS/{i386,i486,i586,i686,noarch,athlon}
    • Build an RPM for your platform

        rpmbuild -bs file.spec
        mock -r <configfile> rebuild package-1.2-3.src.rpm
    • To build an RPM for an older platform (EL5 package on an EL6 machine):

        mkdir ~/bin
        vi ~/bin/rpmbuild-old
    • Paste the following contents

        #!/bin/bash
        rpmbuild 
            --define "_source_filedigest_algorithm 1" 
            --define "_binary_filedigest_algorithm 1" 
            --define "_binary_payload w9.gzdio" 
            --define="dist .el5" 
            --define="el5 1" 
            $*
    • Make the file executable

        chmod +x ~/bin/rpmbuild-old
    • Now build for EL5

        rpmbuild-old -bs file.spec

    For those serious about doing a good job - build and test at least on RHEL4, RHEL5 and RHEL6 by specifying correct config files to mock builder

    Manually rebuilding a package from RepoForge

    So, maybe you have requested that a package be added to RepoForge, and a maintainer has written back to you something like ”I’ve committed your package; it’ll be available once it’s rebuilt.” You may be thinking “But… How long will that take? I need this now!”

    Alternately, perhaps like this guy you have discovered that shared libraries have changed under your feet, and a package no longer works, and people say things like “just rebuild it”.

    One workaround for situations like these is to manually rebuild the package:

    Set up your environment

    First, make sure your system is configured to pull packages from RepoForge. If you have not already done so, install the latest rpmforge-release package for your distribution and architecture.

    Next, make sure you have development tools installed. The most straightforward way to do this is the following command:

    $ sudo yum groupinstall "Development Tools"

    In addition, you will want the following packages:

    $ sudo yum install rpm-build rpm-macros-rpmforge spectool yum-utils

    Finally, set up your environment such that you can build RPMs as a non-root user. Russ Herrold has written a detailed guide; the parts relevant to this step are parts 2, 3, and 4. For the rest of this document, I will assume that you have set up your build directories as directed by Russ.

    Download the package to be rebuilt

    Determine whether this package is a brand new, never-before-built package (as in the first example at the top of the page) or whether you are rebuilding an existing package (as in the second example). If you are rebuilding an existing package, the process is easier, since you will have access to an SRPM; if you are rebuilding a brand new package, all you will have is the specfile.

    Rebuilding a SRPM

    Browse to http://packages.sw.be/ and download the SRPM for the desired package version. SRPMs are packages with names ending in .src.rpm.

    Once you have downloaded the SRPM, make sure you have all the necessary dependencies to build it:

    $ sudo yum-builddep <package>.src.rpm 

    This process can take some time; if you find that there are dependencies that cannot be met, you may have to manually rebuild those packages as well.

    Once you have the SRPM and all its dependencies installed, run the following command:

    $ rpmbuild --rebuild <package>.src.rpm 

    You will see a lot of output; if the process completes successfully, you will see that among the last of the status messages are lines telling you where rpmbuild has put your newly build RPMs. Here is an example from a build of the rabbitvcs package:

    ...
    Checking for unpackaged file(s): /usr/lib/rpm/check-files /tmp/rpmbuild/rabbitvcs-0.13.3-1.el5-root
    Wrote: /home/shuff/rpmbuild/SRPMS/rabbitvcs-0.13.3-1.el5.src.rpm
    Wrote: /home/shuff/rpmbuild/RPMS/i386/rabbitvcs-0.13.3-1.el5.i386.rpm
    Wrote: /home/shuff/rpmbuild/RPMS/i386/rabbitvcs-nautilus-0.13.3-1.el5.i386.rpm
    Wrote: /home/shuff/rpmbuild/RPMS/i386/rabbitvcs-gedit-0.13.3-1.el5.i386.rpm
    Wrote: /home/shuff/rpmbuild/RPMS/i386/rabbitvcs-debuginfo-0.13.3-1.el5.i386.rpm
    Executing(%clean): /bin/sh -e /tmp/rpmbuild/rpm-tmp.40244
    + umask 022
    + cd /home/shuff/rpmbuild/BUILD
    + cd rabbitvcs-0.13.3
    + /bin/rm -rf /tmp/rpmbuild/rabbitvcs-0.13.3-1.el5-root
    + exit 0

    As you can see, the successful conclusion of this process has dumped a new SRPM and several binary RPMs into the appropriate places in my build tree. At this point, you are all set; just install the newly built RPM.

    Rebuilding from a specfile

    If there is no SRPM available, you will need to find the specfile for the package. To do this, browse the RepoForge repository, e.g.

    https://github.com/repoforge/rpms/blob/master/specs/<package name>/ 

    Download the specfile (.spec) and any included patch files, and put them in the SOURCES directory inside your RPM build tree.

    Next, download the source tarball for the package, as follows:

    $ cd ~/rpmbuild/SOURCES
    $ spectool -g -R <package name>.spec

    You should see one or more source tarballs being downloaded.

    Finally, try to build the package from the specfile:

    $ rpmbuild -ba <package name>.spec 

    If rpm complains about unmet dependencies, use yum to install them; unfortunately, you cannot use yum-builddep to automate the process when building from a specfile.

    From here on, the process is the same as when rebuilding a SRPM.

  • 相关阅读:
    UIActinSheet和UIActionSheetDelegate
    UIWebView和UIWebViewDelegate的基本用法
    iOS开发拓展篇—音效的播放
    【零基础学习iOS开发】【02-C语言】10-函数
    李洪强漫谈iOS开发[C语言-012]-C语言基本数据类型
    iOS开发拓展篇—UIDynamic(捕捉行为)
    【零基础学习iOS开发】【02-C语言】09-流程控制
    李洪强iOS开发拓展篇—UIDynamic(重力行为+碰撞检测)
    李洪强iOS开发之【零基础学习iOS开发】【02-C语言】08-基本运算
    LeetCode 153 Find Minimum in Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/lkzf/p/3898229.html
Copyright © 2011-2022 走看看