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

    一、软件包介绍

    与Windows类似,在linux系统上也可以安装各种应用程序或称软件包,linux软件包分为三种

     二、RPM包管理

    在主流的linux系统上,多数软件包的安装、升级、移动以及维护工作都是使用RPM软件包管理程序来完成的

    什么是RPM软件包

    • RPM是Red-Hat Package Manager(RPM软件包管理器)对的缩写,这一文件格式名称虽然打上了Red-Hat的标志,但是其原始设计理念是开放式的,通常软件的稳定版本会被官方做成RPM,所以软件版本偏低。
    • rpm包格式

     rpm包格式列举

    例1
    mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm
    软件包名称:mysql-connector-odbc
    版本号Version:5.2.5
    发布版本Release:8.el7
    平台:el7.x86_64
    后缀:rpm
    
    
    例2
    abrt-python-doc-2.1.11-57.el7.centos.noarch.rpm
    abrt-python-doc    #软件包的名称
    2.1.11             #软件版本
    57                 #软件编译之后的发布的次数
    el7                #适合的操作系统的版本
    noarch             #适用于不同版本的CPU 
    .rmp               #后缀名

    rpm闭包使用的平台

    redhat/centos/redora/suse
    
    查看自己当前平台
    [root@localhost ~]# uname -m
    x86_64
    [root@localhost ~]# cat /etc/redhat-release
    CentOS Linux release 7.6.1810 (Core)

    管理rpm包的两种命令

    1.rpm命令:
          需要自己找到rpm包,并且手动解决包的依赖性关系
          ps:实际情况下,很难分辨缺少什么依赖包
     
    2.yum命令:
          相关rpm包事先都被存放于一个仓库里,仓库包含了所有的依赖包,所以yum按照可以帮助我们解决依赖问题

    rpm包获取

    1.本地的ISO镜像光盘(软件包可能存在版本偏低情况):挂挂载镜像有以下三种方式
    方式一:
    [root@localhost ~]# mount /dev/cdrom /opt/
    
    方式二:
    [root@localhost ~]# mount /dev/sr0 /opt/
    
    方式三:
    [root@localhost ~]# mount -o loop /xxx.iso /opt
    
    查看光盘里的rpm包
    [root@localhost ~]# ls /opt/Packages/
    # 2.自己去网上下载rpm包进行安装
    # 3.互联网从yum仓库里获取rpm包    
    # yum的时候

    rpm命令与选项

    #1、安装rpm -ivh <RPM包名全称>
    
    #2、卸载rpm -e <RPM包名>
    
    #3、升级rpm -Uvh <RPM包名>
    
    #4、查询:
    rpm -qa               #查询系统中安装的所有rpm软件包 
    
    rpm -qa | grep php    #检索系统中已安装有关PHP的软件包
    
    rpm -q <RPM包名>       #查询指定软件包是否已安装
                                   [root ~]# rpm -q zip
                                    zip-3.0-11.el7.x86_64
    
     
    rpm -qi <RPM包名>      #查询系统中已安装包的描述信息 
    
    rpm -ql <RPM包名>      #查询系统中一安装包里所包含的文件
    
    rpm -qc <RPM包名>      #查询指定软件包所有配置文件
                                    [root ~]# rpm -qc mariadb
                                       /etc/my.cnf.d/client.cnf
     
    rpm -qd <RPM包名>      #查询某个包安装的帮助文档 
                                    [root@localhost ~]# rpm -qd zlib 
     
    rpm -qf 文件路径        #查询系统中指定文件所属的软件包
                                      [root ~]# rpm -qf /usr/sbin/ifconfig
                                      net-tools-2.0-0.25.20131004git.el7.x86_64
    
    -p                     #在上述选项的基础上加选项-p,就可以查看尚未安装的rpm包信息
    [root@localhost ~]# rpm -e dos2unix # 先卸载一下,证明本地rpm数据库中没有该包信息
    [root@localhost ~]# rpm -qip /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
    [root@localhost ~]# rpm -qlp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
    [root@localhost ~]# rpm -qcp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
    [root@localhost ~]# rpm -qdp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
     额外选项
    --nomd5                #不检验软件包的签名
    --nodeps               #忽略依赖性安装软件,安装后软件有可能无法使用,最好是解决依赖性后再安装
    [root@localhost ~]# rpm -e dos2unix --nodeps # 忽略依赖关系
     
    --force                #强制安装软件包,只有安装和升级可以强制执行

    安装

    1.rpm包在本地
    root ~]# mount /dev/sr0 /opt
    [root~]# rpm -ivh /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
    
    #2.rpm来自网络,如果安装过程中报错:curl: (60) Peer's Certificate has expired҅
    请先将系统时间修改正确,然后再安装即可
    [root ~]# rpm -ivh
    https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-
    4.0.0-2.el7.x86_64.rpm

    安装与依赖性

    [root~]# rpm -ivh /opt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
    错误:依赖性检验失败
    /etc/mime.types 被 httpd-2.4.6-88.el7.centos.x86_64 需要
    
    
    httpd-tools = 2.4.6-88.el7.centos 被 httpd-2.4.6-88.el7.centos.x86_64 需要
    
    
    libapr-1.so.0()(64bit) 被 httpd-2.4.6-88.el7.centos.x86_64 需要
    
    
    libaprutil-1.so.0()(64bit) 被 httpd-2.4.6-88.el7.centos.x86_64 需要
    
    
    #解决思路:安装提示库,安装
    
    
    [root ~]# rpm -ivh /opt/Packages/apr-1.4.8-3.el7_4.1.x86_64.rpm
    
    
    [root ~]# rpm -ivh /opt/Packages/apr-util-1.5.2-6.el7.x86_64.rpm
    
    
    [root ~]# rpm -ivh /opt/Packages/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
    
    
    [root ~]# yum search mime.types # ັ፡کmime.types 查看到mime.types对应的依赖包为mailcap-
    
    
    [root ~]# rpm -ivh /opt/Packages/mailcap-2.1.41-2.el7.noarch.rpm
    然后重新安装
    
    
    [root ~]# rpm -ivh /opt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
      准备中...                       ################################# [100%]
    
    
    正在升级/安装...
          1:httpd-2.4.6-88.el7.centos ################################# [100%]

    升级rpm包

    #1、下载一个低版本,一个高版本
    wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix￾agent-3.0.9-1.el7.x86_64.rpm
    wget https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix￾agent-4.2.0-1.el7.x86_64.rpm
    
    #2、先安装低版本
    [root ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
    
    #3、再安装高版本,会报错
    [root~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
    
    #4、如果采用--force选项,那就是强制安装,会同时存在两个版本,该方案不可取
    [root ~]# rpm -qa |grep zabbix
    zabbix-agent-3.0.9-1.el7.x86_64
    [root ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm --force
    [root ~]# rpm -qa |grep zabbix # 同时两个版本共享
    zabbix-agent-3.0.9-1.el7.x86_64
    zabbix-agent-4.2.0-1.el7.x86_64
    #5、重来,采用升级方式安装
    [root ~]# rpm -e zabbix-agent-3.0.9-1.el7.x86_64
    [root ~]# rpm -e zabbix-agent-4.2.0-1.el7.x86_64
    [root ~]# rpm -qa |grep zabbix
    [root ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
    [root ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
    [root ~]# rpm -qa |grep zabbix-agent # 只留下一个版本
    zabbix-agent-4.2.0-1.el7.x86_64

    三、yum管理

    1.yum介绍

    yum自动解决依赖关系

    • yum(Yellow dog Update,Modified)是在一个Fedora和RedHat以及Centos中的Shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐地,一次次下载、安装

    查看yum命令与配置文件

    [root@localhost ~]# rpm -q yum
    yum-3.4.3-161.el7.centos.noarch
    [root@localhost ~]# rpm -qc yum
    /etc/logrotate.d/yum
    /etc/yum.conf
    /etc/yum/version-groups.conf

    yum命令常用选项

    常用选项说明:
    #仓库 
     yum repolist      #查询可用仓库
     yum repolist all #查看包括已启用或禁用的所有仓库状态
     # 关闭与启用仓库:本质都是在修改repo文件的enable的值 0 不启用; 1 启用
     yum-config-manager --disable epel # 关闭仓库epel
     yum-config-manager --enable epel #启用仓库epel
    #查看
     yum list #列出可用仓库中所有的软件包
     yum list | less
     yum grouplist #列出可用仓库中的软件组
     
     yum provides /usr/sbin/ifconfig #查询命令所属命令的软件包,可以不加路径,只写命令名
                                                   #与rpm -qf的区别在于yum provides后可以只跟命令名
     
    #安装    
    yum install httpd httpd-tools #加上-y选项可以变成非交互
     yum groupinstall "开发工具" -y #安装软件组,一个软件组中包含了多个软件包
     yum groups install "开发工具" -y
     
     
    #卸载 
     yum remove httpd httpd-tools http* #卸载软件包
     yum groupremove "开发工具" -y. #卸载软件组
     yum groups remove "开发工具" -y 
     
     
    #重装
    yum reinstall httpd #不小心删了配置文件的时候,可以reinstall一下
    
    #更新
    yum check-update #检查可以更新的软件包
    yum update -y #更新所有软件包,包括内核,通常只在刚装完系统时执行
     
     yum update httpd -y #更新某个软件包
     
     
    #缓存 
     yum makecache #制作元数据缓存
     yum clean all #清理元数据缓存
     vim /etc/yum.conf #默认软件包下载安装后会自动删除
     #设置keepcache=1 即开启了软件包缓存 
     #缓存目录为配置文件中指定的cachedir
    
    #历史记录
     yum history # 查看执行过的yum命令
     yum history info IDݩ # 查看具体某一条yum命令的详细信息
     yum history undo IDݩ # 撤销执行过的历史命令
     
     
    # 关于安装需要注意:
    无论yum安装的软件来自何方,yum时刻以自己仓库的repodata储存的依赖关系为准,如果有多个仓库,就依次检索
    #1、yum直接安装公网的rpm包,会自动查找当前系统上已有的仓库解决依赖关系
    yum install
    https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba-4.8.3-
    4.el7.x86_64.rpm
     
    #2、yum直接安装本地的rpm包,会自动查找当前系统已有的仓库解决依赖关系
    yum localinstall -y /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm

     要使用yum前,需要准备一个yum源(我们也称为yum仓库),这个可以是一个互联网上的仓库,也可以是本地自己搭建的仓库,仓库里面全部都是rpm软件包

    一台linux可以添加N多个yum源,能搜索的软件包数量就是N个yum源之和

    系统常见yum源

    1.自定义的本地源
    2.网络上的源头,如:base基础源、epel扩展源、与服务相关的源(官网)

    2、镜像文件作为yum源(本地源)

    先挂载

    #方式一 
    [root@localhost ~]# mount /dev/cdrom /opt/
    
    #方式二 
    [root@localhost ~]# mount /dev/sr0 /opt/
    
    #方式三
    [root@localhost ~]# mount -o loop /xxx.iso /opt
    
    查看光盘里的rpm包
    [root@localhost ~]# ls /opt/Packages/

    编辑repo文件

    [root@localhost ~]# cd /etc/yum.repos.d/
    [root@localhost yum.repos.d]# vim local.repo #文件名自定义,必须以.repo结尾
    [local] # 仓库实际名字  任意
    name=local # 仓库描述
    baseurl=file:///opt # 仓库位置,可以是 http:// https:// ftp:// file://
    enabled=1 # 启动仓库,默认就是启动的
    gpgcheck=0 # 检查安装的rpm是否是合法的,0表示不检验

    3.使用开源yum源(网络源)

    下载开源对的yum源头

    例:阿里云的base基础源

    wget -O /etc/yum.repos.d/CentOS-Base.repo
    http://mirrors.aliyun.com/repo/Centos-7.repo

    例:163的base基础源

    wget -O /etc/yum.repos.d/CentOS-Base.repo
    http://mirrors.163.com/.help/CentOS7-Base-163.repo

    例:红帽的base扩展源

    可以直接下载
    [root ~]# curl -o /etc/yum.repos.d/epel.repo
    http://mirrors.aliyun.com/repo/epel-7.repo
    也可以安装一个软件包生成
    [root ~]# yum install epel-release -y 

    例:nginx官网软件包源

    进入nginx官网->download->Pre-Built Packages->Stable and mainline->RHEL/CentOS->编辑到本地
    
    [root yum.repos.d]# cat nginx.repo
    
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    
    [nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true

    将centos系统默认的源备份

    [root ~]# cd /etc/yum.repos.d/
    [root yum.repos.d]# mkdir bak
    [root yum.repos.d]# mv CentOS-* bak/
    [root yum.repos.d]# ls
    bak CentOS-Base.repo epel.repo local.repo nginx.repo

    4.自己制作本地yum源

    1、下载好一堆rpm包,相关依赖包也都存在,将所有的rpm包都放置于一个文件夹下,如:/txt

    2、安装工具createrepo

    [root@localhost ~]# yum install createrepo -y

    3、制作repodate

    [root@localhost ~]# createrepo /txt/

    4、配置本地repo文件,指向/txt

    [root@localhost ~]# vim /etc/yum.repos.d/soft.repo
    [soft]
    name=soft
    baseurl=file:///txt
    enabled=1
    gpgcheck=0

    5、自己制作本地yum源共享给别人

    ==================在服务端上需执行操作==================
    # 1、准备环境
    [root ~]# systemctl stop firewalld
    [root ~]# systemctl disable firewalld
    [root ~]# setenforce 0
    [root ~]# sed -i 's#^SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config
    
    # 2、安装ftp服务
    [root ~]# yum install vsftpd -y 
    [root ~]# systemctl start vsftpd
    [root ~]# systemctl status vsftpd # 查看状态,确保开启
    [root ~]# systemctl enable vsftpd
    
    # 3、采集软件包放到一个目录下
    可以基于3.3的方式,也可以偷个懒直接用镜像里现的,毕竟实验,只有解决好依赖关系才能做yum源
    [root ~]# mkdir /var/ftp/centos7
    [root ~]# mount /dev/sr0 /var/ftp/centos7
    
    #或者拷贝 
    [root ~]# mount /dev/sr0 /opt
    [root ~]# mkdir /var/ftp/centos7
    [root ~]# find /opt/Packages/ -type f -name "*.rpm" |xargs -I {} cp -rp
    {} /var/ftp/centos7/
    
    
    
    ==================在客户端上需执行操作==================
    # 1、准备环境
    [root ~]# systemctl stop firewalld
    [root ~]# systemctl disable firewalld
    [root ~]# setenforce 0
    [root ~]# sed -i 's#^SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config
    
    [root ~]# ping -c 2 192.168.12.42 # ping一下服务端ip地址,保证网络通畅
    
    # 2、在客户端配置网络yum源
    [root yum.repos.d]# cd /etc/yum.repos.d/
    [root yum.repos.d]# mkdir bak
    [root yum.repos.d]# mv *.repo bak/
    [root yum.repos.d]# cat >> ftp.repo << EOF
    > [ftp_repo] > name = This is Ftp Share Repo
    > baseurl = ftp://192.168.12.42/centos7 
    > enabled = 1 > gpgcheck = 0 > EOF
    
    :客户端baseurl指向的文件夹无论是什么,在该文件夹的子目录一级必须有一个repodate数据库

    四、源码包

    1、官网下载  如:nginx

    # 浏览器下载
    # 执行命令下载
    wget http://nginx.org/download/nginx-1.18.0.tar.gz

    2、预先安装编译安装依赖的库

    yum -y install gcc gcc-c++ autoconf automake make 
    yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
    
    或
    LANG=C yum -y groupinstall "Development tools"

    3、解压、编译、编译安装

    [root@localhost ~]# tar xvf nginx-1.18.0.tar.gz -C /tmp/
    [root@localhost ~]# cd /tmp/nginx-1.18.0/
    
    [root@localhost nginx-1.18.0]# ./configure --user=www --group=www --
    prefix=/usr/local/nginx --with-http_stub_status_module --with￾http_ssl_module --with-stream --with-http_gzip_static_module --with￾http_sub_module
    
    #1、--prefix 指定安装的目录,/usr/local/nginx 是安装目录
    #2、带ssl stub_status模块  添加strem模块–with-stream,这样就可以传输tcp协议
    #3、http_stub_status_module  状态监控
    #4、http_ssl_module   配置https
    #5、stream  配置tcp得转发
    #6、http_gzip_static_module 压缩
    #7、http_sub_module  替换请求
    
    [root@localhost nginx-1.18.0]# make && make install
    
    # 将程序设定一个软连接,便于后续的升级
    [root soft]# ln -s /soft/nginx-1.16.0/ /soft/nginx
    [root ~]# /soft/nginx/sbin/nginx
    
    注:现在百分之90可以用上的软件都提供了rpm包。----->用户可以yum安装直接使用
  • 相关阅读:
    Python生成器表达式
    Python列表解析
    Python迭代器(Iterator)
    Python set 集合
    python eval 函数妙用
    Python字典 (dict)
    Python序列之元组 (tuple)
    Python序列之列表 (list)
    递归和反射
    常用标准库
  • 原文地址:https://www.cnblogs.com/ChuangShi-HolySpirit/p/13916774.html
Copyright © 2011-2022 走看看