Linux学习之基础知识——软件的管理与安装

来源:互联网 发布:淘宝企业店铺需要资料 编辑:程序博客网 时间:2024/06/10 21:41

本篇概述

作为一个操作系统,软件的安装与管理是必不可少的。在本篇中,将介绍CentOS 中常用的两个软件软件安装与管理工具:RPM 和 yum 。

Linux中常见的包管理器

        debian :         deb文件,dpkg包管理器

         redhat  :         rpm文件,rpm包管理器

rpm,为Redhat Package Manager 的缩写,本是由红帽开发的包管理工具,后来用的公司多了,于是衍变成了 RPM Package Manager 的缩写。

包的命名

 源代码: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

包之间的依赖与解决

包之间可能存在相互依赖,甚至是循环依赖。若要安装包,可能会需要同时安装这个包需要的各种依赖。此时就需要有工具来解决安装包时需要先安装各种以来的问题。

解决依赖包管理工具:
        yum:             rpm包管理器的前端工具
        apt-get:        deb包管理器前端工具
        zypper:            suse上的rpm前端管理工具
       dnf:                   Fedora 18+ rpm包管理器前端管理工具

程序包的来源

(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)自己制作

需要注意的是,第三方包建议检查其合法性和完整性。

RPM包管理器

rpm                             CentOS 系统上使用rpm命令管理程序包。可以用于安装、卸载、升级、查询、校验、数据库维护等。
        rpm包管理:
            安装与卸载:
                rpm {-i | --install} [install-options]     packagesfile...
                    选项:
                        -a             查询所有套件
                        -e             卸载指定的程序,卸载时,程序的配置文件会被保留,命名为filename.rpmsave,重复安装卸载会
                                刷新该文件,先删除再创建新的。
                        -v          varbose
                        -vv         
                        -h             以#显示安装进度
                    exp:  rpm -ivh packagesfile...
        rpm包安装:                                安装时需要完整的路径
            [install-options]
                --test                             测试安装,但不真正安装,即 dry run 模式
                --nodeps                         忽略依赖关系,可以安装,但安装完毕不一定能够使用
                --replacepkgs|repalcefiles         替换安装包|文件,整个覆盖安装,文件完全被覆盖,可以使用cpio提取
                                            指定的文件并复制到该出安装以避免覆盖其他文件。replacefiles,安装时若两个包在同一目录下拥有相同的文件,则使用该命令以替换安装。
                --nosignature                     不检查来源的合法性
                --nodigest                         不检查包完整性
                --noscripts                     不执行程序包脚本
                    %pre   :安装前脚本    --nopre
                    %post  :安装后脚本    --nopost
                    %preun :卸载前脚本    --nopreun
                    %postun:卸载后脚本     --nopostun
        rpm包升级
            rpm {-U | --upgrade} [install-options] packagesfile...
            rpm {-F | --freshen} [install-option] packagesfile...
                upgrade     安装有旧版程序包则升级,若未安装则安装该程序包
                freshen     安装有旧版程序包则升级,若未安装则不执行操作
                --oldpackage             降级安装
                --force                 强制安装
                注意:
                    (1)不要直接对内核做升级操作,Linux支持对内核版本存在,因此可以直接安装新版本内核
                    (2)如果原程序包的配置文件在安装后被修改,升级时,新版本提供的同一个配置文件并不会覆盖老版本的配置文件,而是把新版本的文件重命名(filename.rpmnew)后备用。
         rpm包查询
            rpm {-q | --query} [select-options] [query-options]
                [slect-options]
                    -a                 所有包
                    -f                 指定的文件由哪个包生成
                    -p rpmfile         针对未安装的程序包文件做查询操作
                    --whatprovide CAPABILITIY            查询指定的CAPABILITY由哪个包提供
                    --whatrequires CAPABILITY             查询指定的CAPABILITY被哪个包所依赖
                    rpm2cpio 包文件 | cpio -itv             预览包内文件
                    rpm2cpio 包文件 | cpio -id "*.conf"     释放包内文件
                    注意:只要是已经安装的包,即便是被损坏了,只要未被卸载,也能被查询到,查询时查询的是rpm数据库
                [query-options]
                    --changelog                     查询包的changelog
                    -c                                 查询程序的配置文件
                    -d                                 查询程序的文档
                    -i                                 information
                    -l                                 查看指定程序包安装后生成的所有文件
                    --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 {-V|--verify} [select-options] [verify-options]       检验文件与最安装初的变化
                    S         file Size differs                                    大小
                    M         Mode differs (includes permissions and file type)    权限
                    5         digest (formerly MD5 sum) differs                    MD5哈希值
                    D         Device major/minor number mismatch                    设备编号
                    L         readLink(2) path mismatch                            硬链接
                    U         User ownership differs                                所有者
                    G         Group ownership differs                                所属组
                    T         mTime differs                                        修改时间
                    P         capabilities differs                                 依赖变化
                包来源合法性验正及完整性验正
                    完整性验正:SHA256
                    来源合法性验正:RSA
                导入所需要公钥公钥加密
                    对称加密:加密、解密使用同一密钥
                    非对称加密:密钥是成对儿的
                    public key: 公钥,公开所有人
                    secret key: 私钥, 不能公开
                导入所需要公钥
                    rpm -K|checksig rpmfile 检查包的完整性和签名
                    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
                    CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
                    rpm -qa “gpg-pubkey*”
        rpm数据库
            数据库重建
                /var/lib/rpm,此为数据库所在的目录。
            rpm {--initdb|--rebuilddb}
                initdb             初始化
                    若事先不存在数据库,则重建,若存在,则不执行操作
                rebuilddb         创建已安装的包头的数据库索引目录


yum

