zoukankan      html  css  js  c++  java
  • 软件包管理

    软件包管理


    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

    。。。

    。。

  • 相关阅读:
    fn project 试用之后的几个问题的解答
    fn project 扩展
    fn project 生产环境使用
    fn project 对象模型
    fn project AWS Lambda 格式 functions
    fn project 打包Function
    fn project Function files 说明
    fn project hot functions 说明
    fn project k8s 集成
    fn project 私有镜像发布
  • 原文地址:https://www.cnblogs.com/chblogs/p/6657847.html
Copyright © 2011-2022 走看看