Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1047322
  • 博文数量: 254
  • 博客积分: 10185
  • 博客等级: 上将
  • 技术积分: 2722
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-25 15:04
文章存档

2011年(8)

2009年(1)

2008年(31)

2007年(214)

分类: LINUX

2007-07-25 16:52:04

本文的目的是仅仅是简单的介绍如何在Fedora下安装运行软件。
基础知识:需要有一点编程知识,至少要了解c语言的编译过程。
所遇到的问题:fedora当中很有软件通常不是安装一个RPM包就可以解决的;很多软件包需要编译,这时软件包所对应的kernel和你c语言lib库版本,甚至你的gcc编译器都有可能影响软件安装。
准备工作:了解所装 fedora内核版本gcc版本
uname -r
2.6.15-1.2054_FC5
gcc -v
gcc 4.1.0 20060304 (Red Hat 4.1.0-3)

A:获取和安装软件包
    专门在Fedora和RHEL上运行的软件通常是用RPM格式存储的。大部分的Fedora和RHEL本身就是RPM格式的,那么,如何获得RPM格式的软件包呢?
    1:安装CD和DVD--这个方法比较简单,插入CD,进入所在软家包的目录,使用RPM安装就可以,你可以看看CD中的内容
    2:Fedora和FHEL官方的软件库--这里是包含了经过Fedora项目认可的软件库,你可以在网络上找到。
    下面是Fedora5的官方软件库
   
    提供了大量的官方认可的软件包,通常这些都是光盘中已经包含的。
      
     官方提供的额外软件包,他不提供其他任何支持。
    3:第三方的Fedora软件库。这些软件由于受到版权或者其他问题,官方软件库并没有提供。但是很有用,譬如你要播放MP3,但是使用他们的时候要注意,因为很可能不够安全。
    4:软件项目站点。
    有些应用程序本身就是持续开发的项目,他们有自己的站点,这些站点一般都会提供RPM包
      下面是WINE项目的站点
   
B:使用yum下载和安装应用程序
    Yellow Dog Updater,Modified(yum)可以帮助你从已经配置好的软件库中下载和安装软件包,甚至会考虑到软件包之间的依赖关系。这个是安装软件包最好的方法。
    1,配置yum
    也就是配置/etc/yum.conf
    [main]
    cachedir=/var/cache/yum 缓存目录
    keepcache=0    确定缓存文件是否要保存
    debuglevel=2     调试级别
    logfile=/var/log/yum.log    日志文件的位置
    pkgpolicy=newest    尝试请求软件包的最新版本
    distroverpkg=redhat-release        确定yum所下载的linux发布版本信息
    tolerant=1    这个选项表示yum在编译的过程中是否“宽容”,为1的话,yum会忽略很多错误         
    exactarch=1  这选项在yum更新的时候有用,他用来确定是否在i386上更新i686的软件包,选1的话是不更新(需要设定的功能太多有的时候也很麻烦)
    obsoletes=1  这个选项在yum(8)中有详细的介绍,他是一个命令行参数,我们以后可以去看看
    gpgcheck=1  是否检查gpg  GNU Privacy Guard可以用于加密
    plugins=1    是否显示插件,有必要设成1,这选项在默认的时候是0。
    metadata_expire=1800   

    # PUT YOUR REPOS HERE OR IN separate files named file.repo   
    # in /etc/yum.repos.d
    这里所谓的repos其实就是软件库,你可以打开/etc/yum.repos.d看看
      

