linux学习笔记(9)软件管理
9.1 软件管理概述
9.1.1 RPM包
- RPM Package Manager
- 在linux中,rpm包是一种通过资料库管理的方式将所需要的软件安装到主机上的管理程序;rpm由红帽开发常用于软件包的安装升级卸载与查询,linux通过rpm来实现和管理软件的安装、查看和删除。
- RPM包的特点
- 事先已经编译好,二进制(binary code)无需编译
- 安装方便
- 安装过程中要求环境一致
- 反安装时要从最上层开始
- RPM包注释:zip - 3.0-11. el7. x86_64 rpm
- 软件包名:zip
- 版本号(version):3.0-11
- 发布版本(Release5/6/7):el7(enterprise linux 7)
- 系统平台(32/64):x86_64
- 文件后缀:rpm
9.1.2 源码包
- source code 需要经过GCC ,C++编译环境编译才能运行
- 软件包示例:nginx-1.8.1.tar.gz
9.2 RPM包管理
9.2.1 YUM工具
-
yum( Yellow dog Updater, Modified)是一个在Fedora 和 RedHat以及 SUSE 中的 Shell 前端软件包管理器。
-
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
-
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
1、YUM本地源:系统安装光盘
- 通知linux服务器,通过本机的系统光盘获得软件包,并安装软件
- 记住目录/etc/yum.repos.d/
- 打开一个*.repo (repository)
- 观察国外地址(下载速度很慢)
- 删除官方YUM库
tar -cvf repos.tar *
mv repos.tar /tmp
# 先打包带走
# 不用rm-rf 用mv可以补救
- 需要时再解压回来
1、编写本地YUM库配置文件
[root@localhost yum.repos.d]# vim /etc/yum.repos.d/dvd.repo
# 红色框内为必填,名字自己起,有含义,不要数字
- 建立本地仓库,下载地址地址仓库,软件包库,YUM仓库,因为在这个baseurl能找到很多包
- /etc/yum.repos.d/是YUM下载地址库目录
- [dvd]某一个库的名称,[] 必须要
- name=dvd 是库的说明,name是必须的
- file:// 指的是本地 baseurl=file:///mnt/cdrom下载库的具体地址
- gpgcheck=0 关闭校验
[root@localhost yum.repos.d]# vim /etc/yum.repos.d/dvd.repo
[root@localhost yum.repos.d]# cat /etc/yum.repos.d/dvd.repo
[dvd]
name=dvd123
baseurl=file:///mnt/cdrom
gpgcheck=0
[root@localhost yum.repos.d]#
2、挂载安装光盘
- 一开始没有这个文件夹(/mnt/cdrom),所以要准备一个文件夹(mkdir /mnt/cdrom)来装载包
[root@localhost yum.repos.d]# mkdir /mnt/cdrom
[root@localhost yum.repos.d]# ls /dev/cdrom
/dev/cdrom
[root@localhost yum.repos.d]# mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost yum.repos.d]# ls /mnt/cdrom/
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
- 为了把软件(在光盘里面)放进去这个文件夹(/mnt/cdrom)
- 光盘在/dev/cdrom,将光盘挂载到文件夹就可以使用了,使用注意事项:
- 把光盘插到机器上,要插对,选对系统光盘
- 通电,虚拟机下面那个光盘有绿光
- 挂载成功后,查看文件夹里面的东西,都是CentOS装系统用的
- 查看Packages文件
- 里面是红帽推出的可用软件包(RPM软件包),查看数量
- 用管道
ls /mnt/cdrom/Packages/ | wc -l
- 重启电脑
init 6
注意:mount是临时挂载不永久,挂载命令写到系统自启动文件夹,只要系统启动就会挂载
把命令写在.bashrc里面,开机就会启动(专业位置在 /etc/fstab)
- 编写/root/.bashrc文件
vim /root/.bashrc
- 自启动文件,跟随用户启动运行的程序
- mount挂载
- /dev/cdrom 是光驱文件
- /mnt/cdrom是挂载点
- 重启后,使用 ls /mnt/cdrom 查看到光盘信息即可
ls /mnt/cdrom
3、使用YUM安装和卸载程序
[root@localhost ~]# yum install -y httpd
- 安装软件,安装成功如下:( - y: 对所有的提问都回答“yes”)
[root@localhost ~]# yum install -y httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-95.el7.centos 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-95.el7.centos,它被软件包 httpd-2.4.6-95.el7.centos.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-95.el7.centos.x86_64 需要
--> 正在检查事务
---> 软件包 httpd-tools.x86_64.0.2.4.6-95.el7.centos 将被 安装
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
================================================================================
Package 架构 版本 源 大小
================================================================================
正在安装:
httpd x86_64 2.4.6-95.el7.centos dvd 2.7 M
为依赖而安装:
httpd-tools x86_64 2.4.6-95.el7.centos dvd 93 k
mailcap noarch 2.1.41-2.el7 dvd 31 k
事务概要
================================================================================
安装 1 软件包 (+2 依赖软件包)
总下载量:2.8 M
安装大小:9.6 M
Downloading packages:
--------------------------------------------------------------------------------
总计 20 MB/s | 2.8 MB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : mailcap-2.1.41-2.el7.noarch 1/3
正在安装 : httpd-tools-2.4.6-95.el7.centos.x86_64 2/3
正在安装 : httpd-2.4.6-95.el7.centos.x86_64 3/3
验证中 : httpd-tools-2.4.6-95.el7.centos.x86_64 1/3
验证中 : mailcap-2.1.41-2.el7.noarch 2/3
验证中 : httpd-2.4.6-95.el7.centos.x86_64 3/3
已安装:
httpd.x86_64 0:2.4.6-95.el7.centos
作为依赖被安装:
httpd-tools.x86_64 0:2.4.6-95.el7.centos mailcap.noarch 0:2.1.41-2.el7
完毕!
- systemctl start httpd 启动软件
- systemctl stop firewalld 关闭防火墙
- systemctl disable firewalld 禁用防火墙开机自启
[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.
- 打开浏览器,输入网站服务器的IP地址(http://127.0.0.1),验证网站程序部署成功。
2、使用YUM管理RPM包
1、安装
- 全新安装(机器上没有)
yum -y install httpd vsftpd
# 安装两个软件包
- 重新安装
yum -y reinstall httpd
- 升级安装
yum -y update httpd
yum -y updata
注释:如果什么都不加,就是update系统
2、查询
- 查询HTTP程序(查询包是否已装)
[root@localhost ~]# yum list httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
已安装的软件包
httpd.x86_64 2.4.6-95.el7.centos @dvd
- 带@的是已经安装的
3、卸载
yum -y remove httpd
卸载后的查询:(可安装的软件包)
[root@localhost ~]# yum list httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安装的软件包
httpd.x86_64 2.4.6-95.el7.centos dvd
9.2.2 RPM工具
- 管理红帽系统/CentOS系统,rpm包的基本工具
- 与yum功能相同
- 无法处理依赖关系
1、安装(i)
- 先找到安装包
cd /mnt/cdrom/Packages
- 安装
rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm
# install visual h(百分比)
[root@localhost Packages]# rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm
警告:wget-1.14-18.el7_6.1.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
软件包 wget-1.14-18.el7_6.1.x86_64 已经安装
- 如果用yum再次安装
[root@localhost Packages]# yum -y install wget-1.14-18.el7_6.1.x86_64.rpm
已加载插件:fastestmirror, langpacks
正在检查 wget-1.14-18.el7_6.1.x86_64.rpm: wget-1.14-18.el7_6.1.x86_64
wget-1.14-18.el7_6.1.x86_64.rpm:不更新已安装的软件包。
错误:无须任何处理
- 去掉rpm后缀
[root@localhost Packages]# yum -y install wget-1.14-18.el7_6.1.x86_64
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 wget-1.14-18.el7_6.1.x86_64 已安装并且是最新版本
无须任何处理
- 无法处理依赖关系
[root@localhost Packages]# rpm -ivh xguest-1.0.10-32.el7.noarch.rpm
警告:xguest-1.0.10-32.el7.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:
policycoreutils-sandbox 被 xguest-1.0.10-32.el7.noarch 需要
[root@localhost Packages]#
2、查询(q)
[root@localhost Packages]# rpm -q wget
wget-1.14-18.el7_6.1.x86_64
3、卸载(e)
[root@localhost Packages]# rpm -evh wget-1.14-18.el7_6.1.x86_64
准备中... ################################# [100%]
正在清理/删除...
1:wget-1.14-18.el7_6.1 ################################# [100%]
- 可以再次查询,发现已经没有
[root@localhost Packages]# rpm -q wget-1.14-18.el7_6.1.x86_64
未安装软件包 wget-1.14-18.el7_6.1.x86_64
安装的时候一定要带后缀,因为装的是安装包,卸载的是软件。
查询的时候查的是软件,不用带后缀
9.3 源码包管理
1、获得源码包
官方网站,可以获得最新的软件包
2、实战案例
- 下载tengine
- ①直接去官网下(如果linux可以联网)
- ②在windows将网址复制过来,用wget下载(wget没有的话yum一下)
[root@localhost 桌面]# wget https://tengine.taobao.org/download/tengine-2.3.2.tar.gz
--2022-07-26 19:19:06-- https://tengine.taobao.org/download/tengine-2.3.2.tar.gz
正在解析主机 tengine.taobao.org (tengine.taobao.org)... 106.11.186.45, 203.119.245.120, 203.119.245.121, ...
正在连接 tengine.taobao.org (tengine.taobao.org)|106.11.186.45|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2835884 (2.7M) [application/octet-stream]
正在保存至: “tengine-2.3.2.tar.gz”
100%[======================================>] 2,835,884 738KB/s 用时 3.8s
2022-07-26 19:19:10 (732 KB/s) - 已保存 “tengine-2.3.2.tar.gz” [2835884/2835884])
- 准备编译环境:编译器
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
- 解压
tar xf tengine-2.3.2.tar.gz
- 进入解压后的文件夹
[root@localhost 桌面]# cd tengine-2.3.2/
[root@localhost tengine-2.3.2]#
- 配置
./configure --user=www --group=www --prefix=/usr/local/nginx
注意:configure表示值型后面的条件
- 编译
make
- 安装
make install
- 测试准备(之前安装过httpd服务,如果直接启动nginx可能会有冲突。请确保关闭httpd)
systemctl stop httpd
# 关防火墙
systemctl stop firewalld
- 启动测试
/usr/local/nginx/sbin/nginx
# 使用浏览器访问本机IP(http://127.0.0.1)如果可以看到NGINX则说明部署成功。