Linux之软件包管理  

  软件包管理有一般有3种机制:源代码方式、RPM、YUM

  软件包的组成格式与存放路径:

      1、二进制程序

        主要存放的路径:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin, /usr/local/APP/{bin,sbin}

      2、库文件(开发库、运行库)

        主要存放的路径:/lib64, /usr/lib64, /usr/local/lib64, /usr/local/APP/lib

      3、配置文件

        主要存放的路径:/etc, /usr/local/APP/etc或conf目录

      4、帮助文件

        主要存放的路径:/usr/share/man, /usr/local/share/man, /usr/local/APP/man


   源码方式:源代码打包成tar.gz的归档压缩文件直接使用,编译成可执行的二进制文件才能运行使用。操作复杂、编译时间长、极易出现错误。由于源代码方式安装软件比较麻烦,因此出


现了许多代替源码方式安装的软件管理机制:RPM、YUM,使用简单、单一软件包格式发布、可升级、追踪依赖关系、保存软件基本信息、软件验证功能、支持多平台。

   RPM(redhat Package Manager)命名格式

   RPM包:zip-3.0-10.el7.x86_64.rpm

   zip:软件名称

   3.0-10:版本号(3.0主版本号,10次版本号)

   el7.x86_64:rpm包的运行平台的操作系统版本

   RPM包管理:校验、安装、升级、卸载

   RPM包校验:来源的合法性、软件包的完整性。必须导入了官方提供的公钥,才可以验证。Linux系统自带的公钥一般放在/etc/pki/rpm-gpg/下,后缀为release的就是公钥,没有这个公钥


,那个后缀为系统名加版本号的就是公钥了

   导入密钥:rpm --import /PATH/TO/KEY_FILE

       校验:rpm -K /PATH/TO/RPM_FILE

  RPM校验命令

  语法:RPM  {-V|--verify} [select-options] [verify-options]

  常见参数选项

      S:文件大小

      5:文件的md5校验值

      L:链接文件

      T:文件创建时间

      D:设备文件

      U:文件的用户

      G:文件的用户组

      M:文件的权限

  RPM包安装命令

  语法:rpm  –i[v|h]  [--excludedocs |prefix |test |replace[pkgs |files] |nodeps] FILE...

        i:安装

        v:显示详细信息

        h:hash是进度信息

  常用参数选项

      --nodeps:忽略依赖关系安装

      --replacepkgs:重装程序包

  RPM包升级命令

  语法:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

        rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

        -U:升级

        -h:解压打印#

        -v:显示详细信息

   常用升级命令组合

        -Uvh: 升级包(有旧版程序包,则升级;如没有,则安装)

        -Fvh: 升级(安装包存在旧版程序包,则升级;如没有,不安装)

    --nodeps:忽略依赖关系

    --oldpackage:降级

    --force:强制

   RPM包卸载

   语法:rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

   常见参数选项

       -e:删除包

   RPM包查询

   语法:rpm {-q|--query} [select-options] [query-options]

   常见组合参数

       -qa: 查询本机已经安装的所有程序包;

       -qf /PATH/TO/SOMEFILE: 查询此处的文件由哪个程序包安装生成;

       -qc: 查询指定程序包安装生成的配置文件

       -qd: 查询指定的程序包安装生成的文档

       -qi: 查询指定的程序包的相关信息

       -ql: 查询程序包安装生成的所有文件的列表

       -q --scripts:查询程序包相关的脚本:

          preinstall: 安装前脚本

          postinstall:安装后脚本

          preuninstall: 卸载前脚本

          postuninstall: 卸载后脚本

        -p: 查询针对是未安装的程序包文件

   练习:

    1、挂载cdrom至/media/cdrom,用rpm命令安装nmap工具,注意查看参数

Linux之软件包管理_rpmLinux之软件包管理_repo_02

    2、安装tomcat-lib-7.0.54-1.el7.noarch.rpm,如果有依赖包无法安装可忽略或者使用强制安装,然后卸载,并查询安装情况

