一. RPM 软件包管理器
1、软件包介绍
RPM(RedHat Package Manager)软件包:扩展名为“.rpm”。RPM本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的Linux软件。安装RPM软件包需要使用rpm命令或yum命令。
源代码软件包:软件包文件的后缀为.tar.gz、tar.Z、tar.bz2或.tgz。这种软件包是程序开发完成的原始代码,它的内容多是一种可编译运行的源代码。安装源码包需要使用相应的编译工具,如linux中的C/C++语言编译器gcc、gcc-c++。
开放源代码的自由软件绝大多数选择以TarBall的形式发布,而RPM软件包、DEB软件包等则使用了二进制的文件格式,代码相对比较封闭。
RPM软件包命名格式:
- 2.4.6 是软件的版本号,版本号的格式为:主版本号.次版本号.修正号。
- 80是版本号发布次数,表示这个RPM包是第几次编译生成的。
- 硬件平台通常为i386或i686、x86_64、noarch等,表示适用的硬件平台,x86_64表示适用于64位的系统,如果是noarch表示不区分硬件架构。
mount 命令
- 描述:挂载一个分区或者文件系统到系统目录下
- 语法:mount [选项] device dir
mkdir /mnt/cdrom # 创建挂载目录
mount /dev/sr0 /mnt/cdrom # 挂载sr0至/mnt/cdrom/,sr0写保护,将以只读方式挂载
ls -la /mnt/cdrom/Packages/ | more # 查看光盘中的rpm包
df 命令
- 描述:检查文件系统的磁盘空间占用情况
- 语法:df -h
df -h # 查看磁盘空间占用情况
umount 命令
- 描述:卸载以挂载的文件系统
- 语法:umount 设备或挂载目录
umount /dev/sr0 # 卸载sr0设备
rpm 命令
- 描述:查询、操作、维护rpm软件包相关信息
- 语法:rpm [选项] 软件名
- 查询未安装的rpm 软件信息
-
- -qpi:通过.rpm包文件查看该软件的详细信息
- -qpl:查看.rpm安装包内所包含的目录、文件列表
- -qpc:查看.rpm安装包内包含的配置文件列表
- -qpd:查看.rpm安装包内包含的文档文件列表
# 查询未安装的软件包的详细信息
rpm -qpi /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
# 查询未安装的软件包的目录、文件列表
rpm -qpl /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
# 查询未安装的软件包的配置文件列表
rpm -qpc /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
# 查询未安装的软件包的配置文件列表
rpm -qpd /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
- 查询已安装的rpm 软件信息
-
- -qa:查看系统中已安装的所有RPM软件包列表
- -qi:查看指定软件的详细信息
- -ql:查询指定软件包所安装的目录、文件列表
- -qc:仅显示指定软件包安装的配置文件
- -qd:仅显示指定软件包安装的文档文件
- -qf: 查询文件或目录属于哪个RPM软件
rpm -qa | wc -l # 查询主机已安装的rpm包总数量
rpm -qi kbd-1.15.5-15.el7.x86_64 # 查询已安装的 kbd 软件包的详细信息
rpm -ql kbd-1.15.5-15.el7.x86_64 # 查询已安装的 kbd 软件包的安装路径
rpm -qd kbd-1.15.5-15.el7.x86_64 # 查询已安装的 kbd 软件包的文档文件
rpm -qf /etc/pam.d/vlock # 查询指定的文件属于哪个rpm软件包
- 安装或升级rpm软件包
-
- -i:安装一个新的rpm软件包
- -v:显示软件安装过程中的详细信息
- -h:在安装或升级软件包的过程中,以“#”号显示安装进度
- -U:升级某个rpm软件,若原本未装,则进行安装
- -F:更新某个rpm软件,若原本未装,则放弃安装
- -e:卸载指定的RPM软件,格式:rpm -e 软件名
- --force:强制安装所指定的rpm软件包
- --nodeps:安装、升级或卸载软件时,忽略依赖关系
# 安装tree软件包
rpm -ivh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
# 更新tree软件包
rpm -Uvh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm# 卸载tree软件包
rpm -qa | grep tree # 查询已安装的 tree 软件包的名称
rpm -evh tree-1.6.0-10.el7.x86_64 # 卸载 tree 软件
tree 命令
- 描述:以树状格式列出目录的内容, 查看文件系统的结构
- 语法:tree [选项]… [文件]…
-
- -L 目录树的最大显示深度
tree -L 2 /mnt # 以树状结构显示文件目录内容,最大深度为2
2、维护RPM数据库
RPM数据库(/var/lib/rpm目录下)用于记录在Linux系统中安装、卸载、升级应用程序的相关信息,由RPM包管理系统自动完成维护,一般不需要用户干预。当RPM数据库发生损坏(误删文件、非法关机、病毒破坏等导致),且Linux系统无法自动完成修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包。
# 向RPM数据库的文件中写入脏的数据,用来模拟数据库损坏
echo "123" > /var/lib/rpm/__db.001# 使用rpm命令,查看数据库损坏的情况会报什么错
rpm -qa | grep tree
# 清除损坏的rpm数据文件,并重建数据库信息
rm -rf /var/lib/rpm/__db.00*
# 重新使用rpm命令查询数据,命令可以正常使用
rpm -qa | grep tree
# 可以看到被删除的文件已经回复,数据库重建完成
3、导入验证公钥
安装软件包警告:
- warning: /mnt/cdrom/Packages/lynx-2.8.8-0.3.dev15.el7.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
这是由于没有导入RedHat提供的公钥所致,导入公钥文件:
rpm --import /mnt/cdrom/RPM-GPG-KEY-CentOS-7 # 导入公钥文件
4、解决软件包依赖关系
- 树形依赖:A-B-C-D: 安装时要从后往前安装先从D包开始、然后是C包......最后到A包
- 环形依赖:A-B-C-D-A: 安装时要可以一条命令直接装完如:rpm -ivh A B C D
rpm -qa | grep vim # 查看软件包依赖,卸载vim
# 卸载vim-common,此时存在依赖关系vim-enhanced依赖vim-common,所以会报错
# 先删除vim-enhanced
rpm -e vim-common-7.4.629-8.el7_9.x86_64
二. YUM 软件包管理器
YUM(Yellow dog Updater Modified), 一个基于RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包。
YUM的特点:
- yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令 .
- 所有软件包全部都在互联网中, 能够实现非常快速的更新、升级
- 采取的C/S 架构模型
- 可以同时配置多个资源库(Repository)
- 简洁的配置文件(/etc/yum.conf)
- 自动解决增加或删除rpm 包时遇到的依赖性
- 保持与RPM 数据库的一致性
软件仓库的提供方式:
- 本地目录:file:///.......
- FTP服务:ftp://......
- HTTP服务:http://......
1、YUM的配置文件
- Yum配置文件:/etc/yum.conf
- Yum仓库配置文件:/etc/yum.repos.d/
- Yum日志文件:/var/log/yum.log
- YUM缓存目录:/var/cache/yum/$basearch/$releasever
2、配置本地Yum仓库
在Centos7的安装光盘中,已经在Packages目录建好了repodata数据,因此我们只需要将centos7系统光盘挂载到指定目录或将光盘全部内容复制到指定即可。
# 将sr0光盘挂载至 /mnt/cdrom
mount /dev/sr0 /mnt/cdrom# 查看yum仓库的配置文件
ls /etc/yum.repos.d/
CentOS-*.repo是centos系统安装好后,系统默认提供的指向centos官方yum软件仓库的配置文件
# 备份yum仓库的配置文件到 /opt/yum_conf_bak/ 目录下
cp /ect/yum.repos.d/ /opt/yum_conf_bak/
创建本地仓库的配置文件:
# 创建本地仓库的配置文件
vim /etc/yum.repos.d/centos.repo[centos7] #仓库名称
name=centos_7 #仓库描述信息
baseurl=file:///mnt/cdrom #URL访问路径,即软件仓库的路径
enabled=1 # 启用此软件仓库
gpgcheck=0 # 关闭gpg软件包签名验证
#gpgcheck=1 # 开启gpg软件包签名验证
#gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 # GPG公钥文件的位置
3、yum 命令
- 语法: yum [options] [command] package
-
- 选项:
-
-
- -y, --assumeyes 回答全部问题为是
- --installroot=[path] 设置安装根目录
- --enablerepo=[repo] 启用一个或多个软件源(支持通配符)
- --disablerepo=[repo] 禁用一个或多个软件源(支持通配符)
- -x [package], --exclude=[package] 采用全名或通配符排除软件包
-
-
- 命令:
clean 删除缓存数据
list 列出一个或一组软件包
help 显示用法提示
history 显示或使用事务历史
info 显示关于软件包或组的详细信息
install 向系统中安装一个或多个软件包
groups 显示或使用、组信息
repolist 显示已配置的源
search 在软件包详细信息中搜索指定字符串
update 更新系统中的一个或多个软件包
upgrade 更新软件包同时考虑软件包取代关系
erase 从系统中移除一个或多个软件包
# 清除yum缓存包
yum clean all# 列出一个或一组软件包
yum list# 显示已配置的源
yum repolist
# 查看list命令帮助
yum help list
# 表示只列出系统中已安装的软件包
yum list installed# 表示只列出软件仓库中可用(尚未安装)的软件包
yum list available# 表示列出可以升级版本的软件包。
yum list update# 显示或使用事务历史
yum history list
# 查看事务为2的详细信息
yum history info 2
# 查看软件包的详细信息
yum list | grep vim
yum info vim-common.x86_64
# 使用yum安装一个软件
yum install -y wget# 安装运维必备工具
yum install -y lrzsz net-tools gcc gcc-c++# 查看yum仓库的软件包组
yum grouplist
yum groups
# 安装一个软件包组
yum help groups
yum groupintall GONME # 安装GONME桌面
# yum卸载软件
yum help erase
# 卸载 tree
yum remove -y tree
# 查找软件包
yum search ifconfig# 安装net-tools
yum install -y net-tools# 安装 samba
yum install -y samba
4、配置yum网络源
网络源地址:
- 阿里云:http://mirrors.aliyun.com/repo/Centos-7.repo
- 网易:http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 下载网络源repo文件
# wget -O, --output-document=FILE 将文档写入 FILE
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/reps/Centos-7.repo# 更新网络源
yum clean all
yum repolist# 配置扩展源
yum install -y epel-release
三. 源代码编译安装程序
几乎所有的开源软件都支持在Linux下运行,而这些软件一般都以源码形式发放,只需要Linux安装了gcc、make、automake、autoconf都支持源码安装。
1、源代码安装的优缺点
源码安装的优点:
- 获得最新的软件版本,及时修复bug
- 根据用户需要,灵活定制软件功能
- 因为可以定位到代码,所以debug方便
- 本机兼容性最好(由于是本机编译的,只要编译通过,就没有各种库的依赖的问题)
源码安装的缺点:
- 编译麻烦
- 缺乏自动依赖管理,软件升级麻烦
2、源代码安装前的准备工作
源代码下载:.tar.gz和.tar.bz2 格式居多,源代码下载推荐去官网下载
完整性校验:
md5sum校验工具,计算MD5校验和,并与官方提供的值相比较,判断是否一致,若相同则说明该软件包没有被非法改动,对于校验和不一致的软件包,应尽量不要使用,以避免带来病毒、木马等不安全因素。
确定源代码编译环境:需安装支持C/C++程序语言的编译器
rpm -qa | grep gcc
yum install -y gcc gcc-c++
源码包安装流程:
获得所需安装的软件源代码以后,安装的基本过程包括解包、配置(检查安装环境、并对软件的安装目录、功能选择等参数进行预先设置)、编译和安装这几个通用步骤,如图所示,大多数开源软件的安装都遵循这个过程。当然,这四个步骤并不是一成不变的,实际安装时应参考软件自带的相关文档,如INSTALL、README
3、tar 命令
- 描述:解压缩文件
- 语法:tar [options] packages
-z, --gzip, --gunzip, --ungzip 通过 gzip 过滤归档
-v, --verbose 详细地列出处理的文件
-x, --extract, --get 从归档中解出文件
-f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备
-c, --create 创建一个新归档
-C, --directory=DIR 改变至目录 DIR
4、./configure 命令
- 描述:预编译主要检测当前操作系统软件编译安装环境,如果检测缺少库文件或者软件包,需要手动安装
- 语法:./configure [options] [VAR=Value]
--help 使用此参数可查看configure支持的详细参数信息
--prefix=PREFIX 指定安装路径,默认安装到/usr/local目录下
--sysconfdir=DIR 指定配置文件路径
5、源码安装 Apache
下载地址:
- Index of /dist/httpd
- Download - The Apache HTTP Server Project
a. 下载并解压
# 下载 httpd
wget http://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz# 解压归档压缩包至/usr/local/src目录下:
tar -zxvf httpd-2.4.54.tar.gz -C /usr/local/src# 进入解压目录查看目录结构
cd /usr/local/src/httpd-2.4.54
b. 编译并安装
# 预编译当前操作系统的软件环境
./configure --prefix=/usr/local/apache
# 检测上一条命令是否执行成果,0是成功,1是失败
echo $? # 此处输出1,error:ARP not found# 检测并安装apr
yum list | grep apr# 安装Apache依赖包
yum -y install apr apr-devel apr-util apr-util-devel pcre pcre-devel# 再次预编译
./configure --prefix=/usr/local/apache# 编译
make -j 2
echo $?# 安装
make install
c. 启动程序并访问
# 清理安装包
rm -rf /usr/local/src/httpd-2.4.54# 查看apache安装目录
ls /usr/local/apache# 启动apache/usr/local/apache/bin/apachectl start# 查看apache端口号netstat -antup | grep 80# 关闭防火墙systemctl stop firewalld