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

    CentOS安装包为:rpm包

    rpm包的问题:不能解决依赖性问题

    yum:用于解决依赖性问题

    本章重点:
        • rpm安装
        • yum安装
        • 编译安装

    二进制应用程序(rpm - Redhat package manage)的组成部分:
        • 二进制文件
        • 库文件
        • 配置文件
        • 帮助文件

    源代码:name-VERSION.tar.gz|bz2|xz
    VERSION: major.minor.release
    rpm包命名方式:
        • name-VERSION-release.arch.rpm
            ○ 例:bash-4.2.46-19.el7.x86_64.rpm
    VERSION: major.minor.release
    release:release.OS
    常见的arch:
        • x86: i386, i486, i586, i686
        • x86_64: x64, x86_64, amd64 powerpc: ppc
    跟平台无关:noarch


    包:分类和拆包
        • Application-VERSION-ARCH.rpm: 主包
        • Application-devel-VERSION-ARCH.rpm 开发子包
        • Application-utils-VERSION-ARHC.rpm 其它子包
        • Application-libs-VERSION-ARHC.rpm 其它子包
    包之间:可能存在依赖关系,甚至循环依赖
    解决依赖包管理工具:
        • yum:rpm包管理器的前端工具(rpm包的另外的安装方式)
        • apt-get:deb包管理器前端工具
        • zypper: suse上的rpm前端管理工具
        • dnf: Fedora 18+ rpm包管理器前端管理工具

    查看二进制程序所依赖的库文件
        • ldd /PATH/TO/BINARY_FILE 显示库文件依赖的包
        • ldd /usr/bin/ls ls命令依赖的包****
    管理及查看本机装载的库文件
        • ldconfig -v 系统中正在调用的库
        • /sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系
    配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
    缓存文件:/etc/ld.so.cache


    程序包管理器:
    功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作
    包文件组成 (每个包独有)
        • RPM包内的文件
        • RPM的元数据,如名称,版本,依赖性,描述等
        • 安装或卸载时运行的脚本(不一定都有)
    数据库(公共):/var/lib/rpm  包的安装信息存放处,共系统使用**
        • 程序包名称及版本
        • 依赖关系
        • 功能说明
        • 包安装后生成的各文件路径及校验码信息


    管理程序包的方式:
    使用包管理器:rpm
    使用前端工具:yum, dnf
    获取程序包的途径:
    (1) 系统发版的光盘或官方的服务器;
    CentOS镜像:
        • https://www.centos.org/download/
        • http://mirrors.aliyun.com
        • http://mirrors.sohu.com
        • http://mirrors.163.com
    (2) 项目官方站点

    (3) 第三方组织:
        • Fedora-EPEL:Extra Packages for Enterprise Linux
        • Rpmforge:RHEL推荐,包很全
    搜索引擎:
        • http://pkgs.org
        • http://rpmfind.net
        • http://rpm.pbone.net
        • https://sourceforge.net/
    (4) 自己制作
    注意:第三方包建议要检查其合


    CentOS系统rpm命令:
        • 安装
        • 卸载
        • 升级
        • 查询
        • 校验
        • 数据库维护

    安装:
    rpm {-i|--install} [install-options] PACKAGE_FILE…
        • -i:安装(install)
        • -v: verbose 显示详细安装过程
        • -vv:
        • -h: 以#显示程序包管理执行进度
        • rpm -ivh PACKAGE_FILE ...

    [install-options]
        • --test: 测试安装,但不真正执行安装,即dry run模式
        • --nodeps:忽略依赖关系
        • --replacepkgs 覆盖包 | replacefiles 覆盖文件( 替代重装)
            ○ rpm -ivh /XXX/tree-1.6.0-10.el7.x86_64.rpm --replacepkgs      tree文件被删除,进行替代安装
            ○ rpm2cpio /XXX/tree-1.6.0-10.el7.x86_64.rpm | cpio -it 查看tree安装包中的文件列表
            ○ rpm2cpio /XXX/tree-1.6.0-10.el7.x86_64.rpm | cpio -id ./usr/bin/tree 单独覆盖安装./usr/bin/tree文件到/usr/bin目录(有可能造成属性破坏)
        • --nosignature: 不检查来源合法性
        • --nodigest:不检查包完整性
        • --noscripts:不执行程序包脚本
            ○ rpm -qp --scripts /XXX/httpd-2.4.6.67.el7.centos.x86_64.rpm 查看此包的脚本
        • %pre: 安装前脚本; --nopre
        • %post: 安装后脚本; --nopost
        • %preun: 卸载前脚本; --nopreun
        • %postun: 卸载后脚本; --nopostun

    升级:
    rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
    rpm {-F|--freshen} [install-options] PACKAGE_FILE...
        • upgrade:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”
        • freshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作
        • rpm -Uvh PACKAGE_FILE ...
        • rpm -Fvh PACKAGE_FILE ...
        • --oldpackage:降级
        • --force: 强制安装
            ○ rpm -ivh /XXX/tree-1.6.0-10.el7.x86_64.rpm  --force 强行安装

    查询:
    rpm {-q|--query} [select-options] [query-options]
        • rpm -q tree 查询包名
        • rpm -qa 查看系统所有安装过的包(来源于/var/lib/rpm)**
        • rpm -qa | grep "tr"
        • rpm -qi tree 查询包的信息
        • rpm -qpi /XXX/tree-1.6.0-10.el7.x86_64.rpm 没安装的情况下,查看包的信息
        
    [select-options]
    -a: 所有包
    -f: 查看指定的文件由哪个程序包安装生成
    -p rpmfile:针对尚未安装的程序包文件做查询操作
    --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
    --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
    rpm2cpio 包文件|cpio –itv 预览包内文件
    rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件

    [query-options]
        • --changelog:查询rpm包的changelog
        • -c: 查询程序的配置文件
            ○ rpm -qc bash
        • -d: 查询程序的文档
            ○ rpm -qd treee
        • -i: information
        • -l: 查看指定的程序包安装后生成的所有文件
            ○ rpm -ql tree
        • --scripts:程序包自带的脚本
        • --provides: 列出指定程序包所提供的CAPABILITY
        • -R: 查询指定的程序包所依赖的CAPABILITY

    常用查询用法:
        • -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
        • -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...
        • -qa
    包卸载:
        • rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME …
            ○ rpm -e tree 卸载
            ○ rpm -e tree --allmatches 卸载所有不同版本的tree包

    校验:

    rpm {-V|--verify} [select-options] [verify-options]
        • S file Size differs
        • M Mode differs (includes permissions and file type)
        • 5 digest (formerly MD5 sum) differs
        • D Device major/minor number mismatch
        • L readLink(2) path mismatch
        • U User ownership differs
        • G Group ownership differs
        • T mTime differs
        • P capabilities differ
            ○ rpm -ql tree
            ○ rpm -V tree 有变化才显示内容*

    安装软件之前包的验证

    包来源合法性验正及完整性验正
        • 完整性验正:SHA256
        • 来源合法性验正:RSA
    公钥加密
        • 对称加密:加密、解密使用同一密钥
        • 非对称加密:密钥是成对儿的
        • public key: 公钥,公开所有人
        • secret key: 私钥, 不能公开
    导入所需要公钥
        • rpm -K|checksig rpmfile 检查包的完整性和签名
            ○ rpm -K | tree
        • rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
        • CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
        • rpm -qa “gpg-pubkey*”
        • rpm -qf /usr/bin/tree 查看磁盘上的命令来源于哪个包



    yum 解决依赖性问题

        • yum依赖于yum仓库
            ○ rpm包
            ○ repdata目录中存放包的元数据:依赖数据等
        • yum安装:
            ○ 先找元数据,下载到电脑上。安装后不删除
            ○ 在下载rpm包,进行安装。安装后默认删除

        • yum配置仓库路径:
            ○ cd /etc/yum.repos.d/
            ○ mkdir bak
            ○ mv *.repo bak 备份原来的repo文件
            ○ vim base.repo 新建repo文件
                [repositoryID]
                    baseurl=file:///misc/cd yum元数据路径
                    gpgcheck=0 不检查key
        • 文件服务器类型
            ○ http://
            ○ https://
            ○ ftp://
            ○ file://
            
        • yum安装
            yum install httpd-tools -y -y不询问

    yum客户端配置文件:
    /etc/yum.conf:为所有仓库提供公共配置
    /etc/yum.repos.d/*.repo:为仓库的指向提供配置
    仓库指向的定义:
        [repositoryID]
            name=Some name for this repository
            baseurl=url://path/to/repository/
            enabled={1|0}
            gpgcheck={1|0}
            gpgkey=URL
            enablegroups={1|0}
            failovermethod={roundrobin|priority}
            roundrobin:意为随机挑选,默认值
            priority:按顺序访问
            cost= 默认为1000

        • yum repolist 查看仓库
        • 添加仓库
            [base] base源
                baseurl=file:///misc/cd yum元数据路径
                gpgcheck=0 不检查key
            [epel] epel源
                baseurl=https://mirrors.aliyun.com/epel/7/x86_64
                bpgcheck=0
                
                
        • yum卸载:依赖包不会卸载,会提示
            ○ yum remove mysql-server

        • yum history 安装了mysql-server后,安装了4个包,ID为2
        
        • 查看安装细节:yum history info 2
        • yum history undo 2 卸载依赖
        • yum history redo 2 删除错误,重新安装


        • 从互联网上找到的rpm包:
            ○ 直接安装会提示有依赖
            ○ yum install httpd-2.4.6-67.el7.centos.x86_64.rpm 解决依赖性问题
            

        • yum缓存:
            ○ cat /etc/yum.conf
                § cachedir=/var/cache/yum/$basearch/$releasever
                § cachedir=/var/cache/yum/x86_64/7
                § du -sh * 查看目录下文件大小

        • yum清楚缓存:
            ○ yum clean all 如果断网,切换yum源,清除后可以正常安装

        • 禁用yum源
            [base] base源
                baseurl=file:///misc/cd yum元数据路径
                gpgcheck=0 不检查key
            [epel] epel源
                baseurl=https://mirrors.aliyun.com/epel/7/x86_64
                bpgcheck=0
                enabled=0
                
        • yum源
        阿里云repo文件:
        http://mirrors.aliyun.com/repo/
        CentOS系统的yum源
        阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
        教学环境:
        http://172.16.0.1/cobbler/ks_mirror/$releasever/
        EPEL的yum源:
        阿里云:
        https://mirrors.aliyun.com/epel/$releasever/x86_64
        教学环境:
        http://172.16.0.1/fedora-epel/$releasever/x86_64/
        
        
        • yum search mysql 模糊检索

    yum命令的用法:
    yum [options] [command] [package ...]
    显示仓库列表:
    yum repolist [all|enabled|disabled]
    显示程序包:
    yum list
    yum list [all | glob_exp1] [glob_exp2] [...]
    yum list {available|installed|updates} [glob_exp1] [...]
    安装程序包:
    yum install package1 [package2] [...]
    yum reinstall package1 [package2] [...] (重新安装)


    升级程序包:
    yum update [package1] [package2] [...]
    yum downgrade package1 [package2] [...] (降级)
    检查可用升级:
    yum check-update
    卸载程序包:
    yum remove | erase package1 [package2] [...]

    查看程序包information:
    yum info [...]
    查看指定的特性(可以是某文件)是由哪个程序包所提供:
    yum provides | whatprovides feature1 [feature2] [...]
    清理本地缓存:
    清除/var/cache/yum/$basearch/$releasever缓存
    yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
    构建缓存:
    yum makecache


    搜索:yum search string1 [string2] [...]
    以指定的关键字搜索程序包名及summary信息
    查看指定包所依赖的capabilities:
    yum deplist package1 [package2] [...]
    查看yum事务历史:
    yum history [info|list|packages-list|packages-info|
    summary|addon-info|redo|undo|
    rollback|new|sync|stats]
    yum history
    yum history info 6
    yum history undo 6
    日志 :/var/log/yum.log


    安装及升级本地程序包:
    yum localinstall rpmfile1 [rpmfile2] [...]
    (用install替代)
    yum localupdate rpmfile1 [rpmfile2] [...]
    (用update替代)
    包组管理的相关命令:
    yum groupinstall group1 [group2] [...]
    yum groupupdate group1 [group2] [...]
    yum grouplist [hidden] [groupwildcard] [...]
    yum groupremove group1 [group2] [...]
    yum groupinfo group1 [...]

    yum grouplist 查看包组
    yum groupinfo Desktop 查看Desktop包组
    yum groupinstall Desktop  安装包组


    创建包组:createrepo .

  • 相关阅读:
    一个周末掌握IT前沿技术之node.js篇<六>:Node.js与客户端模板引擎
    一个周末掌握IT前沿技术之node.js篇<四>:Node.js与Restful API
    一个周末掌握IT前沿技术之node.js篇<三>:Node.js与服务端模板引擎
    添加dom节点及优化
    CSS琐碎[1]
    兼容处理集合
    Dom优化
    apply函数应用
    javascript的slice()与splice()方法
    鼠标滚轮插件
  • 原文地址:https://www.cnblogs.com/lizitest/p/9552936.html
Copyright © 2011-2022 走看看