yum                     Yellowdog Update Modifier,rpm的前端程序,可以解决软件包的相互依赖性,可在多个库之间定位软件包,是
                    up2date的替代品。
                        yum repository:yum repo ,存储了众多rpm包,以及包的诸多元数据(放置在repodate下)
            语法:
                yum [options] [command] [packages...]
            yum客户端配置文件:
                /etc/yum.conf :     为所有仓库提供公共配置
                /ect/yum.repo.d/*.repo         为仓库的指向提供配置
                仓库指向的定义:
                    [repositoryID] :可以为任意非空字符,否则会报错
                    name=####         :仓库名
                    baseurl=url://path/to/repository :仓库的路径
                    enabled={1|0}         是否启用仓库
                    gpgcheck={1|0}        是否进行检查
                    gpgkey=URL             gpgkey的路径,会自动导入
                    enablegroups={1|0}     是否启用组包(未查证????)
                    failovermethod={roudrobin|priority}            针对有多个库地址的情况
                        roundrobin:随机挑选
                        priority: 顺序访问
                    cost=                默认为1000,指定访问顺序的权重
                yum的repo配置文件中可用的变量:
                    $releasever            当前OS发行版本的主版本号
                    $arch                 平台,i386,i486,i586,x6_64等
                    $basearch             基础平台,i386,x86_64等
                    $YUM0-YUM9             自定义变量
                yum源
                    阿里云repo文件
                        http://mirrors.aliyun.com/repo
                    CentOS系统的yum源
                        阿里云源:
                            https://mirrors.aliyun.com/centos/$releasever/os/$basearch   当然,到centos7后就只有64位系统了
                   EPEL的yum源
                        阿里云:
                            https://mirrors.aliyun.com/epel/$releasever/$basearch
                显示仓库列表
                    yum repolist [all|enabled|disabled]
                显示程序包:
                    yum list
                    yum list [all|glob_exp1] [glob_exp2]...                                   此处搜索支持正则表达式
                    yum list {available|installed|updates}  [glob_exp] [...]
                安装程序包:
                    yum install package1 [package2...]                 安装未安装的程序进行安装
                    yum reinstall packages...                        对已经安装的程序进行重复安装
                升级程序包
                    yum update [package1] [package2...]                升级程序包
                    yum doewngrade [packages...]                    降级安装程序包,降版本
                检查可用升级
                    yum check-update                                 检查可用升级
                卸载程序包
                    yum remove|erase packages...                    卸载程序
                查看程序包information
                    yum info [packages]
                查看指定的特性:可以是某个文件由哪个程序包提供
                    yum provides | whatprovides [features...]
                清除本地缓存
                    yum clean [package|metadata|expire-cache|rpmdb|plugins|all]
                        清楚/var/cache/yum/$basearch/$releasever缓存
                构建缓存
                    yum makecache             实际上使用yum就会自动创建缓存
                搜索
                    yum search [string...]        以指定关键字搜索程序包名及summary信息
                查看指定包所依赖的capabilites:
                    yum deplist [package...]
                查看yum事务历史
                    yum history [info|list|packagelist|package-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 [rpmfile...]
                            用install代替
                    yum localupdate [rpmfile...]
                            用update代替
                包组管理相关的命令
                    yum groupinstall [group...]                        安装包组
                    yum groupupdate  [group...]                        升级包组
                    yum grouplist [hidden] [groupwildcard...]         列出包组
                    yum groupremove [group...]                        卸载包组
                    yum groupinfo     [group...]                         包组信息
                yum的命令行选项:
                    --nogpgcheck                     禁止gpg check
                    --y                             自动应答为yes
                    -q                                 静默模式
                    --disablerepo=repoidglob         临时禁用此处指定的repo
                    --enablerepo=repoidglob         临时启用此处指定的repo
                    --noplugins                     禁止所有插件
                系统光盘yum仓库的搭建
                    系统安装光盘作为本地yum仓库
                        (1)挂载光盘至某目录,如:/mnt
                                mount /dev/cdrom  /mnt


                        (2)创建配置文件:vim /etc/yum.repo.d/base.repo             此处文件名随意,最好见名知意,但后缀必须为.repo
                                [repotitle]                 仓库标签
                                name=                        仓库名
                                baseurl=                    仓库地址
                                gpgcheck=                     是否启用gpg check
                                enabled=                    是否启用仓库

此处需要注意的是,仓库地址必须为repodeta的父目录,否则不能正确识别源!


                创建yum仓库元数据
                    #creatrepo [options] [directory]

                    这个只有在自己使用软件包搭建源的时候会用到,一般的源,如光盘和官网的源,都会自带元数据文件,而不需要创建。

网络yum源的创建与本地光盘yum源的创建时类似的,只不过是要开启ftp或者http服务。此时也会需要关闭防火墙和selinux策略,否则会导致创建的网络源无法被访问。

具体关闭防火墙的方法为:

                 centos7:
                       # systemctl stop firewalld                立即关闭防火墙
                        #systemctl disable firedwalld        设置开机不启动
                centos6:
                        #chkconfig iptables off                     设置开机不启动
                        #server iptables stop                       立即关闭防火墙

关闭selinux策略

        修改/etc/selinux/config 文件,将其中的SELINUX=enforcing修改为SELINUX=permissive。


开启vsftpd服务:

               centos7
                        #systemctl start vsftpd                 立即启动
                        #systemctl enable vsftpd            下次开机自动启动
               centos6
                        #service vsftpd start                     立即启动
                        #chkconfig vsftpd on                   下次开机自动启动

结语

至此,关于centos中的两个包管理和安装工具都做了介绍,具体的用法还需亲手操作,诸位且当参考。谬误之处,还请不吝赐教,我虚心学习。


原创粉丝点击