画布1
Linux软件包管理
  安装nginx的三个方式
  实验开始前先清理你的机器环境
    yum remove nginx httpd -y
      会有配置文件残留
    恢复系统快照
  什么是软件包
    windows
      qq.exe
    linux
      qq.rpm
    macos
      qq.dmg
    linux下的rpm软件包，如nginx-1.10.rpm
      是一个将二进制命令（程序源码，经过编译后的一个单个可执行命令产物）+配置文件+数据文件，打包好的一个单个文件，
  linux你会遇见的软件包格式，两种
    区别
      二进制包
        不需要从源代码再编译了，拿来即用，安装简单，但是程序安装路径受限，可定制性很差
      源代码包
        需要编译后使用，安装难度较难，定制化很强
    什么是源码包
      对运维来说，可以不提供该语言的环境在机器上，比如不用装go环境
      解释型语言，必须要求运维在机器上，安装对应的环境才可以运行，比如python，比如php
      编译型语言源码
        go语言
          package mainimport "fmt"func main() { fmt.Println("于超老师带你学Linux")}
            go build hello.go
              hello可执行的二进制文件
                打包压缩，生成一个hello.tar.gz
        c语言
          未编译源码包
            https://tengine.taobao.org/download/tengine-2.3.3.tar.gz
      解释型语言源码
        [root@yuchao-linux01 test_data]# cat hello.py#coding:utf-8print("于超老师带你学Linux")
        bash
      脚本语言程序源码
        [root@yuchao-linux01 test_data]# cat hello.shecho "于超老师带你学Linux"
          bash
          python为辅
    什么是二进制包(已经被编译过软件包)
      已经编译好
        centos平台可以使用的rpm包
          nginx-1.10.rpm
        特殊的，很方便的二进制包，支持二进制包下载的某些软件
          *.tar.gz格式
          下载解压即用
      二进制源码包（了解即可）
        mysql-community-5.7.25-1.el7.src.rpm
        下载后还需要自己再构建rpm
          构建命令
            rpm,rpmbuild
      常见二进制软件包格式
        系统平台
          RedHat/Centos/Fedora/SUSE
            安装包文件后缀格式
              *.rpm
                rpm包相关命令
                  rpm
                  rpbuild
                在线安装rpm包
                  yum命令
          Ubuntu/Debian
            安装包文件后缀格式
              *.deb
                deb包相关命令
                  dpkg命令
                在线安装deb包
                  apt命令
    如上很多复杂的软件包形式，是指
      比如你去下载nginx软件包，会看到很多，很复杂的格式，有如下格式
        你只会去用着三种
        编译好的rpm包
          nginx-1.10.rpm
        nginx源代码包
          nginx-2.3.3.tar.gz
            纯c语言文件
        解压即用的nginx二进制包
          nginx-2.3.3-x86-64.tar.gz
            告诉你可以在64位机器上直接运行的nginx命令
        知道即可的，rpm二进制包，还需要再次构建
          nginx-el7-src.rpm
  RPM包安装管理命令
    创建
      http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm
      如何搜索，下载rpm的包，去哪找
        在线下载rpm包
          有很多软件的官网，以及第三方软件仓库，会提供rpm包的下载功能
          http://rpm.pbone.net/
          www.rpmfind.net
          还有更好用的，最精准，应该去该软件的官网，去下载它的rpm包
            http://nginx.org/packages/
            根据你的机器cpu架构，以及系统版本，找到如下连接
              http://nginx.org/packages/centos/7/x86_64/RPMS/
              http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm
        本地光盘镜像rpm包
          centos7.iso镜像文件，内置了绝大多数软件的rpm包
            1.光盘，插入服务器光驱
            2.在系统中找到光盘信息
              [root@167 opt]# [root@167 opt]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP]sr0 11:0 1 4.2G 0 rom [root@167 opt]# [root@167 opt]#
            3.挂载操作，读取到光盘的内容
              [root@167 opt]# mount /dev/sr0 /mntmount: /dev/sr0 写保护，将以只读方式挂载
            4.查看光盘中的rpm包列表
              [root@167 opt]# ls /mnt/Packages/ # 这个目录下，能找到你需要的软件包的名字，即可去安装它
            5.发现本地光盘是没有nginx的，只能用其他形式装nginx
              利用本地光盘去安装vim
                1.卸载原有的vim
                  yum remove vim -y
                2.拷贝出光盘中的vim，然后去安装他们即可
                  [root@167 ~]# cp /mnt/Packages/vim-enhanced-7.4.160-4.el7.x86_64.rpm /opt/
                  rpm -ivh vim-enhanced-7.4.160-4.el7.x86_64.rpm 即可
            6.最后可以取消光盘挂载
              umount /mnt
        需要运维提前下载好软件需要的rpm包，拷贝到对应服务器上，去安装（需要手动解决依赖关系）
          [root@linux0224 opt]# lltotal 8920-rw-------. 1 root root 159039 Mar 21 11:05 messages-rw-r--r--. 1 root root 6197732 Mar 25 10:57 vim-common-7.4.160-4.el7.x86_64.rpm-rw-r--r--. 1 root root 1087452 Mar 25 10:57 vim-enhanced-7.4.160-4.el7.x86_64.rpm-rw-r--r--. 1 root root 10352 Mar 25 10:57 vim-filesystem-7.4.160-4.el7.x86_64.rpm-rw-r--r--. 1 root root 447032 Mar 25 10:57 vim-minimal-7.4.160-4.el7.x86_64.rpm-rw-r--r--. 1 root root 1220304 Mar 25 10:57 vim-X11-7.4.160-4.el7.x86_64.rpm
    安装rpm
      rpm -ivh rpm包名字
        1.下载
          wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm
        安装
          [root@167 opt]# rpm -ivh nginx-1.10.0-1.el7.ngx.x86_64.rpm
      rpm -ivh rpm包完整的文件名
    查询
      rpm -qa
        [root@167 opt]# rpm -qa nginxnginx-1.10.0-1.el7.ngx.x86_64
      rpm -qi
        [root@167 opt]# rpm -qi nginx
        -q 查询
        -i 显示软件的详细信息
      查询机器上是否安装了某个软件
        [root@linux0224 opt]# rpm -qa | grep vimvim-filesystem-7.4.160-4.el7.x86_64vim-enhanced-7.4.160-4.el7.x86_64vim-common-7.4.160-4.el7.x86_64
    升级
      rpm -Uvh -U升级
        1.要获取软件的新版本
        2. rpm -Uvh 升级软件
          [root@167 opt]# rpm -Uvh firefox-52.7.3-1.el7_5.x86_64.rpm 警告：firefox-52.7.3-1.el7_5.x86_64.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID 192a7d7d: NOKEY准备中... ################################# [100%]正在升级/安装... 1:firefox-52.7.3-1.el7_5 ################################# [ 50%]正在清理/删除... 2:firefox-52.7.0-1.el7.centos ################################# [100%]
    删除
      [root@167 opt]# rpm -e nginx
        卸载nginx
      得先确认该软件包的名字，通过正确的名字，才可以删除
        [root@linux0224 opt]# rpm -qa | grep vimvim-filesystem-7.4.160-4.el7.x86_64vim-enhanced-7.4.160-4.el7.x86_64vim-common-7.4.160-4.el7.x86_64
        [root@linux0224 opt]# rpm -e vim-enhanced
    手动处理依赖关系
      http://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/7.2/x86_64/updates/security/firefox-68.6.0-1.el7_7.x86_64.rpm
    总结
      rpm安装软件，需要解决他们之间的依赖关系
    rpm查询命令
      rpm -qf 文件名
        根据文件名查询属于哪个软件包
          [root@167 opt]# rpm -qf /etc/nginx/conf.d/default.confnginx-1.10.0-1.el7.ngx.x86_64
      rpm -ql 软件包名
        列出该软件包都生成了什么文件
          rpm -ql nginx
    rpm命令总结
      安装
        rpm -ivh 软件包
      卸载
        rpm -e 软件包名字
      升级
        rpm -Uvh 软件包
    关于解决rpm依赖冲突的实践
      因为你以前是yum安装的vim，这个vim是去阿里云rpm仓库拿来的版本，比你本地光盘中的更新
        以及阿里云提供的vim版本，以及它的依赖，版本都比你本地的光盘的新
        yum remove vim -y
        但是你还没完全卸载完，它的一些依赖，版本可能还是新的，需要再次卸载
      rpm的依赖冲突，一定要是，一层一层去解决，不能跳级
        也就是依赖说了少什么软件，你就得先解决什么软件
  源码包安装管理命令
    创建
      1.源代码安装nginx工具，编译安装淘宝nginx
        [root@167 opt]# wget https://tengine.taobao.org/download/tengine-2.3.3.tar.gz
      linux编译环境准备
        yum install -y gcc make gcc-c++ ncurses-devel
          用于编译安装c语言代码
        yum install golang -y
          用于编译golang代码的环境
      2.解压缩，进行编译安装
        [root@167 opt]# tar -zxvf tengine-2.3.3.tar.gz
          [root@167 opt]# cd tengine-2.3.3/[root@167 tengine-2.3.3]# [root@167 tengine-2.3.3]# [root@167 tengine-2.3.3]# [root@167 tengine-2.3.3]# [root@167 tengine-2.3.3]# lsAUTHORS.te auto CHANGES CHANGES.cn CHANGES.te conf configure contrib docs html LICENSE man modules packages README.markdown src tests THANKS.te[root@167 tengine-2.3.3]#
        开始编译，且安装，注意先进行，编译参数的配置
          给nginx添加支持https证书的功能，需要如下操作，nginx默认不支持https证书功能
          只能在编译的时候，添加这个功能
            1.需要linux系统支持https的模块，就是安装openssl模块
              yum -y install openssl openssl-devel pcre pcre-devel zlib zlib-devel
              执行编译参数，让nginx的安装，可以扩展其他功能
                ./configure --prefix=/opt/my_nginx0224/ --with-http_ssl_module
          开始编译安装执行如下命令完事
            make &amp;&amp; make install
              当你make命令执行成功后，自动执行 make install命令
              只有 make install 成功后，才会生成你指定的nginx路径 /opt/my_nginx0224文件夹
          检查你安装的nginx是否生成
            编译安装的nginx全部在这个目录下了
              [root@167 opt]# cd my_nginx0224/[root@167 my_nginx0224]# [root@167 my_nginx0224]# ll总用量 4drwxr-xr-x. 2 root root 4096 3月 25 12:20 confdrwxr-xr-x. 2 root root 40 3月 25 12:20 htmldrwxr-xr-x. 2 root root 6 3月 25 12:20 logsdrwxr-xr-x. 2 root root 19 3月 25 12:20 sbin
          可以用该目录下的二进制nginx命令，启动淘宝nginx了
            [root@167 my_nginx0224]# /opt/my_nginx0224/sbin/nginx
          启动命令应该做好优化
            添加到PATH变量中
              永久修改
                vim /etc/profile
                PATH=/opt/my_nginx0224/sbin/:$PATH
          可以用浏览器去发出http请求，访问你的nginx网址
          还有一个命令，验证，该nginx的信息
            [root@167 my_nginx0224]# curl -I 192.168.0.167HTTP/1.1 200 OKServer: Tengine/2.3.3Date: Fri, 25 Mar 2022 04:25:04 GMTContent-Type: text/htmlContent-Length: 555Last-Modified: Fri, 25 Mar 2022 04:20:47 GMTConnection: keep-aliveETag: "623d431f-22b"Accept-Ranges: bytes
    查询
      [root@167 my_nginx0224]# ls /opt/my_nginx0224/client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
    升级
      删除旧的
      重新编译新的
    删除
      编译的软件，删除动作就是，直接干掉这个目录即可
        [root@167 my_nginx0224]# rm -rf /opt/my_nginx0224/
      清除PATH变量信息
  解压即用软件包实践
    已经编译的一个二进制命令，你可以拿来即用了
    java环境部署实战
      rpm包去装，需要解决一堆依赖关系，弃用
      源代码编译安装，也不太好使
    给机器部署java环境，选择下载java的二进制包，解压即用
      1.下载二进制java压缩包
      2.解压缩
      3.配置环境变量
        1.配置软连接
          ln -s jdk1.8.0_221 jdk
        2.配置环境变量命令是
          export JAVA_HOME=/opt/jdkexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/opt/jdk/bin/
        3.重新登录，让环境变量生效
      4.即可使用
        验证java是否可用
          [root@167 ~]# java -versionjava version "1.8.0_221"Java(TM) SE Runtime Environment (build 1.8.0_221-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
      5.准备java代码，验证该环境是否可用
        [root@167 opt]# cat HelloWorld.java public class HelloWorld { public static void main(String []args) { System.out.println("超哥带你学linux"); }}
        运行该代码，查看是否正确
          java要求先编译，再运行
            javac HelloWorld.java
          运行
            [root@167 opt]# java HelloWorld超哥带你学linux
    由于java比较特殊，必须配置linux的环境变量，才可使用
    如果是golang 只需要直接解压缩，把命令加入到PATH变量中即可快捷使用
  yum自动化软件管理命令
    创建
      使用yum工具，配置yum源即可
        yum源的配置官网https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11oJtGAH
        配置2个源
          能够下载centos自带的绝大多数软件
            wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
          能够下载绝大多数第三方软件的仓库
            wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
      备份默认的yum仓库配置文件
        1.进入yum源默认的配置文件目录，备份所有的*.repo文件即可
          [root@167 yum.repos.d]# [root@167 yum.repos.d]# pwd/etc/yum.repos.d[root@167 yum.repos.d]# mkdir bak_repo[root@167 yum.repos.d]# [root@167 yum.repos.d]# [root@167 yum.repos.d]# ll总用量 36drwxr-xr-x. 2 root root 6 3月 25 16:14 bak_repo-rw-r--r--. 1 root root 2523 12月 26 2020 CentOS-Base.repo-rw-r--r--. 1 root root 1309 4月 29 2018 CentOS-CR.repo-rw-r--r--. 1 root root 649 4月 29 2018 CentOS-Debuginfo.repo-rw-r--r--. 1 root root 314 4月 29 2018 CentOS-fasttrack.repo-rw-r--r--. 1 root root 630 4月 29 2018 CentOS-Media.repo-rw-r--r--. 1 root root 1331 4月 29 2018 CentOS-Sources.repo-rw-r--r--. 1 root root 4768 4月 29 2018 CentOS-Vault.repo-rw-r--r--. 1 root root 664 12月 26 2020 epel.repo[root@167 yum.repos.d]# [root@167 yum.repos.d]# mv *.repo bak_repo/[root@167 yum.repos.d]# [root@167 yum.repos.d]# ll总用量 0drwxr-xr-x. 2 root root 204 3月 25 16:14 bak_repo[root@167 yum.repos.d]# [root@167 yum.repos.d]#
        2.下载新的yum仓库文件即可
          wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
          wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
          看到如下文件目录结构即可
            [root@167 yum.repos.d]# ll总用量 8drwxr-xr-x. 2 root root 204 3月 25 16:14 bak_repo-rw-r--r--. 1 root root 2523 12月 26 2020 CentOS-Base.repo-rw-r--r--. 1 root root 664 12月 26 2020 epel.repo
    yum命令常见用法
      先更新yum缓存
        [root@167 yum.repos.d]# yum clean all
        [root@167 yum.repos.d]# yum makecache
      安装你所需要的软件了
      也可以用yum自动化的管理，机器上的rpm安装的软件
      常见命令如下
        yum install xxxxxx
        yum remove xxxx
      通过yum安装的程序，即可通过systemctl去管理启停操作
        systemctl start nginx
  安装软件的注意事项
    安装方式有三种
      rpm手动安装
        手动解决所有依赖，难用
          rpm -ql nginx
          rpm -e nginx
          手动rm删除软件的日志，配置文件目录即可
      yum自动安装
        yum就是去管理rpm包的
        自动解决依赖关系
      源码编译安装
        软件都装到了一个目录下，管理该目录即可，无法用yum去管理
      注意他们的安装路径，以及管理脚本，是否会有冲突
    因此，你要注意，你机器上启动的nginx程序，到底是来自于哪种安装方式，以及启动方式
      要注意是编译安装的
      还是rpm -ivh安装的
      还是yum安装
  活学活用
    学会rpm、源码编译、yum三种安装方式后，让你安装其他软件的话，自己该如何考虑解决
    运维，要提供服务器运行环境，开发环境
      比如一个网站程序，涉及安装的程序
        数据库软件
          mysql
        开发语言环境
          java
          golang
          python
        web服务器
          nginx
          apache(httpd)
        缓存数据库
          redis
    ...等等太多软件都要安装，那具体要用什么方式安装，那就需要你对每一种安装方式都要理解，然后可以灵活的来根据具体的业务环境，去决定
      比如断网环境下
        yum没法去外网下载软件了
        yum精讲
          还是很方便的帮你去管理rpm包
          yum命令能够自动判断rpm包之间的依赖关系，自动化安装
        准备好该软件所需的所有rpm
          上传到linux机器，去安装这些rpm包
      比如限制了软件的版本
        yum软件仓库的概念，版本比较限制大
        选择源代码编译，自己去官网，随便找符合要求的版本，进行定制化安装
      安装大型，复杂的软件，以及有很多自定制需求的软件，可以选择编译安装，因为可定制化
      安装一些基础环境，比如linux底层的一些软件，yum全部自动化完事
        基本上，小型工具，全是yum一把梭搞定