程序包管理--yum

yum repository: yum仓库
        存储了众多rpm包,以及包的相关元数据的文件(放在repodata目录中)服务器

   文件服务:
           http://
            ftp://
            nfs://
            file:///   

yum客户端:
     配置文件:指向仓库的位置以及各种配置信息;每个yum客户可以有多个可用的yum仓库;

     有两部分组成:
 主配置文件:/etc/yum.conf
              /etc/yum.repos.d/*.repo

   仓库定义:
            [REPO_ID]:仓库ID
            name=REPO description: 描述符
            baseurl=ftp://172.16.0.1/pub/CentOS6/  仓库具体所在路径
            enabled={1|0}: 表示当前仓库是否被使用,默认为1启用          

            gpgcheck={1|0}: 是否以gpg格式来验证数据的完整性,如果为1时,必须指定pgkey=file

                             的具体路径                                     

            gpgkey=ftp://172.16.0.1/pub/CentOS6/gpg-key:表示gpg具体的指定路径,这个路径可

                        能在ftp、web上,也可能在本地路径上,要指定清楚

yum命令:
        yum [options] [command] [package ...]

       command is one of:
        * install package1 [package2] [...]
        * update [package1] [package2] [...]
        * update-to [package1] [package2] [...]
        * check-update
        * upgrade [package1] [package2] [...]
        * upgrade-to [package1] [package2] [...]
        * distribution-synchronization [package1] [package2] [...]
        * remove | erase package1 [package2] [...]
        * list [...]
        * info [...]
        * provides | whatprovides feature1 [feature2] [...]
        * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
        * makecache
        * groupinstall group1 [group2] [...]
        * groupupdate group1 [group2] [...]
        * grouplist [hidden] [groupwildcard] [...]
        * groupremove group1 [group2] [...]
        * groupinfo group1 [...]
        * search string1 [string2] [...]
        * shell [filename]
        * resolvedep dep1 [dep2] [...]
        * localinstall rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use install)
        * localupdate rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use update)
        * reinstall package1 [package2] [...]
        * downgrade package1 [package2] [...]
        * deplist package1 [package2] [...]
        * repolist [all|enabled|disabled]
        * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
        * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
        * load-transaction [txfile]
        * check


 yum仓库相关的命令:
            列出所有可用仓库:
                # yum repolist


            列出所有程序包:
                # yum list {all|installed|available}


               注意:支持globbing通配符:*

            列出所有包组:
                # yum grouplist



            缓存管理:
                # yum clean {all|packages}
                # yum makecache


安装:
    yum install PACKAGE_NAME ...

    如果要安装指定的版本的程序:
    yum install PACKAGE-VERSION

   重装指定的程序包
        yum reinstall PACKAGE_NAME ...

 升级
    yum update PACKAGE_NAME

    如果有多个版本的升级包可用,且仅期望升级到指定版本:
    yum update PACKAGE-VERSION

降级yum downgrade PACKAGE_NAME

            检查可用升级:
                yum check-update

卸载:
            yum erase|remove PACKAGE_NAME

            依赖于指定程序包的其它包,会被一并卸载;

查询:
            yum list
            yum info PACKAGE_NAME
            yum search KEYWORD: 根据关键字模糊查询包名或包的sumary信息包含此KEYWORD的相关列

                                表;

            yum provides|whatprovides /path/to/somefile

包组管理:
            显示所有包组:yum grouplist
            显示某包组的相关信息:
                yum groupinfo "GROUP_NAME"
  安装包组:
   yum groupinstall "GROUP_NAME"

   yum install @GROUP_NAME    
  卸载包组:
      yum groupremove "GROUP_NAME"
      yum remove @"GROUP_NAME"

 升级包组:
      yum groupupdate "GROUP_NAME"

  yum命令还可用安装本地rpm包文件:
            yum localinstall /path/to/rpm_package_file ...

            CentOS 7: yum install /path/to/rpm_package_file .
..

        选项:
            --enablerepo=
            --disablerepo=

            注意:优先级高于/etc/yum.repos.d/*.repo配置文件中定义的属性;
            -y: 自动回答为yes
            --nogpgcheck



如何构建yum仓库:
        createrepo

yum客户端配置的高级用法:

 1、在yum客户定义仓库时可使用cost定义仓库的使用开销,默认为1000;
 2、baseurl中指定路径时可使用变量
        $releasever: 当前OS发行版的主版本号
        $arch: 平台
        $basearch: 基础平台,例如i686,i586,i486,i386系列的基础平台都是i386;
        $YUM0-$YUM9

         例如:http://mirrors.sohu.com/centos/$releasever/os/$basearch
  3、可以使用mirrorlist指令替换baseurl:
            指向一个URL,此URL是一个文本文件,其中保存了大量镜像服务器列表;用户使用yum仓库时,会获取此列表文件,而后通过fastestmirror插件判断哪一个镜像为访问速度最快的服务器,并以之做为本次访问的baseurl;

程序包的编译安装:

   项目管理:
      源代码组织格式:
          多文件:文件中的代码段之间可能会跨文件存在依赖关系;

           C/C++开发的源代码:make
          Java:Maven

       开源源代码程序分发:
            自建站点:apache.org, (ASF)   mariadb.org           
              
            代码托管: SourceForge,github.com , code.google.com          
              
 C语言开发的源程序:
       项目构建工具:make (gcc), 其调用 gcc 执行编译的过程依赖于配置文件makefile

        autoconf: 生成一个脚本文件configure,此脚本能检查当前系统上编译环境是否能满足当前程序的编译需要;同时,还能确定后续的编译工作所期望编译进程序中的特性;
            此第二个功能是通过结合Makefile.in的文件生成makefile文件来进行的;
        automake:生成Makefile.in

  编译C源程序的步骤:
       1、./configure:检查编译环境,并根据指定的选项确定编译的特性、安装路径等;
       2、make:调用所需要的编译器根据makefile配置文件定义执行编译过程;
       3、make install:安装程序;

    编译安装源程序的前提:
            提供开发环境:开发工具和开发库
                包组:Development Tools、Server Platform Development、Desktop Platform Development、Debug Tools

        ./configure脚本获取帮助:
            使用--help选项进行

      常用的选项:
             --prefix=: 指定安装路径;多数程序都有默认安装路径;
             --sysconfidr=: 指定配置文件安装路径;

             --with-
             --without-

             --enable-
             --disable-


编译安装源程序方法:
        1、展开源代码,找INSTALL、README;不存在此类文件时,找项目官方文档;
        2、根据安装说明执行安装操作;

  程序安装于专用目录时,安装后的配置:
 1、导出二进制程序所在路径至PATH环境中
       # export PATH=/usr/local/nginx/sbin:$PATH

   实现永久有效的办法:/etc/profile.d/*.sh       

2、导出库文件给OS
        OS查找库文件方法:根据/etc/ld.so.conf配置文件指定的路径搜索,或搜索/lib, /lib64, /usr/lib, /usr/lib64,把查找到的所有的库文件路径和其名称映射关系保存为一个缓存文件/etc/ld.so.cache;

 /etc/ld.so.conf配置文件有其它组成部分:/etc/ld.so.conf.d/*.conf

 假设nginx安装于/usr/local/nginx,此目录中有其库文件子目录lib,导出此目录中库文件:
      (1)新建文件/etc/ld.so.conf.d/nginx.conf,在文件添加如下行:
            /usr/local/nginx/lib
       (2) 运行命令:
             ldconfig
                -v
                -p: 显示当前OS已经加载到的所有库文件名称及其文件所在路径的映射关系;


3、帮助文件导出
          man命令搜索特定路径查找手册页文件,这些路径是定义在/etc/man.config中的MANPATH参数所指定的路径下的;

         新增办法:编辑/etc/man.config文件,新增一个MANPATH参数,其值为新安装程序的man手册

                    所在的目录;
                    /usr/local/nginx/share/man/{man1,man8}

                man -M /path/to/man KEYWORD

4、头文件导出
      有些程序安装后会生成对自己拥有库文件调用接口相关头文件
      系统查找头文件的路径为/usr/include

      导出独立安装应用程序的头文件方法:创建链接至/usr/include下即可;

        例如:/usr/local/nginx/include
              # ln -sv /usr/local/nginx/include/* /usr/include/
              # ln -sv /usr/local/nginx/include /usr/include/nginx

perl源程序的编译安装:
        (1) perl Makefile.in
        (2) make
        (3) make install



你可能感兴趣的:(linux,程序包管理)