8、软件下载和管理
不同系统的软件包
windows的软件包是exe
安卓的软件apk
Ubuntu的软件是deb
RHEL和CentOS的软件使用的是rpm包和源码包
rpm包
rpm包介绍
-
rpm由Red Hat公司提出,并被众多Linux发行版本所采用
-
也称为二进制包,无需编译,可以直接使用
-
缺点是无法更改配置
rpm包名称的含义
以:mysql-community-commo-5.7.12-1.el7.x86_64.rpm 为例
- mysql-community-commo:是这个软件的名称
- 5.7.12:该软件的版本号
- 1.el7:修订次数和发布版本
- x86_64:系统平台
- rpm:后缀,表示这是一个rpm的文件
如何得到rpm包
-
国内的开源镜像站
阿里巴巴:https://developer.aliyun.com/mirror/
腾讯:https://mirrors.tencent.com/
-
官方网站
-
红帽的网站
access.redhat.com
-
rpm包的搜索网站
-
安装介质中系统自带了非常多的rpm包
yum管理工具
yum简介
Yum(yellow dog updater,modified)是一个Fedora、RedHat、CentOS中的Shell前端软件版管理器
yum技术通用于RHEL、CentOS、Fedora、OpenSUSE等主流系统,可以让系统管理人员交互式地自动化更新和管理软件包,实现从指定服务器自动下载、更新、删除软件包的工作。 yum软件仓库及命令能够自动处理软件依赖关系,一次性安装所需的全部软件,无须烦琐的操作。
Yum的安装源
-
网络源
国内镜像网站或者官方网站
-
本地源
yum与dnf
- yum性能比较低,占用内存高,dnf轻量,内存占比低
- yum在同一系统同一时刻只能有一个进程
- dnf在同一个系统可以有多个进程
- yum只支持python开发api,dnf适合所有语音
从rhel8开始使用,yum被正式抛弃,目前使用的yum都是做的dnf的软连接;但是yum依然可以用,不管红帽8、9乃至未来都可以用,但是yum的所有工作都是dnf完成的,yum已名存实亡,可以理解为yum是dnf的别名
yum的配置目录
目录:/etc/yum.repos.d/
查看该目录
[root@localhost ~]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
可以看到里面都是以 .repo 结尾的文件,里面存放的就是下载rpm包的地址,也是官方提供的yum工具库
比如打开第一个文件:CentOS-Base.repo,如下
- 在中括号的内容是库的名字
- name:对库的描述
- baseurl和mirrorlist:下载源。这是官方提供的地址,所以是国外的
- gpgcheck:是否校验文件
配置yum源
-
在/etc/yum.repos.d/ 路径下创建以 .repo 结尾的文件。并使用vim进入该文件
-
#库名都可以 [库的名字] #库的说明也都无所谓 name=库的说明 #下载rpm包的地址,可以是国内镜像网站,可以是官方网站,也可以是安装光盘里面的 baseurl=下载地址 #1是开启文件校验,0是不开启 gpgcheck=是否对文件校验 #1是启动该库,0是不启用该库 enabled=开关
配置yum库的本地源
因为这是官方提供的yum库,所以下载地址都在国外,我们需要编写我们自己的本地yum配置文件
-
先删除官方的yum库
// 将官方yum库打包 [root@localhost ~]# tar -cf yum.repos.tar /etc/yum.repos.d/* // 移动到指定位置 [root@localhost ~]# mv yum.repos.tar /root/tardir // 最后在删除yum官方库 [root@localhost ~]# rm -rf /etc/yum.repos.d/*
进行备份是为了防止以后需要用到
-
在/etc/yum.repos.d/ 路径下创建以 .repo 结尾的文件:dvd.repo
[root@localhost ~]# touch /etc/yum.repos.d/dvd.repo
-
使用vim打开刚刚创建的文件:dvd.repo,写如下配置代码
[root@localhost yum.repos.d]# vim dvd.repo [root@localhost yum.repos.d]# cat dvd.repo #库的名字 [dvd] #对库的描述 name=dvd #file://表示在本地路径下找,/mnt/cdrom表示在该路径下找rpm包 baseurl=file:///mnt/cdrom #gpgcheck=0表示下载rpm包后不进行校验 gpgcheck=0
-
刚刚在配置文件中告诉系统,你去本地目录:/mnt/cdrom 中找rpm包,所以需要创建该目录
[root@localhost yum.repos.d]# mkdir /mnt/cdrom
-
将光盘挂载到 /mnt/cdrom 上
[root@localhost yum.repos.d]# mount /dev/cdrom /mnt/cdrom mount: /dev/sr0 写保护,将以只读方式挂载
/dev/cdrom 里面是光盘的数据,也就是安装系统时的东西
注意:在挂载光盘之前,先确定光盘连接好了,如下
-
此时rpm包就放在路径:/mnt/cdrom/Packages/ 下面,使用mk查看有多少rpm包
[root@localhost yum.repos.d]# ls /mnt/cdrom/Packages/ | wc -l 10073
有一万多个rpm包可以安装,这是发行系统时提供的常用rpm包,基本够用
-
由于系统重启后,光盘的挂载信息会掉,所以每次重启系统都需要运行一次挂载的命令。所以把挂载的命令写到文件:/root/.bashrc 中
[root@localhost yum.repos.d]# vim /root/.bashrc [root@localhost yum.repos.d]# cat /root/.bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi #挂载光盘 mount /dev/cdrom /mnt/cdrom
只需要添加最后一行代码:mount /dev/cdrom /mnt/cdrom 即可
-
最后,来安装一个软件:httpd来试一下看是否能正常运行
[root@localhost ~]# yum install -y httpd
效果如下
-
测试httpd能否正常使用
-
启动httpd软件
[root@localhost ~]# systemctl start httpd
-
关闭防火墙
// 关闭防火墙 [root@localhost ~]# systemctl stop firewalld // 禁止防火墙开机自启 [root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
-
在虚拟机的网站里面输入网址:172.0.0.1,看到如下界面httpd就是可以正常使用的
-
配置yum库的网络源
以阿里巴巴开源镜像站为例
网址:https://developer.aliyun.com/mirror/
-
备份yum库中的文件
// 将官方yum库打包 [root@localhost ~]# tar -cf yum.repos.tar /etc/yum.repos.d/* // 移动到指定位置 [root@localhost ~]# mv yum.repos.tar /root/tardir // 最后在删除yum官方库 [root@localhost ~]# rm -rf /etc/yum.repos.d/*
-
进入网站后打开CentOS。(我当前的环境是CentOS7)
-
根据提示,在终端运行下面两个命令之一
-
效果如下
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo --2024-05-03 20:21:06-- https://mirrors.aliyun.com/repo/Centos-7.repo 正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 111.123.53.235, 111.123.55.139, 113.240.96.79, ... 正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|111.123.53.235|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:2523 (2.5K) [application/octet-stream] 正在保存至: “/etc/yum.repos.d/CentOS-Base.repo” 100%[===========================================================================================================>] 2,523 --.-K/s 用时 0s 2024-05-03 20:21:06 (190 MB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])
-
从网址回退到上一级,进入epel。里面是扩展包,之前下的是基础包
-
根据提示在终端运行命令。红帽7与CentOS7一样
-
效果如下
[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo --2024-05-03 20:24:49-- https://mirrors.aliyun.com/repo/epel-7.repo 正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 111.123.55.138, 111.123.55.140, 111.123.55.136, ... 正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|111.123.55.138|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:664 [application/octet-stream] 正在保存至: “/etc/yum.repos.d/epel.repo” 100%[===========================================================================================================>] 664 --.-K/s 用时 0s 2024-05-03 20:24:49 (196 MB/s) - 已保存 “/etc/yum.repos.d/epel.repo” [664/664])
-
查看yum仓库,多了下面两个库
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# ls CentOS-Base.repo epel.repo
-
使用vim查看这两个库。自己配的与他这个都大差不差,只是baseurl不同,他给的网址里面涵盖了99%的包
CentOS-Base.reop
epel.repo
-
更新yum仓库。之前使用过本地源的,系统内可能会有缓存
[root@localhost yum.repos.d]# yum makecache
yum:rpm软件包管理器
词组yellow dog updater modified的缩写,其功能是在Linux系统中基于RPM技术进行软件包的管理工作。
格式语法:yum 参数 指令 软件包
常用参数
参数 | 描述 |
---|---|
-h | 显示帮助信息 |
-t | 忽略错误 |
-c | 配置文件路径 |
-R | 命令最长等待时间 |
-q | 静默执行 |
-v | 详细的显示操作过程 |
-y | 回答全部为yes |
--assumeno | 回答全部为no |
--version | 显示yum版本 |
--installroot=[path] | 设置安装的根目录 |
--enablerepo=[repo] | 启用一个或多个软件源 |
--disablerepo=[repo] | 禁用一个或多个软件源 |
常用指令
指令 | 描述 |
---|---|
install | 安装软件包 |
update | 更新软件包 |
check-update | 检查是否有可用的更新软件包 |
remove | 删除软件包 |
list | 显示软件包的信息 |
makecache | 更新yum仓库 |
search | 搜索指定软件包 |
info | 显示指定软件包的描述和概要信息 |
clean | 清理过期的缓存 |
shell | 设置使用的shell提示符 |
resolvedep | 显示软件包的依赖关系 |
localinstall | 安装本地软件包 |
localupdate | 更新本地软件包 |
deplist | 显示软件包的依赖关系 |
-
安装软件包:httpd,并回答问题全部为yes
[root@localhost Packages]# yum -y install httpd
-
删除软件包:httpd,并回答问题为yes
[root@localhost Packages]# yum -y remove httpd
-
检测软件:httpd是否有可更新的软件包
[root@localhost Packages]# yum check-update httpd
-
更新软件包:httpd
[root@localhost Packages]# yum update httpd
-
搜索指定软件包:httpd
[root@localhost Packages]# yum search httpd
-
显示全部软件包
[root@localhost Packages]# yum list
-
显示已安装的软件包
[root@localhost Packages]# yum list | grep @
-
显示指定软件包:httpd的信息
[root@localhost Packages]# yum list httpd
rpm管理工具
rpm(redhat package manager)红帽软件包管理器
是红帽推出的软件管理器,但是不能同时安装软件包和依赖包,所以用法比较麻烦。先找到要安装的软件包有没有依赖包,再把他们一一下载下来
rpm:rpm软件管理器
其功能是在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作,常见的主流系统(如RHEL、CentOS、Fedora等)都采用这种软件包管理器
-
推荐用固定搭配“rpm-ivh 软件包名”安装软件,
-
而卸载软件则用固定搭配“rpm -evh 软件包名”
语法格式:rpm 参数 软件包名
注意:再安装rpm包时,使用的是软件包,也就是文件名,所以要打出软件包的全名,包括软件名、版本号、红帽版本、系统架构以及.rpm后缀。
常用参数
参数 | 描述 |
---|---|
-a | 显示所有软件包 |
-c | 仅显示组态配置文件 |
-d | 仅显示文本文件 |
-e | 卸载软件包 |
-f | 显示文件或命令属于哪个软件包 |
-h | 安装软件包时显示标记信息 |
-i | 安装软件包 |
-l | 显示软件包的文件列表 |
-p | 显示指定的软件包信息 |
-q | 显示指定软件包是否已安装 |
-R | 显示软件包的依赖关系 |
-s | 显示文件状态信息 |
-U | 升级软件包 |
-v | 显示执行过程信息 |
-vv | 显示执行过程详细信息 |
源码包
源码包简介
可以对源码包进行一些简单的配置,但是安装时需要编译器编译
获取源码包
官方网站里面
下面是三个软件的下载地址,等会以安装Tengine为例
-
Apache:www.apache.org
-
Nginx:www.nginx.org
-
Tengine:tengine.taobao.org
源码包安装
-
安装编译环境
-
下载源码包
-
对源码包解压后进入目录
-
使用configure配置
--prefix:指定安装目录。最好指定一下,这样安装的时候不会分散的到处都是,卸载软件只需要将安装目录直接删除即可
--usre:指定使用用户
--group:指定使用组
更多用法见下面文章
-
make命令编译文件
-
make install命令安装软件
-
最后在安装目录下面的 sbin 目录中有可执行文件,启动即可
-
安装编译器,保证运行环境
[root@localhost ~]# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
-
下载tengine2.2.0版本
[root@localhost ~]# wget https://tengine.taobao.org/download/tengine-2.2.0.tar.gz
没有wget就用yum安装一下
也可以直接在网站搜索https:及后面的网址进行下载
-
将下载的包解压,然后进入该目录
[root@localhost ~]# tar xf tengine-2.2.0.tar.gz [root@localhost ~]# cd tengine-2.2.0/
-
使用configure配置软件
[root@localhost tengine-2.2.0]# ./configure --user=liu --group=liu --prefix=/usr/local/tenginx checking for OS + Linux 3.10.0-1160.el7.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) checking for gcc -pipe switch ... found ......................................................... ....................省略中间的输出............................ .............................................................. nginx path prefix: "/usr/local/tenginx" nginx binary file: "/usr/local/tenginx/sbin/nginx" nginx configuration prefix: "/usr/local/tenginx/conf" nginx configuration file: "/usr/local/tenginx/conf/nginx.conf" nginx pid file: "/usr/local/tenginx/logs/nginx.pid" nginx error log file: "/usr/local/tenginx/logs/error.log" nginx http access log file: "/usr/local/tenginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx dso module path: "/usr/local/tenginx/modules/" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp"
--user:指定使用用户
--group:指定使用的组
--prefix:指定安装路径
除了:nginx error log file: "/usr/local/tenginx/logs/error.log" 以为没有其他error就是正常
-
编译
[root@localhost tengine-2.2.0]# make make -f objs/Makefile make[1]: 进入目录“/root/tengine-2.2.0” cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I src/proc -I objs \ -o objs/src/core/nginx.o \ src/core/nginx.c ............................................................... ....................省略中间的输出信息............................. ................................................................ objs/src/http/modules/ngx_http_upstream_dynamic_module.o \ objs/src/http/modules/ngx_http_stub_status_module.o \ objs/ngx_modules.o \ -lpthread -ldl -lcrypt -lpcre -lssl -lcrypto -ldl -lz make[1]: 离开目录“/root/tengine-2.2.0” make -f objs/Makefile manpage make[1]: 进入目录“/root/tengine-2.2.0” sed -e "s|%%PREFIX%%|/usr/local/tenginx|" \ -e "s|%%PID_PATH%%|/usr/local/tenginx/logs/nginx.pid|" \ -e "s|%%CONF_PATH%%|/usr/local/tenginx/conf/nginx.conf|" \ -e "s|%%ERROR_LOG_PATH%%|/usr/local/tenginx/logs/error.log|" \ < man/nginx.8 > objs/nginx.8 make[1]: 离开目录“/root/tengine-2.2.0”
除了:ERROR_LOG_PATH以外没有其他ERROR就是正常
-
安装
[root@localhost tengine-2.2.0]# make install
-
测试是否可以正常使用
-
记得关闭httpd,如果开启过
[root@localhost ~]# systemctl stop httpd
-
关闭防火墙
// 关闭防火墙 [root@localhost ~]# systemctl stop firewalld // 禁止防火墙开机自启 [root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
-
启动软件,运行主执行程序
[root@localhost tengine-2.2.0]# /usr/local/tenginx/sbin/nginx
-
打开网站,输入本机网址:127.0.0.1,看到如下页面就启动成功
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了