rpm、yum、编译等【安装及管理程序】

454 阅读9分钟

1、rpm

什么是rpm?

rpm : red hat packages manager 红帽包管理系统。

rpm包 就是软件的安装包,扩展名为.rpm , rpm只适用于红帽系的内核使用。( 类似于windows的.exe)

rpm的位置: /var/lib/rpm

rpm的特点

  • 建立统一的数据库文件 可以记录操作信息
  • 详细记录软件包安装、卸载等变化信息
  • 自动分析软件包依赖关系,但缺点是:不能解决依赖关系。

自动安装软件的帮助手册:

/usr/share/doc

rpm查询命令

1. q 查询

命令功能描述
rpm -q查询已安装软件
rpm -q 软件名查询某个软件是否已安装软件
rpm -qa 软件名查询所有已安装软件
rpm -qc 软件名查询某个软件的配置文件
rpm -ql 软件名某软件的所有文件列表
rpm -qi 软件名软件的 基本信息

2. i 安装

rpm 安装软件命令: rpm -ivh 软件名

 i    install    安装
 v    显示过程
 h     ###### 进度条

安装httpd软件:

 安装软件 首先要有安装包        # 注意: 软件包一定要从官方网站下载。
 
 ls | grep httpd
 rpm -ivh httpd-tools-2.4.6.67.el7.centOS.X86_64.rpm   #  安装软件时,会存在很多依赖关系,比如想安装a,可能就会需要先安装b,
 rpm -ivh httpd-2.4.6.67.el7.centOS.X86_64.rpm   #  安装b的话,可能又需要先安装c。 
 rpm -q httpd   # 查询是否已经安装了httpd软件。

image.png

3. -e 卸载

语法:rpm -e 软件名

卸载安装包,只会卸载本包,不卸载依赖关系。

 rpm查询的基操
 cd /var/lib/rpm                          #切换rpm目录
 [root@localhost rpm]# rpm -qa            #查询所有已安装软件
 [root@localhost rpm]# rpm -qa | wc -l    #统计所有已安装软件的个数
 软件已安装:
 [root@localhost rpm]# rpm -q tree        #查询是否安装tree软件  
 tree-1.6.0-10.el7.x86_64                 #已安装,并且会显示tree软件的相关信息。
 软件未安装:
 [root@localhost rpm]# rpm -q httpd       #查询是否安装httpd软件
 未安装软件包 httpd                       # 提示未安装
 [root@localhost rpm]# rpm -qa | grep tree    #用过滤命令,查询所有安装的软件中是否有tree
 [root@localhost rpm]# rpm -qi tree           #查看tree软件的详细基本信息
 rpm安装基操
 安装软件,首先要有安装包,光驱中有大量的安装包!
 [root@localhost ~]# ll /dev/sr0            #首先,找到光驱设备的位置
 [root@localhost ~]# mount /dev/sr0 /mnt    #用挂载的方式将光驱里的软件,复制到/mnt下面
 [root@localhost ~]# cd /mnt/Packages/      #里面有大量的安装包
 安装httpd软件:
 [root@localhost Packages]# ls | grep httpd     #安装包比较多,可以先进行过滤,找到httpd
 rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm  #安装httpd软件安装包的主包。注意,安装软件时,名字一定要写全

2、yum

2.1 yum简介

yum是一个基于rpm包构建的软件更新机制,\color{red}{基于rpm包构建的软件更新机制,}能够自动解决软件包之间的依赖关系,解决了日常工作中的大量查找安装依赖包的时间。

yum是rpm的升级版,yum是为了解决依赖关系而存在的。yum底层还是用的rpm代码,yum是需要依靠网络,如果rpm出问题,yum也用不了。

2.2 yum实现过程

yum安装软件,首先要有安装包。

获取安装包的方式:

1.光驱里自带 挂载提供软件包

2.网络下载 到本地

3.直接通过网络

通过 客户端 去找 服务端

1 客户端

客户端配置文件的两个要求:

  1. 必须在 /etc/yum.repos.d/ 目录下
  2. 配置文件必须以 * .repo 结尾

客户端配置文件的内容,分为4步:

  1. [base] #仓库的描述(方括号里的内容可以随便写英文)
  2. name= ali ali是仓库的名字,不重复即可,最好也是用英文字母。
  3. baseurl=http:// #指明服务器的位置,去服务器端下载软件包(位置不是随便写的,必须要能打开)。baseurl和mirrorlist用法一样,二者任选其一即可。 http是远端服务器,file是本机。file:/// 也就是本地下载,第三个/是根。
  4. gpgcheck=1 #开启包的验证 ,如果是0 ,代表关闭包的验证。像阿里、华为、清华大学等官方权威的网站,可以不用开始验证。并且如果用1 开启验证 的话,验证会比较麻烦。

enabled=1 #是否开启仓库 ,1是开启、0是关闭,默认是1开启 。enabled是默认选项。

小科普: 因为红帽公司发布的软件是免费的,会被某些恶意黑客下载之后,在里面加入病毒,然后再发布到网上。所以下载软件一定要从官方渠道!!!并且红帽公司为了解决该问题,利用算法形成了一种密钥,将密钥和软件包关联起来。如果下载的软件的密钥,与红帽公司发布软件的密钥不一致,即软件被人篡改。

2 服务端

成为yum服务端要具备的条件:

  • 安装包

  • 元信息(数据库)

    • 安装包的路径/位置
    • 安装包的依赖关系

