安装、查询、卸载
软件包的类型
- 源码包
- 需要编译
- 二进制包
- 已编译
常见二进制包类型
- RedHat/Centos
- RPM
- 工具
- rpm
- yum(在线安装,自动解决依赖关系)
- Ubuntu/Debain
- DPKG
- 工具
- dpkg
- apt(在线安装,自动解决依赖关系)
注意!不管是源码包,还是二进制包,安装时都可能会有依赖关系
yum
yum是centos上用来下载和安装软件包的一个工具
我们可以使用yum install xxx
命令来安装一个软件
但是大家有没有考虑过一个问题?yum工具是去哪里找到这些软件包的呢?
这就不得不提到yum源
,所谓源
的意思就是指这些软件包的来源,也可以成称之为软件仓库
官方源
一些有名的大厂或者高校都有提供他们整合好的软件仓库
[root@localhost ~]# yum repolist # 查看默认的源
仓库标识 仓库名称
AppStream CentOS-8 - AppStream
BaseOS CentOS-8 - Base
extras CentOS-8 - Extras
软件源相关文件存放的位置/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
# 这里面的一个个.repo文件就是一个个软件仓库
可以尝试添加阿里云软件仓库,下面的是centos7的添加命令
# 先移除原有的所有源
[root@localhost ~]# rm -f /etc/yum.repo.d/*
# 通过curl命令来下载阿里云的源,并且放到/etc/yum.repi.d/下面
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
[root@localhost ~]# yum repolist
- EPEL源(Extra Packages for Enterprise Linux)为“红帽系”的操作系统提供额外的软件包
yum -y install epel-release
yum常用命令
- 查看当前可用仓库
[root@localhost ~]# yum clean all # 清空缓存及其他文件
[root@localhost ~]# yum makecache # 重建缓存
[root@localhost ~]# yum repolist # 查询可用的仓库
- 查找软件包
注意:有些命令跟软件包的名字是不同的
1. 通过命令的名字查找是属于哪个软件包
[root@localhost ~]# yum provides pstree
2. 通过配置文件查找属于哪个软件包提供的
[root@localhost ~]# yum provides /etc/ssh/sshd_config
3. 通过search参数查找
[root@localhost ~]# yum search pstree
4. 查看系统中的安装包
[root@localhost ~]# yum list installed # 查看已安装的所有软件包
[root@localhost ~]# yum list # 查看所有可以安装的软件包
[root@localhost ~]# yum list httpd
- 安装软件包
# yum install xxx
- 安装httpd软件包
[root@localhost ~]# yum install httpd -y
-y:一律允许
[root@localhost ~]# yum install httpd vim nginx -y # 多个软件包之间用空格隔开
[root@localhost ~]# yum reinstall httpd # 重新安装
[root@localhost ~]# yum update httpd # 更新软件包的版本-laster
[root@localhost ~]# yum update # 更新所有软件包到软件仓库的最新版本
[root@localhost ~]# yum -y install /root/httpd-2.4.6-93.el7.centos.x86_64.rpm
# 从本地安装
[root@localhost ~]# yum -y install http://centos.ustc.edu.cn/centos/7/os/x86_64/Packages/httpd-2.4.6-93.el7.centos.x86_64.rpm
# 从URL安装
- 软件包组就是把一些相关的软件包给整合起来,可以打包安装和卸载
[root@localhost ~]# export LANG="en-US.utf8" 切换英文环境
[root@localhost ~]# yum grouplist # 查看可用的软件包组
Available Environment Groups: 可用环境组
Minimal Install 最小安装
Compute Node 计算节点
Infrastructure Server 基础结构服务器
File and Print Server 文件和打印服务器
Basic Web Server 基本Web服务器
Virtualization Host 虚拟化主机
Server with GUI GUI服务器
GNOME Desktop 桌面桌面
KDE Plasma Workspaces KDE等离子工作区
Development and Creative Workstation 开发创意工作站
Available Groups: 可用组 (表示还未安装的)
Compatibility Libraries 兼容性库
Console Internet Tools 控制台Internet工具
Development Tools 开发工具
Graphical Administration Tools 图形管理工具
Legacy UNIX Compatibility 传统的Unix兼容性
Scientific Support 科学支持
Security Tools 安全工具
Smart Card Support 智能卡支持
System Administration Tools 系统管理工具
System Management 系统管理
[root@localhost ~]# yum groupinstall "GNOME 桌面"
[root@localhost ~]# yum groupinfo "GNOME 桌面"
[root@localhost ~]# yum -y groupremove "GNOME 桌面"
- 卸载
[root@localhost ~]# yum -y remove httpd # 卸载httpd软件包
[root@localhost ~]# yum -y groupremove "GNOME 桌面" # 卸载软件包组
- 历史记录
[root@localhost ~]# yum history
用来查看 yum 软件包管理器执行的历史记录的
[root@localhost ~]# yum history info 4 # 查看具体某个yum记录的信息
[root@localhost ~]# yum history undo 4 # 回滚/撤销某个操作
[root@localhost ~]# yum history new # 情况所有yum历史记录
yum自建源
除了使用上述提到的官方源之外,我们也可以自己搭建一个自建源用来为系统提供软件仓库
实验一:本地yum镜像仓库
可以通过安装系统时下载的iso中的软件包来提供本地软件仓库
iso文件中具有一些基础的软件包
- 挂载本地ISO光盘:
[root@localhost ~]# mount /dev/cdrom /media/cdrom
- 清空原有的软件仓库
[root@localhost ~]# rm -f /etc/yum.repos.d/*
- 配置本地yum
[root@localhost ~]# cat > /etc/yum.repos.d/local.repo <<EOF
[base]
name=Centos 7 Release 7.1.1503
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
EOF
=======================字段解释=========================
-name 软件仓库名字
-baseurl 软件包的存放的地址
-enabled 是否启用这个仓库
-gpgcheck 是否校验软件包
实验二:提供内网服务器软件包更新
一台server1服务器可以访问公网,一台server2服务器无法访问公网
我们可以在这台能够访问公网的服务器上下载好软件包,通过http或者ftp提供给内网中的server2机器安装软件包
server1:
第一步:下载软件包,可以使用--downloadonly
选项仅下载不安装
第二部:将软件包放到合适的位置上,并且创建软件数据
[root@localhost ~]# yum clean all # 清理缓存和下载的包
[root@localhost ~]# yum update --downloadonly # 仅下载更新包
[root@localhost ~]# ls /var/cache/yum/x86_64/7/base/packages/ # 查看下载的包
[root@localhost ~]# mkdir /var/ftp/update
[root@localhost ~]# find /var/cache/yum/x86_64/7/updates -iname "*.rpm" -exec cp -rf {} /var/ftp/update/ \;
[root@localhost ~]# yum -y install createrepo # createrepo用来创建软件包的索引
[root@localhost ~]# createrepo /var/ftp/update/ # 创建软件包的索引
第三步:部署ftp文件服务器,将软件包通过ftp协议共享给sever2
# 部署ftp服务并且启动
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# systemctl start vsftpd
# 关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
server2:
在server2上我们编写repo文件,软件的来源是有server1通过ftp服务提供
[root@localhost ~]# rm -rf /etc/yum.repos.d/*.repo #干掉所有的仓库
[root@localhost ~]# vi /etc/yum.repos.d/update.repo
[update]
name=centos update
baseurl=ftp://192.168.72.134/update
gpgcheck=0
enabled=1
[root@localhost ~]# yum clean all
[root@localhost ~]# yum update -y # 更新测试
英格自建php源
RPM
在RHEL系列的系统上所使用的软件包为rpm包,上面使用的yum为在线安装软件包。除了在线的安装方法,我们还可以将rpm包下载到本地,然后使用rpm工具来安装这个软件包
- rpm工具使用分为安装、查询、验证、更新、删除等操作
- rpm包的格式说明:
[root@atopos ~]# rpm -ivh httpd-2.4.6-93.el7.centos.x86_64.rpm
- httpd:包名
- 2:主版本号
- 4:次版本号
- 6:修订次数,指的是第几次修改bug
- 93:release(第几次发布,指的是简单的修改参数)
- e17:操作系统版本
- x86_64:64位操作系统
- 命令格式
[root@atopos ~]# rpm [选项] 软件包
选项
安装:
- -i:install的意思,安装软件包
- -v:显示附加信息,提供更多详细信息
- -V:校验,对已安装的软件进行校验
查询:
- -q:查询,一般跟下面的参数配合使用
- -a:查询所有已安装的软件包
- -f:系统文件名(查询系统文件属于哪个安装包)
- -i:显示已安装的rpm软件包信息
- -l:查询软件包文件的安装位置
- -p:查询未安装软件包的相关信息
- -R:查询软件包的依赖性
卸载:
- -e:erase
- --nodeps:忽略依赖
升级:
- -U:一般配合vh使用
实例:安装
[root@localhost ~]# rpm -ivh https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/httpd-2.4.6-95.el7.centos.x86_64.rpm
# 或者
[root@localhost ~]# wget https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/httpd-2.4.6-95.el7.centos.x86_64.rpm
[root@localhost ~]# rpm -ivh httpd-2.4.6-95.el7.centos.x86_64.rpm
错误:依赖检测失败:
/etc/mime.types 被 httpd-2.4.6-95.el7.centos.x86_64 需要
httpd-tools = 2.4.6-95.el7.centos 被 httpd-2.4.6-95.el7.centos.x86_64 需要
libapr-1.so.0()(64bit) 被 httpd-2.4.6-95.el7.centos.x86_64 需要
libaprutil-1.so.0()(64bit) 被 httpd-2.4.6-95.el7.centos.x86_64 需要
# 需要自己手动解决依赖关系
# 额外安装选项
# --nosignature 不检验软件包的签名
# --force 强制安装软件包
# --nodeps 忽略依赖关系
实例:查询
[root@atopos ~]# rpm -q vim-enhanced
vim-enhanced-7.4.629-8.el7_9.x86_64
[root@atopos ~]# rpm -qa |grep vim-enhanced
vim-enhanced-7.4.629-8.el7_9.x86_64
[root@atopos ~]# rpm -ql vim-enhanced
/etc/profile.d/vim.csh
/etc/profile.d/vim.sh
/usr/bin/rvim
/usr/bin/vim
/usr/bin/vimdiff
/usr/bin/vimtutor
[root@atopos ~]# rpm -qc openssh-server
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
[root@atopos ~]#
实例:卸载
[root@atopos ~]# rpm -e vim-enhanced
源码包管理
源码包获得途径:
- 官方网站
- apache: www.apache.org
- nginx: www.nginx.org
编译源码包所需要的环境
这取决于源码所使用的编程语言和框架等,但是Linux基础软件包一般都是由C语言编写的,所以我们使用较多的编译环境为gcc
、make
等等
yum install -y gcc make
编译
源码包编译三部曲
- 第一步:
./configure
#可以指定安装路径,启用或者禁用功能等,最终生成makefile
- 第二步
make
#按Makefile文件编译。可以加 -j 2 参数使用两个cpu核心进行编译
- 第三步
make install
#按Makefile定义的文件路径安装
make clean
#清除上一次make命令所产生的object文件,要重新执行
configure时,需要执行make clean。
案例:编译炫酷代码雨
压缩与解压缩
打包一个文件或者目录:
tar -cvf archive.tar /path/to/directory
-c 表示创建一个新的归档文件。
-v 表示在压缩过程中显示详细信息(verbose 详细模式)。
-f 指定归档文件的名称。
# 如果要创建gzip压缩包
tar -zcvf archive.tar.gz /path/to/directory
解压缩:
tar -xvf archive.tar
-x 表示解压缩。
-v 表示显示详细信息。
-f 指定要解压缩的归档文件。
# 如果归档文件是使用 gzip 压缩的,比如 archive.tar.gz,则需要添加 -z 选项:
tar -zxvf archive.tar.gz
开始编译
[root@localhost ~]# yum -y install ncurses* gcc gcc-c++
[root@localhost ~]# tar -zxvf cmatrix-1.2a.tar.gz
[root@localhost ~]# cd cmatrix-1.2a
[root@localhost cmatrix-1.2a]# ./configure
[root@localhost cmatrix-1.2a]# make
[root@localhost cmatrix-1.2a]# make install
[root@localhost cmatrix-1.2a]# cmatrix