Linux07--usr目录及软件安装


一 重要目录之/usr

# /usr  安装第三方软件的目录  

1./usr/local  主要用来安装软件的目录  
2./usr/bin和/usr/local/bin 主要用来存放第三方二进制命令文件的目录  

二 linux安装文件的三种方式

image-20220331110156287

1 rpm安装

# rpm安装
   前提:需要有软件的rpm安装包
       华为centos-7安装包的镜像源:https://repo.huaweicloud.com/centos/7/os/x86_64/Packages
    	下载zsh的连接:https://repo.huaweicloud.com/centos/7/os/x86_64/Packages/zsh-5.0.2-34.el7_8.2.x86_64.rpm
	
   缺点:rpm无法解决安装包依赖的问题  
	
# 安装软件
rpm -ivh [软件包名称]

# eg: rpm -ivh zsh-5.0.2-34.el7_8.2.x86_64.rpm  
    warning: zsh-5.0.2-34.el7_8.2.x86_64.rpm: Header...
    Preparing...                  ################################# [100%] 
    Updating / installing...  
       1:zsh-5.0.2-34.el7_8.2     ################################# [100%]

    # 软件包名称解读
        zsh   : 软件包的名称
        5.0.2 :	软件包的版本号
        34	  :	软件包的构建次数
        el7   : 软件包适用的平台
        8.2.x86_64 : 适用于64位操作系统
        .rpm  : 扩展名
		
# 更新软件 
rpm -Uvh  [软件包名称]

# 卸载软件 
rpm -e    [软件包名称]
    # eg: rpm -e zsh  
        
# 其他参数    
rpm -q  [软件包名称]  # 查看该软件包是否安装

rpm -qa [软件包名称]  # 打印当前系统中所有的已经安装了的安装包
    跟软件包,则判断软件包是否安装
    不跟软件包,则打印当前系统中所有的已经安装的软件包

rpm -ql [软件包名称]  # 打印指定安装包中包含的所有文件
rpm -qc [软件包名称]  # 打印指定安装包的配置文件  

    
# 其他参数的eg:
rpm -q zsh
    package zsh is not installed

rpm -q gpm-libs-1.20.7-6.el7.x86_64
    gpm-libs-1.20.7-6.el7.x86_64

rpm -ql python
    /usr/bin/pydoc
    /usr/bin/python
    /usr/bin/python2
    /usr/bin/python2.7
    /usr/libexec/platform-python
    /usr/share/doc/python-2.7.5
    /usr/share/doc/python-2.7.5/LICENSE
    /usr/share/doc/python-2.7.5/README
    /usr/share/man/man1/python.1.gz
    /usr/share/man/man1/python2.1.gz
    /usr/share/man/man1/python2.7.1.gz 

2 yum安装

# yum安装  
    自动去yum源中,下载安装包,再进行rpm安装
    优点:可以自动解决安装包的依赖(也就是说安装包安装的时候,自动将依赖包提前安装)  
    缺点:无法自定义安装  

# 安装软件  
yum install [安装包的名称]  
    -y : 不提示,默认确认  
# eg: yum install nginx  

# 卸载软件  
yum remove [软件包名称]
    -y : 不提示删除,默认确认  

# 更新软件  
yum update [软件包]
    1.跟软件包则更新软件包  
    2.不跟软件包则更新整个操作系统的软件包
        
# 搜索软件  
yum search nginx   # 在仓库中搜索相关的软件包 
            
---------------------------------------------
# yum安装软件的执行逻辑  
第一步:执行yum install nginx 安装命令  
第二步:yum去到/etc/yum.repos.d/ 这个目录中  # repos :repository的缩写  n. 仓库、存储库
第三步:根据目录中所有以.repo结尾的文件里的baseurl连接,去寻找对应的软件包 
第四步:下载软件 到 /var/cache/yum/x86_64/7/[yum仓库名称] 目录
第五步:安装所有的软件(rpm -ivh)  
第六步:检测是否安装完毕并返回 
	
    
# yum的配置文件: cat /etc/yum.conf  
    cachedir=/var/cache/yum/$basearch/$releasever  # 指定yum下载的软件包存放的路径
    	# $basearch ==x86_64, $releasever ==7  是yum的软件变量,不是系统变量
    keepcache=0   # 是否保存下载的软件包(0:不保存 1:保存)


