• 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包
    # 查询
    [root@localhost ~]# rpm -qa |grep iptables
    iptables-1.4.21-16.el7.x86_64
    
    
    # 卸载
    [root@localhost ~]# rpm -e iptables
    

    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.签名检查机制

    五:源码包

    ## 一:软件包介绍

    和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包
    # 查询
    [root@localhost ~]# rpm -qa |grep iptables
    iptables-1.4.21-16.el7.x86_64
    
    
    # 卸载
    [root@localhost ~]# rpm -e iptables
    

    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.签名检查机制

    五:源码包

  • 相关阅读:
    Codeforces Round #415 (Div. 2) C. Do you want a date?
    Lifting the Stone 计算几何 多边形求重心
    计算几何 多边形面积 和 重心 的求法
    POJ 3304 segments 线段和直线相交
    LibreOJ #114. k 大异或和
    LibreOJ #113. 最大异或和
    对于各种各样平衡树的比较
    数组splay ------ luogu P3369 【模板】普通平衡树(Treap/SBT)
    替罪羊树 ------ luogu P3369 【模板】普通平衡树(Treap/SBT)
    红黑树 ------ luogu P3369 【模板】普通平衡树(Treap/SBT)
  • 原文地址:https://www.cnblogs.com/xuexianqi/p/14054435.html
Copyright © 2020-2023  润新知