为了账号安全,请及时绑定邮箱和手机立即绑定

centos7软件包管理及Ubuntu软件包管理

标签:
运维

软件包管理:


                包的组成:

                    二进制文件、库文件、配置文件、帮助文件

                程序包管理器:

                    debian: deb文件, dpkg包管理器

                    redhat: rpm文件, rpm包管理器

                             rpm:Redhat Package Manager

                                  RPM Package Manager

                包之间:可能存在依赖关系,甚至循环依赖


                解决依赖包管理工具:

                    yum:rpm包管理器的前端工具

                    apt-get:deb包管理器前端工具

                    zypper: suse上的rpm前端管理工具

                    dnf: Fedora 18+ rpm包管理器前端管理工具

                查看二进制程序所依赖的库文件:

                    ldd /PATH/TO/BINARY_FILE

                管理及查看本机装载的库文件:

                    ldconfig :加载配置文件中指定的库文件

                    /sbin/ldconfig -p :显示本机已经缓存的所有可用库文件名及文件路径映射关系

                    配置文件: /etc/ld.so.conf   /etc/ld.so.conf.d/*.conf

                    缓存文件:/etc/ld.so.cache 


                程序包管理器:

                    功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作

                数据库(公共):/var/lib/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) 自己制作

                    注意:第三方包建议要检查其合法性来源合法性,程序包的完整性


                CentOS系统上使用rpm命令管理程序包:

                    安装、卸载、升级、查询、校验、数据库维护

                    安装:

                    rpm {-i|--install} [install-options] PACKAGE_FILE… 

                        -v: verbose

                        -vv: 

                        -h: 以#显示程序包管理执行进度

                    rpm -ivh PACKAGE_FILE ...


                    [install-options]

                        --test: 测试安装,但不真正执行安装,即dry run模式

                        --nodeps:忽略依赖关系

                        --replacepkgs | replacefiles

                        --nosignature: 不检查来源合法性

                        --nodigest:不检查包完整性

                        --noscripts:不执行程序包脚本

                            %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: 强制安装


                    注意:

                        (1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核

                        (2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留



                    包查询:

                        rpm {-q|--query} [select-options] [query-options]

                        [select-options]

                            -a: 所有包

                            -f: 查看指定的文件由哪个程序包安装生成

                            -p rpmfile:针对尚未安装的程序包文件做查询操作

                            --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供

                            --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

                        常用查询用法:

                            -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE

                            -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...

                            -qa

                    rpm2cpio 包文件|cpio –itv 预览包内文件

                    rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件


                    包校验:

                        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

                        包来源合法性验正及完整性验证

                            完整性验证: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:重建已安装的包头的数据库索引目录


                CentOS系统上使用yum命令:

                    YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具

                        yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)

                        文件服务器:

                            http://

                            https://

                            ftp://

                            file://


                    yum配置文件:

                        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的repo配置文件中可用的变量:

                                $releasever: 当前OS的发行版的主版本号

                                $arch: 平台,i386,i486,i586,x86_64等

                                $basearch:基础平台;i386, x86_64

                                $YUM0-$YUM9:自定义变量


                            yum源:

                                阿里云repo文件

                                    http://mirrors.aliyun.com/repo/

                                CentOS系统的yum源

                                    阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/

                                    清华大学:https://mirrors.tuna.tsinghua.edu.cn/centos/$releaseve

                                EPEL的yum源

                                    阿里云:https://mirrors.aliyun.com/epel/$releasever/x86_64

                                    阿里巴巴开源软件https://opsx.alibaba.com/


                            yum命令:

                                yum的命令行选项:

                                    --nogpgcheck:禁止进行gpg check

                                    -y: 自动回答为“yes”

                                    -q:静默模式

                                    --disablerepo=repoidglob:临时禁用此处指定的repo

                                    --enablerepo=repoidglob:临时启用此处指定的repo

                                    --noplugins:禁用所有插件


                                yum命令的用法:

                                    yum [options] [command] [package ...]

                                显示仓库列表:

                                    yum repolist [all|enabled|disable

                                显示程序包:

                                    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 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事务历史:

                                    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 [...]


                Ubuntu软件管理

                    dpkg常见用法: man dpkg

                        dpkg -i package.deb 安装包

                        dpkg -r package 删除包,不建议,不自动卸载依赖于它的包

                        dpkg -P package 删除包(包括配置文件)

                        dpkg -l 列出当前已安装的包,类似rpm -qa

                        dpkg -l package 显示该包的简要说明,类似rpm –qi

                        dpkg -L package 列出该包中所包含的文件,类似rpm –ql

                        dpkg -S <pattern> 搜索包含pattern的包,类似rpm –qf

                        dpkg -s package 列出该包的状态,包括详细信息,类似rpm –qi

                        dpkg --configure package 配置包,-a 使用,配置所有没有配置的软件包

                        dpkg -c package.deb 列出 deb 包的内容

                    dpkg示例:

                        列出系统上安装的所有软件包

                            dpkg -log

                        列出软件包安装的文件

                            dpkg -L bash

                        查看/bin/bash来自于哪个软件包

                            dpkg -S /bin/bash

                        安装本地的 .deb 文件

                            dpkg -i /mnt/cdrom/pool/main/z/zip/zip_3.0-11build1_amd64.deb

                        卸载软件包

                            dpkg -r zip


                    apt命令:

                        apt与apt-get命令对比:

                            apt 命令         被取代的命令             命令的功能

                            apt install     apt-get install     安装软件包

                            apt remove         apt-get remove         移除软件包

                            apt purge         apt-get purge         移除软件包及配置文件

                            apt update         apt-get update         刷新存储库索引

                            apt upgrade     apt-get upgrade     升级所有可升级的软件包

                            apt autoremove     apt-get autoremove     自动删除不需要的包

                            apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系

                            apt search         apt-cache search     搜索应用程序

                            apt show         apt-cache show         显示安装细节


                        apt 特有的命令:

                            apt list             列出包含条件的包(已安装,可升级等)

                            apt edit-sources     编辑源列表

                        apt命令操作(如安装和删除软件包)记录在/var/log/dpkg.log日志文

                        APT包索引来自/etc/apt/sources.list文件和/etc/apt/sources.list.d目录中定义的存储库的可用包的数据库。要使用存储库中所做的最新更改来更新本地程序包索引


                        安装包:

                            apt install tree zip

                        删除包:

                            apt remove tree zip

                            说明:apt remove中添加--purge选项会删除包配置文件,谨慎使用

                        更新包索引:

                            apt update



--------------------- 

作者:dengjh195814 

原文:https://blog.csdn.net/dengjh195814/article/details/85632010 


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消