C:添加yum软件库
      打开/etc/yum.repos.d可以看到软件库 默认的是fedora官方的软件库
       [root@localhost documents]# cd /etc/yum.repos.d/
       [root@localhost yum.repos.d]# ls
       fedora-core.repo         fedora-extras-development.repo  fedora-legacy.repo   fedora-updates-testing.repo
       fedora-development.repo  fedora-extras.repo              fedora-updates.repo
       添加一个软件库的准备工作是要明确你需要添加的软件库的确切位置 GPG密钥,(GNU Private Guard ,一种密钥方法,实现RFC2440 中定义的OpenGPG标准,自由软件,GPG提供命令行形式的应用,可以轻松集成到其它应用程序中)
       打开其中一个repo看看
       内容解释下
       [core]
       name=Fedora Core $releasever - $basearch        名字。$releasever其实就是你fedora的版本号,$basearch这个对于我来说就是i386
       #baseurl=      基本地址
       mirrorlist=        镜像列表
       enabled=1       本repo是否激活
       gpgcheck=1       是否启用gpg检查
       gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY         这个是GPG密钥的地址

      [core-debuginfo]
      name=Fedora Core $releasever - $basearch - Debug
      baseurl=
      enabled=0
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY

      [core-source]
      name=Fedora Core $releasever - Source
      baseurl=
      enabled=0
     gpgcheck=1
     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
   
      现在说一下我所知道的yum的方法,还不一定准确,yum会检查baseurl/repodata/repomd.xml,这个索引文件,找不到的会失败的。所以添加软件库的时候要注意一下,特别是第3方软件库
     
      我们现添加一个软件库,就把传说中的rpm.livna.org软件库加进来,嘿嘿O^O
      按照上面的格式来写
      [livna]
      name=livna $releasever - $basearch
      baseurl=   当然这里你还可以用
      enabled=1
      gpgcheck=1
      gpgkey=
      保存为livna.repo就可以了。
       现在yum install mplayer
       下载个mplayer看看    (mplayer对偶这样的家伙很合适,不过就是操作性太差劲了)
       注意:1,看看你的所选择的基础地址下面 有灭有/repodata/repomd.xml.
                    2,gpgkey这个要找对位置,也可以下载到本地文件中。一般是放在file:///etc/pki/rpm-gpg/目录下
        现在介绍yum的命令参数
        安装
        yum install 软件名
        列表
        yum list I less
        查找
        yum provides 软件名
        单个软件升级
        yum update 软件名
        全部升级
        yum update (这个命令的时间会很长,对于我来说恐怕要一个星期的时间)
        删除安装后的软件包
        yum clean packages (这个命令会把你存放在/var目录下的包全部删掉)
D:使用yum自动更新。
        首先yum是一个服务      
        [root@localhost ~]# chkconfig --list yum
        yum             0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭
        然后我们让他在3和5模式下自动运行
        [root@localhost ~]# chkconfig --level 35 yum on
        [root@localhost ~]# chkconfig --list yum
        yum             0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭
       这样你就可以在开机的时候自动运行yum了。(太久没有进行过更新的话不要用这种方法)
E:其他YUM的用法
        可以用YUM从安装CD中安装软件
        添加一个cd.repo文件,内容如下:
        [cd]
        name=livna $releasever - $basearch
        baseurl=file:///mnt/cdrom    这个是你挂载光驱的目录
        enabled=1
        gpgcheck=1
        gpgkey=file:///mnt/cdrom/RPM-GPG-KEY   这个是GPG密钥。
        完成,其实这样做不是很有必要

