zoukankan      html  css  js  c++  java
  • 09Linux软件安装

    1.RPM基本概述

    1.什么是rpm?

    RPM全称 RedHat Package Manager 缩写,由红帽开发用于软件包的安装升级卸载与查询

    2.rpm包名组成部分?

    RPM包命名以-将软件分成了若干部分bash-4.2.46-28.el7.x86_64.rpm

    bash:软件名
    4.2.46-28.el7:4是大版本,2是小版本,46是修订次数,28是发布次数,el7是:enterprise linux 7,使用linux7系统
    x86_64:64位架构
    

    img

    3.如何获取rpm包

    在我们刚开始学习rpm包,建议先使用本地CentOS7的镜像,但实际生产环境中都是通过联网的方式获取rpm包。(先学会,你懂的?) 我们先通过虚拟机加载镜像,然后在linux中执行 mount /dev/cdrom /mnt,此时你会在/mnt/Packages目录下看到很多rpm的包文件。那么就可以开始rpm包管理之旅。

    4.扩展: Linux中除了rpm安装软件,是否还有安装软件方式?

    分类安装版本
    rpm包 预先编译打包,安装简单 软件版本偏低
    源码包 手动编译打包,安装繁琐 软件版本随意
    二进制包(绿色包) 解压即可使用, 安装简单 不能修改源码

    2.RPM使用示例

    1.rpm包如何安装

    以下列出了rpm命令进行安装软件的常用参数

    选项描述
    -i 安装rpm
    -v 显示安装详细信息
    -h 显示安装rpm进度
    –force 强制重新安装
    –nodeps 忽略依赖关系
    #安装软件包, 需要指定软件包绝对路径
    # mount /dev/cdrom /mnt
    [root@lqz ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
    [root@lqz ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
    
    #在软件包所在目录下可以不指定绝对路径
    [root@lqz ~]# cd /mnt/Packages/
    [root@lqz Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm
    
    #如果软件包存在, 强制再次安装
    [root@lqz ~]# rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm
    
    #安装samba服务需要依赖其他组件, 使用--nodeps可重新强制安装
    [root@lqz ~]# rpm -ivh --nodeps  /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
    # yum 安装会自动处理依赖
    
    # 其他用法,直接使用连接地址
    # https://developer.aliyun.com/mirror/
    # https://developer.aliyun.com/mirror/zabbix?spm=a2c6h.13651102.0.0.3e221b113DCKcf
    # https://mirrors.aliyun.com/zabbix/zabbix/
    # 先装3,再装4测试升级
    # zabbix-agent-3.0.9-1.el7.x86_64.rpm 
    [root@lqz ~]#  rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
    # 升级要用U
    [root@lqz ~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.8-1.el7.x86_64.rpm
    
    # 卸载(带依赖的卸不了)
    rpm -e zabbix-agent
    rpm -q zabbix-agent
    
    yum remove samba
    

    2.如何查询已安装好的rpm包

    选项描述
    rpm -q 查看指定软件包是否安装(重点)
    rpm -qa 查看系统中已安装的所有RPM软件包列表
    rpm -qi 查看指定软件的详细信息
    rpm -ql 查询指定软件包所安装的目录、文件列表(重点)
    rpm -qc 查询指定软件包的配置文件(只有配置文件,etc下的)
    rpm -qf 查询文件或目录属于哪个RPM软件
    rpm -qip 查询未安装的rpm包详细信息
    rpm -qlp 查询未安装的软件包会产生哪些文件
    #查询vsftpd这个rpm包是否安装
    [root@lqz ~]# rpm -q vsftpd
    
    #模糊查找系统已安装的rpm包
    [root@lqz ~]# rpm -qa |grep ftp
    
    #查询vsftpd软件包的相关信息
    [root@lqz ~]# rpm -qi vsftpd
    
    #查询rpm包所安装的文件
    [root@lqz ~]# rpm -ql vsftpd
    
    #查询rpm包相关的配置文件
    [root@lqz ~]# rpm -qc vsftpd
    
    #查询配置文件或命令来自于哪个rpm包(只能查已经安装过的)
    [root@lqz ~]# rpm -qf /etc/vsftpd/vsftpd.conf # 查看这个配置文件是
    [root@lqz ~]# rpm -qf /usr/sbin/vsftpd
    [root@lqz ~]# rpm -qf /usr/sbin/ifconfig 
    # 想看未安装的
    yum provides vim
    
    #查询未安装的软件包会产生哪些文件
    [root@lqz ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
    
    #查询未安装的软件包会产生哪些文件
    [root@lqz ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
    

    3.RPM包升级

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

    4.RPM包卸载

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

    #先查询, 然后卸载 
    [root@www.lqz.com ~]# rpm -qa |grep sh
    [root@www.lqz.com ~]# rpm -e zsh
    

    5.RPM包校验(扩展了解)

    软件相关的数据库存放于/var/lib/rpm目录

    参数描述
    S 文件的容量大小是否被改变
    M 文件的类型或者文件的属性是否被修改
    5 MD5 这一种指纹加密的内容已经不同
    L 路径已经被改变
    U 文件的所属主已被修改
    G 文件的所属组已被修改
    T 文件的创建时间已被改变
    [root@www.lqz.com ~]# 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
    

    6.RPM包小结

    如何查询 util-linux 软件包安装了哪些文件? 如何查询 mkdir 命令是由哪个 RPM 软件包安装的? 安装 .rpm 软件包时,-i、-U、选项有何区别?

    3.YUM基本介绍

    1.什么是YUM

    Yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。(PS: YUM是生产最佳实践)

    2.YUM源是什么

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

    3.YUM源配置实例

    1.阿里yum源

    # yum repolist # 查看现在有多少源,nginx没有,可以配置nginx仓库,就有了
    # 扩展epel源:
    [root@www.lqz.com ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    
    
    #默认系统是国外源,需要替换为国内的源
    [root@www.lqz.com ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo 
    http://mirrors.aliyun.com/repo/Centos-7.repo
    
    #扩展源,有很多软件在基本源中没有
    [root@www.lqz.com ~]# wget -O /etc/yum.repos.d/epel.repo 
    http://mirrors.aliyun.com/repo/epel-7.repo
    

    2.Nginx官方源,比如在学习Nginx时需要使用官方的yum源来安装

    [root@www.lqz.com ~]# vim /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo 
    baseurl=http://nginx.org/packages/centos/7/$basearch/ 
    gpgcheck=0
    enabled=1
    

    PS:源超找方式基本一致,zabbix,Docker、Nginx、saltstack、openstack

    4.YUM实践案例

    1.使用yum查询软件包的方式

    [root@www.lqz.com ~]# yum list
    [root@www.lqz.com ~]# yum list|grep ftp
    [root@www.lqz.com ~]# yum info ftp
    

    2.使用yum安装软件包的方式

    [root@www.lqz.com ~]# yum install tree
    [root@www.lqz.com ~]# yum install tree -y    #非交互
    
    #安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖
    [root@www.lqz.com ~]# yum localinstall /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm
    
    #直接安装网络上的rpm包
    [root@www.lqz.com ~]# yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
    

    3.使用yum重新安装软件包的方式

    #1.如果不小心删除vsftpd配置文件
    [root@www.lqz.com ~]# rm -f /etc/vsftpd/vsftpd.conf
    
    #2.可以对软件进行重新安装
    [root@www.lqz.com ~]# yum reinstall vsftpd
    
    #3.检查软件的配置文件
    [root@www.lqz.com ~]# rpm -qc vsftpd
    /etc/logrotate.d/vsftpd
    /etc/pam.d/vsftpd
    /etc/vsftpd/ftpusers
    /etc/vsftpd/user_list
    /etc/vsftpd/vsftpd.conf
    

    4使用yum更新软件包

    #对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
    [root@www.lqz.com ~]# yum check-update
    
    #更新acl软件
    [root@www.lqz.com ~]#  yum update acl -y
    
    #如下的执行很危险,这代表更新整个系统所有的软件,包括内核
    [root@www.lqz.com ~]#  yum update -y
    

    5.使用yum删除软件包

    [root@www.lqz.com ~]# yum install samba -y
    [root@www.lqz.com ~]# yum erase samba -y
    [root@www.lqz.com ~]# yum remove samba -y
    

    6.与yum仓库相关指令(扩展了解)

    #列出yum源可用的软件仓库
    [root@www.lqz.com ~]# yum repolist
    
    #列出全部yum源可用和禁用的仓库
    [root@www.lqz.com ~]# yum repolist all
    
    #查找某个命令或文件属于那个软件包(生产常用)
    [root@www.lqz.com ~]# yum provides /etc/my.cnf
    [root@www.lqz.com ~]# yum provides cd
    

    7.与yum缓存相关指令(扩展了解)

    #1.缓存rpm包方式一、修改yum全局配置文件
    [root@www.lqz.com ~]# vim /etc/yum.conf
    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=1     #启动缓存
    
    #2.缓存rpm包方式二,只下载不安装
    [root@www.lqz.com ~]# yum install -y yum-plugin-downloadonly #插件
    [root@www.lqz.com ~]# yum install httpd -y --downloadonly --downloaddir=/tmp
    
    #3.清除所有yum缓存的软件包以及元数据
    [root@www.lqz.com ~]# yum clean all
    
    #4.只清除缓存的软件包
    [root@www.lqz.com ~]# yum clean packages
    

    8.组包相关指令,(扩展了解)

    [root@www.lqz.com ~]# yum groups list
    #安装一整个组的软件
    [root@lqz ~]# yum groups install Development tools 
    Compatibility libraries 
    Base Debugging Tools
    
    #yum删除包组
    [root@www.lqz.com ~]# yum groups remove  -y Base
    

    9.历史记录指令,(扩展了解)

    #1.查看历史执行yum命令
    [root@www.lqz.com ~]# yum history
    
    #2.查询历史执行yum命令ID详细信息
    [root@www.lqz.com ~]# yum history info N
    
    #3.撤销历史执行过的yum命令
    [root@www.lqz.com ~]# yum history undo N
    

    PS: YUM还有配置文件与签名验证需要我们额外扩展了解的请点击传送门

    5.搭建本地仓库

    1.有的时候你的linux系统不能联网,当然就不能很便捷的使用联网的yum源了,这时候就需要你自己会利用linux系统光盘制作一个yum源。具体步骤如下:

    #1.挂载镜像
    [root@lqz ~]# mount /dev/cdrom /mnt   
    
    #2.备份原有仓库
    [root@lqz ~]# gzip /etc/yum.repos.d/
    
    #3.使用yum-config-manager命令添加本地仓库
    [root@lqz ~]# yum-config-manager --add-repo="file:///mnt"
    
    #4.或者使用手动添加repo文件
    [root@lqz ~]# vim /etc/yum.repos.d/cdrom.repo  
    [cdrom]      
    name=This is local cdrom
    baseurl=file:///mnt
    enabled=1
    gpgcheck=0
    
    []          #仓库名称
    name        3仓库描述信息
    baseurl     #YUM源url地址 ,可以是file:// ftp:// http://
    enabled     #是否使用该YUM源(0代表禁用, 1代表激活)
    gpgcheck    #是否验证软件签名(0代表禁用, 1代表激活)
    
    #5.生成缓存
    [root@lqz ~]# yum makecache
    

    2.很多时候不仅仅是一台机器无法上网,而是很多机器都无法上网,但都有联网下载软件的需求,这个时候难道每台机器都挂在光盘吗? 当然可以,但如果软件出现了更新怎么办?

    仓库构建

    本地光盘提供基础软件包: Base yum缓存提供常用软件包: nginx, zabbix, docker

    1.环境准备

    系统IP角色
    centos7 10.0.0.99 yum仓库服务端
    centos7 10.0.0.98 yum仓库客户端

    2.服务端进行yum仓库的搭建准备工作

    #1.关闭防火墙、与selinux
    [root@yum_server ~]# systemctl stop firewalld
    [root@yum_server ~]# setenforce 0
    
    #2.安装ftp服务,启动并加入开机启动
    [root@yum_server ~]# yum -y install vsftpd 
    [root@yum_server ~]# systemctl start vsftpd 
    [root@yum_server ~]# systemctl enable vsftpd
    
    #3.开启yum缓存功能
    [root@yum_server ~]# vim /etc/yum.conf
    [main] cachedir=/var/cache/yum/$basearch/$releasever 
    keepcache=1
    [root@yum_server ~]# yum clean all
    
    #4.提供基础base软件包
    [root@yum_server ~]# mkdir /var/ftp/centos7
    [root@yum_server ~]# mount /dev/cdrom /mnt
    [root@yum_server ~]# cp -rp  /mnt/Packages/.rpm /var/ftp/centos7/
    
    #5.提供第三方源
    [root@yum_server ~]# mkdir /var/ftp/ops
    [root@yum_server ~]# yum -y install nginx docker
    
    #6.复制已缓存的 Nginx docker 及依赖包 到自定义 YUM 仓库目录中
    [root@yum_server_69_112 ~]# find /var/cache/yum/x86_64/7/ 
    -iname ".rpm" -exec cp -rf {} /var/ftp/ops ;
    
    #7.安装createrepo并创建 reopdata仓库
    [root@yum_server_ ~]# yum -y install createrepo
    [root@yum_server_ ~]# createrepo /var/ftp/ops
    
    #PS: 如果此仓库每次新增软件则需要重新生成一次
    

    3.客户端配置yum源指向服务端

    #1.客户端配置并使用 base 基础源
    [root@yum_client ~]# gzip /etc/yum.repos.d/
    [root@yum_client ~]# vim /etc/yum.repos.d/centos7.repo 
    [centos7]
    name=centos7_base
    baseurl=ftp://10.0.0.99/centos7
    gpgcheck=0
    
    #2.客户端配置并使用 ops 源
    [root@yum_client ~]# vim /etc/yum.repos.d/ops.repo 
    [ops]
    name=local ftpserver
    baseurl=ftp://10.0.0.99/ops
    gpgcheck=0
    

    6.源码包管理实践

    1.源码包是什么

    源码包指的是开发编写好的程序源代码,但并没有将其编译为一个能正常使用的工具。

    2.为什么要学习源码包

    1、部分软件官网仅提供源码包,需要自行编译并安装。 2、部分软件在新版本有一些特性还没来得及制作成rpm包时,可以自行编译软件使用其新特性。

    3.源码包的优缺点

    1.可以自行修改源代码 2.可以定制需要的相关功能 3.新版软件优先更新源码 4.缺点是: 1) 相对yum安装软件会复杂很多。2) 标准化实施困难,自动化就无法落地。

    4.源码包如何获取

    常见的软件包都可以在官网获取源码包,比如 apache、nginx、mysql等等

    5将源码包编译为二进制可执行文件步骤如下,简称安装三步曲

    img PS: 此方法不是百分百通用于所有源码包,建议拿到源码包解压后,进入到目录找相关的README帮助文档

    6.源码编译示例

    下面通过编译Nginx来深入了解下源码包编译的过程。

    #1.基础环境准备
    [root@node1 ~]# yum install -y gcc make wget

    #2.下载源码包
    [root@node1 ~]# wget http://nginx.org/download/nginx-1.15.12.tar.gz

    #3.解压源码包, 并进入相应目录
    [root@node1 ~]# tar xf nginx-1.15.12.tar.gz
    [root@node1 ~]# cd nginx-1.15.12

    #4.配置相关的选项,并生成Makefile
    [root@node1 nginx-1.15.12]# ./configure --help
    [root@node1 nginx-1.15.12]# ./configure --prefix=/usr/local/nginx
    [root@node1 nginx-1.15.12]# echo $? # 检查上一个命令是否执行成功

    #5.将Makefile文件编译可执行二进制程序,此时,/usr/local/nginx可执行文件还不在,需要执行make install 才能copy过去
    [root@node1 nginx-1.15.12]# make

    #6.将二进制文件拷贝至对应的目录中
    [root@node1 nginx-1.15.12]# make install

    #7 建立软连接(以后方便升级)
    [root@node1 nginx-1.15.12]# ln -s nginx-1.18.0 nginx

    #8 目录介绍
    conf:配置文件
    html:网站文件存放
    logs:日志
    sbin:可执行文件

    # 9 命令
    nginx # 启动
    nginx -s reload # 重新加载
    nginx -s stop # 重启
    nginx -s stop # 停止

  • 相关阅读:
    Sublime Text安装Package Control
    HTTP,FTP,TCP,UDP及SOCKET
    Oracle数据库的导入导出
    C#.NET中数组、ArrayList和List三者的区别
    一道有趣的逻辑面试题(数独)
    C#常用命名空间
    C# Dictionary已知value获取对应的key
    C#记录程序耗时的方法
    有return语句情况下,try-catch-finally的执行顺序
    C# 拷贝数组的几种方法
  • 原文地址:https://www.cnblogs.com/liqiangwei/p/14383041.html
Copyright © 2011-2022 走看看