Linux之软件包管理_rpm_03

    3、查看当前本机所有已安装程序包,查看nmap安装包生成哪些文件列表、生成配置文件、包相关信息

Linux之软件包管理_rpm_04Linux之软件包管理_rpm_05

    yum命令软件包管理器,交互和自动化地从指定的服务器自动下载RPM包并且安装,自动处理依赖性关系。 

    语法:yum[选项][参数] 

    常见参数选项 

       -h:显示帮助信息

       -y:对所有的提问都回答“yes”

       -v:详细模式 

     install:安装软件包

     update:更新软件包 

     check-update:检查是否有可更新软件包 

     remove:删除软件包 

       list:显示软件包的信息 

     search:检查软件包的信息 

       info:显示指定软件包的描述信息和概要信息 

      clean:清理yum过期的缓存 

 resolvedep:显示rpm软件包的依赖关系  

  reinstall:重新安装

    常见管理包组信息

grouplist:显示包组信息

groupinfo "GRP_NAME" :显示包组描述信息和概要信息

groupinstall "GRP_NAME" :安装包组

groupremove "GRP_NAME   :卸载包组

     常见管理包组信息

repolist [all|enabled|disabled] :显示仓库信息

repoinfo [all|enabled|disabled] :显示仓库描述或概要信息

     创建本地仓库:

 yum install createrepo

          createrepo /PATH/TO/RPMFILES/

    

     使用光盘当做本地仓库方法:

1、挂载光盘至某目录

2、定义仓库,使用file:///指明其访问路径;


    指定的服务器自动下载RPM包,一般有以下文件服务器

    ftp服务:ftp://hostname/PATH/TO/REPO

    http服务:http://hostname/PATH/TO/REPO

    本地文件路径:file:///PATH/TO/REPO

   yum程序的配置文件:

      /etc/yum.conf:全局配置

      /etc/yum.repos.d/*.repo:一个文件通常用于一个或一组功能相近或相关的仓库

   简要说明yum仓库各项参数

  [fedora]      #软件源的名称

  name=Fedora $releasever - $basearch   #仓库的名称,$releasever变量定义了发行版本,$basearch变量定义了系统的架构(i386、x86_64……)

  failovermethod=priority               #priority是默认值,列出的baseurl中顺序镜像服器地址,roundrobin表示在列出的服务器中随机选择

  #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch   #指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了。选择访问速度较快的镜像服务器地址复制并粘贴到repo文件中,格式如下baseurl所示:

baseurl=

ftp://ftp.sfc.wide.ad.jp/pub/Linux/Fedora/releases/10/Everything/i386/os

http://ftp.chg.ru/pub/Linux/fedora/linux/releases/10/Everything/i386/os

http://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora/linux/releases/10/Everything/i386/os

http://mirror.nus.edu.sg/fedora/releases/10/Everything/i386/os

http://mirror.yandex.ru/fedora/linux/releases/10/Everything/i386/os

http://ftp.twaren.net/Linux/Fedora/linux/releases/10/Everything/i386/os

http://ftp.itu.edu.tr/Mirror/Fedora/linux/releases/10/Everything/i386/os

   enabled=1 #源是启用的,0为禁用

  gpgcheck=1 #进行gpg的校验

  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch   #定义用于校验的gpg密钥


练习:

    1、备份CentOS-Base.repo为CentOS-Base.repo.backup,定义一个新的仓库Centos-new.repo,已163为yum仓库并且校验

Linux之软件包管理_yum_06

    2、挂载光盘到/media/cdrom,并且作为本地仓库名为Local.repo,不校验

Linux之软件包管理_yum_07

    3、yum安装nmap工具,并且检查是否有更新包,显示依赖包,如已安装过重新安装

Linux之软件包管理_rpm_08

    4、安装打印包组,查看包组信息,卸载包组

Linux之软件包管理_rpm_09Linux之软件包管理_rpm_10Linux之软件包管理_repo_11