F:关于RPM的工作方法问题
       软件包管理器,其实按照我自己的理解,他就是个类似rarlinux的归档管理器,只不过用有自己特定的释放方式。现在我们找一个例子来实验一下
       rpm -Uvv alsaplayer-0.99.76-2.2.fc4.i386.rpm
       这个软件包是我随便找的,不必在乎他是是么 -U表示安装,v表示显示信息,vv就表示显示更详细的信息
       把显示内容当中对我们有用的挑出来
       D: opening  db environment /var/lib/rpm/Packages joinenv
       D: opening  db index       /var/lib/rpm/Packages rdonly mode=0x0
       D: locked   db index       /var/lib/rpm/Packages
       D: opening  db index       /var/lib/rpm/Pubkeys rdonly mode=0x0
       warning: alsaplayer-0.99.76-2.2.fc4.i386.rpm: Header V3 DSA signature: NOKEY, ke y ID e42d547b
       D: opening  db index       /var/lib/rpm/Providename rdonly mode=0x0
       以上应该是打开一个数据库,恩恩恩 就是RPM数据库
       D:      added binary package [0]    增加一个软件包
       D: found 0 source and 1 binary packages                  没有源文件,有一个2进制的软件包1
       D: opening  db index       /var/lib/rpm/Depends create mode=0x0
       D: opening  db index       /var/lib/rpm/Basenames rdonly mode=0x0
       D:  read h#    1166 Header sanity check: OK              读取h# ,貌似是头文件 ,检查h#的需求
       D:  read h#     161 Header V3 DSA signature: OK, key ID 4f2a6fd2
       D:  Requires: /bin/sh                                       YES (db files)
       D:  Requires: /bin/sh                                       YES (cached)
       D:  read h#      88 Header V3 DSA signature: OK, key ID 4f2a6fd2
       D:  Requires: libFLAC.so.7                                  YES (db provides)
       D:  read h#      95 Header V3 DSA signature: OK, key ID 4f2a6fd2
       D:  Requires: libGL.so.1                                    YES (db provides)
       D:  Requires: libOggFLAC.so.3                               YES (db provides)
       D:  read h#      48 Header V3 DSA signature: OK, key ID 4f2a6fd2
       D:  Requires: libX11.so.6                                   YES (db provides)
       D:  read h#      49 Header V3 DSA signature: OK, key ID 4f2a6fd2
       D:  Requires: libXext.so.6                                  YES (db provides)
       D:  read h#      54 Header V3 DSA signature: OK, key ID 4f2a6fd2
       D:  Requires: libXi.so.6                                    YES (db provides)
       D:  read h#     398 Header V3 DSA signature: OK, key ID 4f2a6fd2
       D:  Requires: libasound.so.2                                YES (db provides)
                                                             .
                                                             .
                                                             .
                                                             .
        看来h#的要求没有办法被满足,那么输出错误的依赖关系
       error: Failed dependencies:
        libid3tag.so.0 is needed by alsaplayer-0.99.76-2.2.fc4.i386
        libmad.so.0 is needed by alsaplayer-0.99.76-2.2.fc4.i386
        libsndfile.so.1 is needed by alsaplayer-0.99.76-2.2.fc4.i386
        libsndfile.so.1(libsndfile.so.1.0) is needed by alsaplayer-0.99.76-2.2.f c4.i386
        libxosd.so.2 is needed by alsaplayer-0.99.76-2.2.fc4.i386
       下面是关闭数据库
       D: closed   db index       /var/lib/rpm/Pubkeys
       D: closed   db index       /var/lib/rpm/Conflictname
       D: closed   db index       /var/lib/rpm/Providename
       D: closed   db index       /var/lib/rpm/Basenames
       D: closed   db index       /var/lib/rpm/Packages
       D: closed   db environment /var/lib/rpm/Packages
       D: May free Score board((nil))
       由此我可以粗略的知道RPM的工作方式:
       1,打开rpm数据库
       2,从.软件包中提取h#,并且检查h#的需要是否被满足?(这里的依赖关系,有的是软件包自己给出的,有的是你系统自带,当然还可能有你没有的。)
             是:转第4步  不是:转第3步
       3,显示失败的依赖关系
       4,安装软件,解压缩软件包,并且放到合适的位置,这里应该是有一定的规则。
       5,关闭rpm数据库
       显然,我这个软件包不满足依赖关系,如果强制用-force安装的话可能出错误。
       如果你失败了,那就少什么补什么...这个么 ?具体的东西么 T^T 以后研究吧
G:使用RPM安装和管理软件包软件包
        介绍一下参数.
        -U 升级,也包括安装
        -F 刷新,就是全体升级,不包括安装
        -v 显示详细信息, -vv显示更加详细的信息
        -h 显示文件释放的进度
        --force 嘿嘿 强制安装,这里强制安装不是忽略依赖关系,而是强制安装老版本或者是旧的软件包
        --nodeps 忽略依赖关系,这个不可靠的
        --ignorearch 这个连主机构架都可以忽略.真的有用么?
        -e 删除软件包
        -q 查询软件包
        -qa 列出所有已经安装的软件包
       -qf file 列出该文件属于那个软件包
       -qi 列出软件包的详细信息
       -qR 列出所有软件包的倚赖关系
       -ql 列出软件包的所有文件
       -qd 列出软件包所有的文档
       -qc列出软件包所有的配置文件
       -qd列出未安装软件包的信息
阅读(1158) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~