# yum源文件: 在/etc/yum.repos.d/ 目录下,以.repo结尾的文件
    [源的名称]  # 名称不能中文
    name       #  源的简介(必须)  
    baseurl    #  源的地址(必须)  
    gpgcheck   #  是否验证源的安全性(1:验证, 0:不验证)

2.1 yum添加源--epel源

# 案例:yum添加epel源

1.解决yum安装ngin安装包 显示没有的问题:需要添加下载epel源  
2.epel源是CentOS扩展包的仓库  

# 1.切换目录  
cd /etc/yum.repos.d/

# 2.编辑文件  (新增epel.repo文件--epel源仓库)
vim epel.repo  
    [epel]
    name="epel源"
    baseurl=https://repo.huaweicloud.com/epel/7/x86_64/
    gpgcheck=0

# 3.更新源  
yum clean all  
yum makecache  

2.2 搭建yum仓库

# yum仓库目录结构:
    仓库目录:
        -Packages :软件安装包目录
        -repodata :软件依赖的目录


# 准备工作:
    # 1.修改IP
    sed -i 's#.200#.50#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]  
    
    systemctl restart network  

    # 2.关闭selinux  
        /etc/selinux/config  

        1.临时关闭  
            setenforce 0  
        2.永久关闭  
            vi /etc/selinux/config  
            SELINUX=disabled  

    # 3.关闭默认的防火墙
        systemctl disable --now firewalld  

            disable : 禁用  
            enable  : 启用  
            --now   : 立即执行 


# 搭建步骤:

# 1.创建目录,充当仓库  
mkdir /yumrepo 

# 2.在仓库中创建Packages目录,用于存放软件  
cd /yumrepo  
mkdir Packages  
 
# 3.下载软件安装包到Packages目录中  
    # 方式一: 进入到下载目录,再wget下载
    cd /yumrepo/Packages  
    wget https://repo.huaweicloud.com/centos/7/os/x86_64/Packages/zip-3.0-11.el7.x86_64.rpm 
    
    # 方式二: wget -O [下载目录] [下载的文件url]
    wget -O /yumrepo/Packages/zip-3.0-11.el7.x86_64.rpm https://repo.huaweicloud.com/centos/7/os/x86_64/Packages/zip-3.0-11.el7.x86_64.rpm
    
    # 方式三: curl -o [保存目录] [下载的文件url]
    curl -o /yumrepo/Packages/zip-3.0-11.el7.x86_64.rpm https://repo.huaweicloud.com/centos/7/os/x86_64/Packages/zip-3.0-11.el7.x86_64.rpm

# 4.建立依赖关系  
    1.安装建立依赖关系的命令  
    	yum install yum-utils createrepo  
    2.初始化,建立yum源的依赖关系   # createrepo [仓库的路径]
    	createrepo /yumrepo/     # 注:会在仓库目录中创建repodata目录,主要用来存放yum依赖关系的。
    3.检查 
        cd /yumrepo/  
        ll  
        ll repodata/ 

# 5.编写yum源  将私有仓库指定到yum源中  
cd /etc/yum.repos.d/

vim local.repo   
    [local]  
    name=本地yum源  
    baseurl=file:///yumrepo   # 本地的文件,作为url访问,必须以file协议开头
    gpgcheck=0

    # 更新源:
    yum clean all
    yum makecache


# 正常前五步,已经可以本地使用该仓库,但为了能够远程访问使用仓库,需接着配置以下步骤


