zoukankan      html  css  js  c++  java
  • Linux

    一:软件包介绍

    和Windows类似,在Linux系统上也可以安装应用程序(软件包)
     

    在Linux下,软件包分为3类

    软件包安装特点
    rpm包 预先编译打包,安装简单 稳定版会被官方做成rpm
    所以软件版本普遍偏低
    源码包 手动编译打包,安装繁琐 软件版本丰富
    二进制包 解压即可使用,安装简单 不能修改源代码
     

    二:RPM包管理

     

    1.什么是RPM包?

    RPM 是Red-Hat Package Manager(RPM软件包管理器)的缩写

    这一文件格式名称虽然打上了RedHat 的标志 ,但是其原始设计理念是开放式的

    通常软件的稳定版会被官方做成rpm,所以软件版本偏低

     

    2.RPM包格式

     

    实例:

    ① bash-4.2.26-28.el7.x86_64.rpm
    • 软件名称:bash
    • 版本号:4.2.46
    • 发布次数:15
    • 适用的操作系统版本:CentOS7
    • 硬件平台:x86_64(64位CPU)
    • 扩展名:rpm
    ② mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm
    • 软件名称:mysql-connector-odbc
    • 版本号:5.2.5
    • 发布次数:8
    • 适用的操作系统版本:CentOS7
    • 硬件平台:x86_64(64位CPU)
    • 扩展名:rpm
     

    3.可以使用RPM包的平台

    • RedHat
    • CentOS
    • Fedora
    • SUSE
    • Mac OS
     

    4.查看当前的硬件平台和软件平台

     

    硬件平台(CPU位数)

    [root@localhost ~]# uname -m
    x86_64

    软件平台(操作系统版本)

    [root@localhost ~]# cat /etc/redhat-release
    CentOS Linux release 7.2.1511 (Core)

    5.管理PRM包的2种命令

     

    ① RPM命令

    需要自己找到PRM包,并且手动解决包的依赖关系

    需要先安装依赖的包,再安装RPM包(一般情况下,很难分辨它缺少什么依赖包)

     

    ② yum命令

    相关的RPM包会事先被存在1个仓库里,该仓库包含了所有的依赖包

    所以,yum安装RPM可以帮我们解决依赖性的问题

     

    6.RPM包的获取

    建议先使用本地CentOS7的镜像,但实际生产环境中都是通过联网的方式获取rpm包

    先通过虚拟机加载镜像,然后在linux中执行 mount /dev/cdrom /mnt,此时你会在/mnt/Packages目录下看到很多rpm的包文件

     

    ① 本地的ISO镜像光盘(软件包版本可能偏低)

    挂载镜像的方式有3种
    # 方式1:
    [root@localhost ~]# mount /dev/cdrom /opt/
    
    
    # 方式2:
    [root@localhost ~]# mount /dev/sr0 /opt/
    
    
    # 方式3
    [root@localhost ~]# mount -o loop /xxx.iso /opt
    
    
    # 查看光盘里的rpm包
    [root@localhost ~]# ls /opt/Packages/

    ② 到网上下载RPM包

    wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

    ③ 用yum命令 去yum仓库里获取RPM包

     

    ④ 从挂载的U盘里获取rpm包

    • Linux系统支持的U盘的格式只有:VFATFAT32(推荐FAT32,但是该U盘不能大于32G)
    • 格式化U盘为FAT32格式(cmd命令)
    # 将下方的‘F’替换成U盘的盘符即可(格式化时间有点长,具体看U盘的读写速度)
    format /FS:FAT32 F:

    三:RPM命令

     

    1.安装 RPM包

     

    常用选项

    选项作用
    -i 安装rpm
    -v 显示安装详细信息
    -h 显示安装rpm进度
    –force 强制重新安装
    –nodeps 忽略依赖关系
    # 把镜像挂载到/mnt
    [root@localhost ~]# mount /dev/cdrom /mnt
    mount: /dev/sr0 is write-protected, mounting read-only
    
    
    # 此时,/mnt/Packages/目录下会有很多rpm包
    [root@localhost ~]# ls /mnt/Packages/
    acl-2.2.51-12.el7.x86_64.rpm
    aic94xx-firmware-30-6.el7.noarch.rpm
    alsa-firmware-1.0.28-2.el7.noarch.rpm
    ...
    
    
    # rpm方式安装需要的软件包
    [root@localhost ~]# rpm -ich /mnt/Packages/iptables-1.4.21-16.el7.x86_64.rpm
    ################################# [100%]
            package iptables-1.4.21-16.el7.x86_64 is already installed
            
            
    # 如果软件包存在, 强制再次安装
    [root@localhost ~]# rpm -ivh --force /mnt/Packages/iptables-1.4.21-16.el7.x86_64.rpm
    Preparing...                          ################################# [100%]
            package iptables-1.4.21-16.el7.x86_64 is already installed
            
            
    # 安装某些服务需要依赖其他组件, 使用--nodeps可强制安装
    # 如果是用yum安装,则会自动处理依赖

    2.查询 已安装好的RPM包

     

    常用选项

    选项作用
    -q 查看指定软件包是否安装(重点)
    -qa 查看系统中已安装的所有RPM软件包列表
    -qi 查看指定软件的详细信息
    -ql 查询指定软件包所安装的目录、文件列表(重点)
    -qc 查询指定软件包的配置文件(只有配置文件,etc下的)
    -qf 查询文件或目录属于哪个RPM软件
    -qip 查询未安装的rpm包详细信息
    -qlp

    查询未安装的软件包会产生哪些文件

    # 查询所有已安装的包
    [root@localhost ~]# rpm -qa
    parted-3.1-23.el7.x86_64
    centos-release-7-2.1511.el7.centos.2.10.x86_64
    selinux-policy-targeted-3.13.1-60.el7.noarch
    
    
    # 查询 iptables包是否安装(如果安装,会显示完整信息)
    [root@localhost ~]# rpm -q iptables
    iptables-1.4.21-16.el7.x86_64
    
    
    # 查询 vsftpd包是否安装(如果没安装,会显示:not installed)
    [root@localhost ~]# rpm -q vsftpd
    package vsftpd is not installed
    
    
    # 查询 iptables包的详情信息
    [root@localhost ~]# rpm -qi iptables
    Name        : iptables
    Version     : 1.4.21
    Release     : 16.el7
    Architecture: x86_64
    Install Date: Wed 18 Nov 2020 04:42:02 AM EST
    Group       : System Environment/Base
    Size        : 1549241
    License     : GPLv2
    Signature   : RSA/SHA256, Wed 25 Nov 2015 09:43:32 AM EST, Key ID 24c6a8a7f4a80eb5
    Source RPM  : iptables-1.4.21-16.el7.src.rpm
    Build Date  : Fri 20 Nov 2015 06:31:53 AM EST
    Build Host  : worker1.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://www.netfilter.org/
    Summary     : Tools for managing Linux kernel packet filtering capabilities
    Description :
    The iptables utility controls the network packet filtering code in the
    Linux kernel. If you need to set up firewalls and/or IP masquerading,
    you should install this package.
    
    
    # 查询 iptables包所安装的目录、文件列表(重点)
    [root@localhost ~]# rpm -ql iptables
    /etc/sysconfig/ip6tables-config
    /etc/sysconfig/iptables-config
    /usr/bin/iptables-xml
    ...
    
    
    # 查询 iptables包的配置文件
    [root@localhost ~]# rpm -qc iptables
    /etc/sysconfig/ip6tables-config
    /etc/sysconfig/iptables-config
    
    
    # 查询 etc/sysconfig/iptables-config目录属于哪个RPM软件
    [root@localhost ~]# rpm -qf /etc/sysconfig/iptables-config
    iptables-1.4.21-16.el7.x86_64
    
    
    # 查询未安装的rpm详情信息
    [root@localhost ~]# rpm -qip /mnt/Packages/alsa-firmware-1.0.28-2.el7.noarch.rpm
    Name        : alsa-firmware
    Version     : 1.0.28
    Release     : 2.el7
    Architecture: noarch
    Install Date: (not installed)
    Group       : Applications/Multimedia
    Size        : 9572469
    License     : GPL+ and BSD and GPLv2+ and GPLv2 and LGPLv2+
    Signature   : RSA/SHA256, Sat 14 Mar 2015 03:36:28 AM EDT, Key ID 24c6a8a7f4a80eb5
    Source RPM  : alsa-firmware-1.0.28-2.el7.src.rpm
    Build Date  : Thu 05 Mar 2015 04:58:35 PM EST
    Build Host  : worker1.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://www.alsa-project.org/
    Summary     : Firmware for several ALSA-supported sound cards
    Description :
    This package contains the firmware binaries for a number of sound cards.
    Some (but not all of these) require firmware loaders which are included in
    the alsa-tools-firmware package.
    
    
    # 查询未安装的rpm包可能会产生哪些文件
    [root@localhost ~]# rpm -qlp /mnt/Packages/alsa-firmware-1.0.28-2.el7.noarch.rpm
    /lib/firmware/aica_firmware.bin
    /lib/firmware/asihpi
    /lib/firmware/asihpi/dsp2400.bin
    /lib/firmware/asihpi/dsp5000.bin

    3.升级 RPM包

     

    常用选项

    选项作用
    -U 如果老版本不存在则全新安装,如果存在有新版即升级
    # 先下载2个版本,1个老版本,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
    
    # 1.先安装低版本
    [root@localhost ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
            
    # 2.尝试安装高版本(会出现错误)
    [root@localhost ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
            
    # 3.使用升级的方式,完美解决替换
    [root@localhost ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm

    4.卸载 RPM包

    卸载包时需要先把依赖的包卸载掉
    如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃
     

    常用选项

    选项作用
    -e 卸载已存在的RPM包

    5.校验 RPM包(扩展)

     

    常用选项

    选项作用
    S 文件的容量大小是否被改变
    M 文件的类型或者文件的属性是否被修改
    5 MD5 这一种指纹加密的内容已经不同
    L 路径已经被改变
    U 文件的所属主已被修改
    G 文件的所属组已被修改
    T 文件的创建时间已被改变
    软件相关的数据库存放于/var/lib/rpm目录
     

    校验语法

    [root@localhost ~]# rpm -V vsftpd
    S.5....T.  c /etc/pam.d/vsftpd
    .......T.  c /etc/vsftpd/ftpusers
    S.5....T.  c /etc/vsftpd/vsftpd.conf
    .M.......    /var/ftp/pub

    四:yum管理RPM包

     

    1.yum介绍

     

    ① 什么是yum?

    yum(Yellow dog updater, modified)是一个在Fedora和RedHat以及CentOS中的Shell 前端软件包管理器

    基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系

    并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装(YUM是生产最佳实践)

     

    ② 是什么yum源?

    要成功的使用 yum工具安装更新软件或系统,就需要有一个包含各种 rpm 软件包的repository(软件仓库),这个软件仓库我们习惯称为 yum 源(可以是本地源、网络源)

     

    ③ 查看yum命令 与 yum配置文件

    #  查看yun命令
    [root@localhost ~]# rpm -q yum
    yum-3.4.3-132.el7.centos.0.1.noarch
    
    
    #  查看yun的配置文件
    [root@localhost ~]# rpm -qc yum
    /etc/logrotate.d/yum
    /etc/yum.conf
    /etc/yum/version-groups.conf

    ④ yum命令常用选项

    仓库
    yum repolist        # 查询可用仓库
    yum repolist list    # 查询已启用/禁用的所有仓库状态
    
    # 关闭与启用仓库:本质:都是在修改repo文件中的enable的值 0不启用 1启用
    yum-config-manager --disable epel    # 关闭仓库epel
    yum-config-manager --enable epel    # 启用仓库epel
    查看
    yum list        # 列出可用仓库中的所有软件包
    yum list | less    # 列出可用仓库中的所有软件包(分页)
    
    yum grouplist    # 列出可用仓库中的软件组
    
    # 与rpm -qf的区别在于yum provides后可以只跟命名
    yum provides /usr/sbin/ifconfig    # 查询命令所属的软件包,可以不加路径,只写命令名字
    安装
    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        # 清除所有yum缓存的软件包以及元数据
    yum clean packages    # 只清除缓存的软件包
    
    
    [root@localhost ~]# vim /etc/yum.conf
    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=1     #启动缓存
    历史记录
    yum history                # 查看执行过的yum命令历史记录
    yum history info ID号    # 查看具体某一条yum命令的详细信息
    yum history undo ID号    # 撤销执行过的历史命令

    需要注意的点:

    • 无论yum安装的软件来自何处,yum时刻以自己仓库中的repodata存储的依赖关系为准,如果有多个仓库,就依次检索
    • yum直接安装公网的rpm包, 会自动查找当前系统上已有的仓库解决依赖关系
    yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba4.8.3-4.el7.x86_64.rpm
    • 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源

    • 自定义的本地源
    • 网络的源(如:base基础源、epel扩展源、与服务相关的源(官网))
     

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

     

    ① 挂载

    # 方式1:
    [root@localhost ~]# mount /dev/cdrom /opt/
    
    # 方式2:
    [root@localhost ~]# mount /dev/sr0 /opt/
    
    # 方式3:
    [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表示不检验

    ③ 检查可用仓库

    [root@localhost ~]# yum repolist        # 查询可用仓库
    [root@localhost ~]# yum repolist all    # 查看所有仓库,包括禁用的

    ④ 安装、查询、卸载

    [root@localhost ~]# yum list                # 列出可用的软包
    [root@localhost ~]# yum install vsftpd -y    # 安装:vsftpd
    [root@localhost ~]# yum list vsftpd httpd    # 
    [root@localhost ~]# yum remove vsftpd -y    # 卸载:vsftpd
    [root@localhost ~]# yum install glib* httpd -y
    [root@localhost ~]# yum provides vsftp        # 查询某个软件(可以是未安装的)是由哪个rpm包提供
    
    
    # yum reinstall 重装
    [root@egon ~]# rm -rf /etc/httpd/conf/httpd.conf
    [root@egon ~]# yum reinstall httpd -y &> /dev/null
    [root@egon ~]# ls /etc/httpd/conf/httpd.conf
    /etc/httpd/conf/httpd.conf
    
    
    # yum update 更新
    [root@localhost ~]# yum -y update samba
    [root@localhost ~]# yum -y update

    ⑤ 软件包组安装、查询、卸载

    [root@localhost ~]# yum grouplist
    [root@localhost ~]# yum groupinstall "GNOME 桌面" -y
    [root@localhost ~]# yum groupinstall "开发工具" -y
    [root@localhost ~]# yum groupremove "开发工具" -y

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

     

    ① 查看当前yum源。

    [root@localhost ~]# yum repolist
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    repo id              repo name                                      status
    !base/7/x86_64       CentOS-7 - Base - mirrors.aliyun.com           10,072
    !extras/7/x86_64     CentOS-7 - Extras - mirrors.aliyun.com         448
    !updates/7/x86_64    CentOS-7 - Updates - mirrors.aliyun.com        773
    repolist: 11,293
    • base:基础源
    • extras:扩展源
    • updates:更新源
     

    ② 使用第三方yum源

    默认系统是国外源(因为服务器在国外,所以速度较慢),因此 需要替换为国内的源
    例:(切换成阿里源)
    # 阿里云的base基础源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos7.repo
    
    # 阿里云的extras扩展源
    curl -o /etc/yum.repos.d/epel.repo
    http://mirrors.aliyun.com/repo/epel-7.repo
    
    # extras扩展源 也可以安装一个软件包来生成(效果同上)
     yum install epel-release -y
    扩展:
    • EPEL

    EPEL的全称叫 Extra Packages for Enterprise Linux

    EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目

    装上了 EPEL之后,就相当 于添加了一个第三方源

    • RHEL

    RHEL以及他的衍生发行版如CentOS、Scientific Linux为了稳定,官方的rpm repository提供的rpm 包往往是很滞后的

    当然了,这样做这是无可厚非的,毕竟这是服务器版本,安全稳定是重点,官方的rpm repository提供的rpm包也不够丰富,很多时候需要自己编译那太辛苦了,而EPEL恰恰可以解决这两方面的问题

     

    4.自己制作本地yum源

     

    ① 将下载好的rpm包和相关依赖都放入一个目录中

     

    ② 安装createrepo工具

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

    ③ 制作repodata

    createrepo /mnt/Packages/

    ④ 配置本地repo文件,指向/mnt/Packages/

    # 编辑 /etc/yum/repos.d/soft.repo
    [root@localhost ~]# vim /etc/yum/repos.d/soft.repo
    
    # 按i进入插入模式,添加如下内容
    [soft]
    name=soft
    baseurl=file:///mnt/Packages/
    enabled=1
    gpgcheck=0

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

     

    6.yum的历史记录

     

    7.yum扩展知识

     

    ① yum元数据缓存

    指的将yum仓库的元数据缓存下来,下次安装时省去了检索过程,安装速度可以加快
    [root@localhost ~]# yum clean all    # 清理缓存
    [root@localhost ~]# yum makecache    # 制作缓存

    ② yum软件包缓存

    开启软件包缓存后,从网络源下 载安装完的软件安装包不再删除,都缓存到了本地
    [root@localhost ~]# vim /etc/yum.conf
    [main]
    cachedir=/var/cache/yum/$basearch/$releasev
    er # 指定软件安装包的缓存目录
    keepcache=1 # 设置为1
    debuglevel=2
    # 缓存目录为:ls /var/cache/yum/x86_64/7/
    基于软件包缓存,可以做成自己的yum源,以此来控制 各个服务的版本
    通常的做法为
    1. 在测试环境中,在每个节点上都开启软件包缓存
    2. 在测试环境中,安装相同版本的操作系统,安装完毕后统一执行yum update -y
    3. 在测试环境中,部署完你的架构,测试完毕
    4. 把测试环境中每台机器上缓存好的软件包安装包采集到一个文件下
    [root@localhost ~]# find /var/cache/yum/x86_64/7/ -type f -name "*.rpm" | xargs -I {} mv {} /soft/
    1. 然后用createrepo命令制作好依赖关系,即 repodata数据库
    2. 然后在线上环境部署时,就用该本地源就好,不要轻易升级,不要滥用yum源
    3. 这样可以严格控制好各个服务的 版本
     

    8.签名检查机制

     

    五:源码包

  • 相关阅读:
    EntityFramework优缺点
    领导者与管理者的区别
    七个对我最好的职业建议(精简版)
    The best career advice I’ve received
    Difference between Stored Procedure and Function in SQL Server
    2015年上半年一次通过 信息系统项目管理师
    Difference between WCF and Web API and WCF REST and Web Service
    What’s the difference between data mining and data warehousing?
    What is the difference between a Clustered and Non Clustered Index?
    用new创建函数的过程发生了什么
  • 原文地址:https://www.cnblogs.com/ltyc/p/14057234.html
Copyright © 2011-2022 走看看