• 软件包管理


    软件包管理


    GPL 源码
    POSIX 可移植操作系统

    API 兼容意味着开发库兼容,源代码可以跨平台

    ABI
    编译后的程序可以跨平台

    库 :可执行程序,不能作为程序入口。但可以被调用,是编译好的二进制格

            库级别的虚拟化:
                 linux:wine
                 windows:cywin
         系统级开发: c/c++ :httpd,nginx,vsftpd,go
         应用级开发:java python perl php 

    c/c++程序格式:

              源代码:文本格式的程序代码;
                 编译开发环境:编译器,头文件,开发库
              二进制格式:文本格式的程序代码–>编译器–>二进制格式
                 开发环境:编译器,开发库

    程序包管理器:
         源代码–>目标二进制格式–>组织成为一个或有限几个“包”文件;
             

    包管理器的基本功能
    打包
    安装
    查询
    升级
    卸载
    校验
    数据库管理


    程序包管理器
                     debian: dpt,dpkg “.deb”
                     rehat : rpm “.rpm”
                     suse  : rpm,

    前段工具:自动解决依赖关系:
              yum:rpm包管理的前段工具
              apt-get:deb包管理器的前段工具
              zypper:suse的rpm管理器前端工具
              dnf:也是一种rpm包管理器的前端工具

     

    查看二进制程序所依赖的库文件               ldd /PATH/TO/BINARY_FILE

    获取程序包的途径:
             系统发行版的光盘或官方的文件服务器(或镜像站点)
             http://mirrors.aliyun.com
             http://mirror.sohu.com
             http://mirror.163.com
             项目的官方站点
             第三方组织:EPEL
                   搜索引擎:http://pkgs.org
                             http://rpmfind.net
                             http://rpm.phone.net
             自己动手,丰衣足食
             建议:检查其合法性
                   来源合法性
                   程序包的完整性
    centos系统上rpm命令管理程序包:
              安装,升级,卸载,查询和校验,数据库维护
              rpm命令:
                     -i :安装
                     -u :升级
                     -e :卸载
                     -q :查询
                     -v :校验
                     –builddb:数据库维护
                   –test:测试安装,检查并报告依赖关系及冲突消息等
                   –nodeps:忽略依赖关系,不建议
                   –replacepkgs:重新安装
    升级:
            rpm -u :升级或安装
                   -f :只升级
            rpm -uvh
                 –oldpackage: 降级
                 –force     : 强制升级
         注意:(1)不要对内核做升级操作,linux支持多内核版本并存,因此,直接安装新版本
                  (2)如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原版本的配                       置文件,而是把新版本的配置文件重命名后提供;
         卸载: 直接给包名即可
             rpm -e :卸载
                   –allmatches:卸载所有匹配指定名称的程序包的各版本
                   –nodeps    :忽略依赖关系
                   –test      : 测试卸载

         查询:   rpm -qa  -qc  -ql  等
              rpm -q :查询  
                  -a :查询所有已经安装过的包
                  -f file :查询指定的文件由哪个程序包安装生成
                  -l :程序包安装生成的所有文件列表
                  -i : 程序包相关信息,版本号,大小,所属的包组等
                  -c : 查询指定的程序包提供的配置文件
                  -d : 查询指定的程序包提供的文档
                  -p : 指定未安装的包文件做查询操作
         校验: rpm -v  filenam      

    包来源合法性验证和完整性验证:
                 获取并导入信任的包制作者的秘钥
                 验证:
                            安装此组织签名的程序时,会自动执行验证;
                            手动验证:rpm -k packagefile
    数据库重建:
                rpm管理器数据库路径:/var/lib/rpm        rpm –initdb     初始化  如果 事先不存在数据库,则新建之否则
                查询操作:通过此处的数据库进行;           rpm –rebuliddb    重建已安装的包的数据库索索引

                获取帮助:
                              man rpm    centos6
                              man rpmdb  centos7  


    YUM: Yellowdog Update Modifier ,rpm 的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date
    的替代工具
    yum repository: yum repo ,存储了众多rpm 包,以及包的相关的元数据文件(放置于特定目录repodata 下)
                           文件服务器:
                    

                    

    客户端配置文件
    ftp ftp://server/path/to/repo
    http http://server/path/to/repo
    nfs nfs://server/path/to/repo
    file file:///path/to/repository

         

    /etc/yum.conf :为所有仓库提供公共配置

     /etc/yum.repos.d/*.repo :为仓库的指向提供配置
                                 配置格式:   [repositoryID]

                                                    baseurl=ftp://        或者http://      file://

                                                    gpgcheck=0           不检查签名

                 yum repolist     检查是否成功 ,会显示具体信息

    总结

    1 安装
    yum install 全部安装
    yum install package1 安装指定的安装包package1
    yum groupinsall group1 安装程序组group1

    2 更新和升级
    yum update 全部更新
    yum update package1 更新指定程序包package1
    yum check-update 检查可更新的程序
    yum upgrade package1 升级指定程序包package1
    yum groupupdate group1 升级程序组group1

    3 查找和显示
    yum info package1 显示安装包信息package1
    yum list 显示所有已经安装和可以安装的程序包
    yum list package1 显示指定程序包安装情况package1
    yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包

    4 删除程序
    yum remove | erase package1 删除程序包package1
    yum groupremove group1 删除程序组group1
    yum deplist package1 查看程序package1依赖情况

    5 清除缓存
    yum clean packages 清除缓存目录下的软件包
    yum clean headers 清除缓存目录下的 headers
    yum clean oldheaders 清除缓存目录下旧的 headers
    yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers


    1.列出所有可更新的软件清单
    命令:yum check-update

    2.安装所有更新软件
    命令:yum update

    3.仅安装指定的软件
    命令:yum install

    4.仅更新指定的软件
    命令:yum update

    5.列出所有可安裝的软件清单
    命令:yum list

    3.使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的。
    安装的命令是,yum install xxx,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断
    删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。
    1.用YUM安装软件包
    命令:yum install

    2.用YUM删除软件包
    命令:yum remove

    4.用yum查询想安装的软件
    我们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于是我们可能得到 gaim,kopete等等,并从中选择。
    有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。
    1.使用YUM查找软件包
    命令:yum search
    2.列出所有可安装的软件包
    命令:yum list
    3.列出所有可更新的软件包
    命令:yum list updates
    4.列出所有已安装的软件包
    命令:yum list installed
    5.列出所有已安装但不在 Yum Repository 內的软件包
    命令:yum list extras
    6.列出所指定的软件包
    命令:yum list 7.使用YUM获取软件包信息
    命令:yum info 8.列出所有软件包的信息
    命令:yum info
    9.列出所有可更新的软件包信息
    命令:yum info updates
    10.列出所有已安裝的软件包信息
    命令:yum info installed
    11.列出所有已安裝但不在 Yum Repository 內的软件包信息
    命令:yum info extras
    12.列出软件包提供哪些文件
    命令:yum provides

    。。。

    。。

  • 相关阅读:
    ref与out的区别(C#)
    用MS SQL Server 2008修改数据库表时提示“不允许保存更改”的解决方法
    测试的职责
    性能测试新手误区(三):用户数与压力
    JAVA + LR实现apache流媒体的性能测试(LR部分)
    性能测试新手误区(二):为什么我模拟的百万测试数据是无效的
    JAVA + LR实现apache流媒体的性能测试(JAVA部分)
    性能测试新手误区(六):性能监控
    性能测试新手误区(五):这是性能问题么
    性能测试新手误区(四):一切来自录制
  • 原文地址:https://www.cnblogs.com/chblogs/p/6657847.html
Copyright © 2020-2023  润新知