# 6.安装远程软件,提供远程访问服务
    1.恢复base源和epel源     # 之前为了测试本地源生效,将这两个源,移动到backup目录中了 ( mv *.repo backup/ )
        cd /etc/yum.repos.d/

        mv backup/* .
        ll
            total 12
            drwxr-xr-x  2 root root   6 Sep 22 12:20 backup
            -rw-r--r--. 1 root root 102 Sep 16 11:58 CentOS-Base.repo
            -rw-r--r--  1 root root  85 Sep 22 10:58 epel.repo
            -rw-r--r--  1 root root  61 Sep 22 12:11 local.repo

    2.安装nginx远程web服务软件 
        yum install nginx -y

    3.修改nginx的配置文件,使其能够代理yumrepo仓库的远程服务
        vim /etc/nginx/conf.d/autoindex.conf   # 这是yum安装Nginx的配置文件位置
        或vim /etc/nginx/nginx.conf
        
        /usr/local/nginx/conf/nginx.conf   # 这是编译安装Nginx的配置文件位置

        1.将目录索引的配置参数 添加到 配置文件的 # http{ server{中} }
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;
        2.修改nginx代理的目录  配置文件的 # http{ server{ location{root 值} } }
            root   /yumrepo; 
            
    4.启动nginx服务
        systemctl start nginx
        
    5.测试nginx  浏览器访问本机的公网ip
        http://192.168.15.201/           

# 7.重新修改local yum源
    1.隐藏base源和epel源   # 将/etc/yum.repos.d中的base源和epel源 移动到backup目录中
    	mv CentOS-Base.repo backup/
        mv epel.repo backup/
        
        cd /etc/yum.repos.d
        ll
            total 4
            drwxr-xr-x  2 root root   6 Sep 22 12:20 backup
            -rw-r--r--  1 root root  61 Sep 22 12:11 local.repo

    2.修改local源,使其支持远程访问
    cd /etc/yum.repos.d/
    
    vim local.repo
        [local]
        name=本地yum源
        baseurl=http://192.168.15.201/
        gpgcheck=0

    3.更新源:
    yum clean all
    yum makecache

# 8.测试
yum remove zip
yum install zip

3 二进制编译安装

# 优点:单独定制安装软件  
# 缺点:不能决绝依赖关系

    nginx下载源代码包:https://nginx.org/download/nginx-1.20.1.tar.gz 
    
# 1.下载解压安装包	
下载软件包的压缩文件: # 在软件官网下载
    wget https://nginx.org/download/nginx-1.20.1.tar.gz 
解压文件:
    tar -xf nginx-1.20.1.tar.gz 
	
# 2.检查安装环境
cd nginx-1.20.1 
./configure   # 执行文件夹里的configure文件  configure:n.配置、安装
    --prefix选项是配置安装目录
    安装后可执行文件 默认放在/usr/local/bin
    库文件   默认放在/usr/local/lib
    配置文件  默认放在/usr/local/etc
    其它的资源文件放在/usr/local/share


# 根据提示信息 安装相应的依赖
    yum install pcre pcre-devel zlib zlib-devel make gcc gcc-c++ -y  
 
# 3.编译  
make  
    -j : 多核编译, 但是容易出错 (不推荐)  
    
# 3.安装  
make install  

# 4.测试  
    # 需要禁用防火墙,不然访问不到
        systemctl disable --now firewalld
    # 关闭之前的Nginx服务
        systemctl stop nginx     
    # 启动nginx服务  
        /usr/local/nginx/sbin/nginx

补充

# 1.下载文件 
wget [下载的文件URL]

wget 需要安装:
    yum install wget 
    rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm  

# 2.curl 和 wget 之间的区别    
curl 是用来访问链接的       # 访问下载链接,其实也就是下载文件
    -o : 指定保存文件的路径  
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo  

wget 是用来下载文件的  
    -O :指定下载文件的路径  
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo 
	
	
# 3.解压文件
tar -xf nginx-1.20.1.tar.gz 
	
# 4.nginx实现目录索引 的参数配置
    root /data/server/nginx;   # 指定实际目录绝对路径;   

    autoindex on;              # 开启目录浏览功能;   
    autoindex_exact_size off;  # 关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b
    autoindex_localtime on;    # 开启以服务器本地时区显示文件修改日期!
     
# 5. file://: 本地文件传输协议
    File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样。
	
# 6.查看进程
    ps -ef | grep [进程名]   
    # 关闭进程
    kill PID [进程pid号]