服务端的配置文件: /etc/yum.conf

3 如何实现安装服务

image.png

2.3 单机yum仓库

什么是单机yum仓库?

单机yum 仓库就是指,自己既是服务端,又是客户端。

因为在实际生产环境中,部分公司会因为严格的保密措施,不允许连接外网。如果没有外网的话,从网络源中下载软件将无法实现!所以单机yum仓库应运而生,因为单机yum仓库不需要依靠网络,就可以实现软件下载。

单机yum仓库过程:

先写配置文件:
     mount /dev/sr0 /mnt     #服务端  挂载光驱数据到mnt文件夹
     cd /etc/yum.repos.d/    # 规定的仓库放置的路径, 切换目录,写配置文件
     mkdir bak    #建立子文件夹
     mv *.repo bak    #移走网络源,意思是把所有以.repo结尾的文件   移到bak文件夹内。
     vim local.repo   #建立本地配置文件 ,就是按照配置文件的四个步骤:
         [local]
         name=local
         baseurl=file:///
         gpgcheck=0   #vim中操作完以上四步,然后保存并退出。      
     yum clean all  #清除缓存
     yum makecache  #下载元信息
     yum install tree -y  #安装tree软件    # -y就是yes 确定
     yum remove tree -y  #卸载tree软件

单机yum仓库实验做好后,可以接着操作

 rm -rf local.repo   #把yum中新建的删掉
 mv bak/* .    # 把bak中的文件删掉,这样就又从本地源回到了网络源

2.4 搭建网络源仓库

平时做实验可以用本地源,但是正常工作中如果有网络源,还是优先使用网络源。 因为本地源与网络源相比:

  • 本地源数量少,只有三千多个;网络源有两万多个
  • 本地源更新慢,版本较老
  • 本地源只适合在没有网络情况下 应急使用。

如果配置网络源仓库的话,客户端配置文件的四个步骤中,只需要修改第三步baseurl

网络源链接中的地址,可以填写多个。但是链接的缩进 一定要对齐!

image.png

2.5 yum命令:

命令功能描述
yum list显示所有可用包
yum provides [关键字]不知道完整名称,根据关键字去找
yum provides */mime.types不知道文件对应的完整路径,用通配符
yum install 软件名安装软件
yum remove 软件名卸载软件
yum history可以看到之前的操作命令

// yum卸载与rpm一样,只卸载自己的软件,不卸载依赖关系。

yum的优点:

  • 自动解决依赖关系
  • 简单

yum的缺点:

  • 软件功能很多,但是软件的功能不全
  • 更新速度慢,版本过旧

3、编译

3.1 什么是编译?

编译就是将人类使用的高级语言,如java python shell 等,翻译成二进制码(计算机语言)。

linux中安装软件的步骤

  • 首先要写代码脚本
  • 将代码翻译成二进制码(机器语言)
  • 安装进入系统
  • 使用运行

// 与linux不同,windows中安装软件 只需要后两步。因为windows中 开发者在发布前,已经把前两步做好了。

3.2 编译的特点

1、编译的优点:

  • 功能自定义
  • 可以安装最新的版本

2、编译的缺点:

  • 复杂

3.3 编译环境

编译安装前,需要先安装编译软件,比如gcc 、gcc-c++ 、make等编译软件。这些软件安装过程中,也会存在依赖关系。

可以通过官方文档(英文)或者百度,查询软件之间的依赖关系,准备好 编译环境。没准备的好的话 安装软件时就会报错。

3.4 安装编译软件

共分为三步:

第一步:

  • ./configure # 脚本文件,源码包中自带

    • 检测安装环境 和 依赖软件,如果没装好会报错 提示
    • 可以选择安装软件的哪些功能 生成一个文件 make.file ,按照这个文件的配置进行编译安装
    • 指定安装路径 - -prefix= 路径 路径可以不存在,会自动建立路径,不需要手动 。 路径一般指定在 /apps/nginx ;如果没有指定,默认在 /usr/local/nginx

第二步:

make 将源代码编译成二进制可以执行的文件 # 后面加 -j2,2个核心编译,(前提是要确实有两核cpu) 并且编译必须要在源码包下。

第三步:

make install #将软件安装到 系统指定的路径

小拓展:

with添加 :代表需要自行选择

without减去:代表默认已有的,想要去除某些功能就用without

3.5 编译安装nginx实验:

 mkdir /data    #新建data文件夹
 cd /data

 wget http://nginx.org/download/nginx-1.18.0.tar.gz    #下载源码包
 tar xf nginx-1.18.0.tar.gz                            #解压
 cd nginx-1.18.0/
 yum -y install make gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel    #安装依赖环境

 ./configure --prefix=/apps/nginx    #检测环境,指定安装目录
 make -j2                            #编译   
 make install                        #将软件复制到前面规定的路径

 ln -s /apps/nginx/sbin/nginx /usr/local/sbin     #建立软链接,下次输入nginx命令时,可以自动补全
 nginx                       #运行nginx

 systemctl stop firewalld    #关闭防火墙
 setenforce 0

 curl 本机ip地址              #curl就是文字版的浏览器    查询本机ip地址的命令:hostname -I  或者也可以再浏览器中输入ip地址,同样可以查看nginx是否安装完成。
 killall nginx               #关闭nginx    注意:只是关闭,并不是卸载。