一、前言
“沧海横流,方显英雄本色”
“夜深风雨归何处,西月窥人到半窗”
“衣带渐宽终不悔,为伊消得人憔悴”
“静以修身,检以养德”
二、软件包介绍&RPM管理
软件包的分类
源码包:
优点:
- 开源,可以自己修改源代码
- 自由选择自己需要的功能
- 编译安装,更加适合自己的系统,搞笑+稳定
- 那么需要了解的就是什么是编译-->编译就是,我们看的懂abc,机器看不懂,所以就需要从abc-->0101.....这种就是编译的过程
- 卸载直接删除目录-->方便
缺点:
- 安装过程步骤比较多,源码编译LNMP环境搭建,容易出现错误
- 编译的时间过长,
- 报错复杂,对于新手不容易排错
- 排错过程-->百度-->谷歌-->专业技术问题的效率需要提高
- 看官方文档-->换环境
二进制包:
DPKG包:debian、ubuntu等、需要使用的包
RPM包:rhel红帽开发的包管理系统,我们主要学的就是RPM包
优点:
- 包管理简单,几个命令解决,安装、升级、查询和卸载
- 安装速度比较快
缺点:
- 经过编译,看不到源代码
- 功能选择有默认-->不利于自己查找适合的功能
- 依赖性强-->需要解决依赖关系
问题1:什么是模块依赖?
#测试rpm安装apache服务-->
[root@Master ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@Master ~]# cd /mnt/cdrom/Packages/
#安装-->
rpm 命令 ivh选项 软件包名
[root@Master Packages]# rpm -ivh httpd-2.2.15-53.el6.centos.x86_64.rpm
warning: httpd-2.2.15-53.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
error: Failed dependencies:
apr-util-ldap is needed by httpd-2.2.15-53.el6.centos.x86_64
httpd-tools = 2.2.15-53.el6.centos is needed by httpd-2.2.15-53.el6.centos.x86_64
libapr-1.so.0()(64bit) is needed by httpd-2.2.15-53.el6.centos.x86_64
libaprutil-1.so.0()(64bit) is needed by httpd-2.2.15-53.el6.centos.x86_64
[root@Ma
#这里直接报错,error:失败的依赖关系-->下面就是依赖的模块或者库,需要自己手动安装
问题2:如何查找libapr-1.so.0这种函数库文件?
借助网站:www.rpmfind.net这个网站
直接搜索-->依赖库
搜索出来结果就是我们需要下载安装的包,包中就会有这种函数库文件
问题3:如何选择软件包的安装方式?
源码包:如果服务是给大量用户提供访问的,建议使用源码包,源码包好管理,效率高;
RPM包:如果程序是给少量用户访问,或者本地使用的,建议使用RPM包,因为RPM包管理方便
rpm包讲解
rpm包的命名规则
httpd-2.2.15-53.el6.centos.x86_64.rpm
- httpd:软件包名
- 2.2.15:软件版本
- 15:发布的次数
- el6:适合rhel系统使用
- x86_:适合x86_64的平台架构
- rpm:rpm包的扩展名
安装的时候需要注意:
包全名:如果操作的是未安装的包,需要使用包全名,并且是绝对路径;
包名:如果是已经安装的包的,使用包名即可,系统生成RPM包的数据库,直接搜索数据库;(数据库在/var/lib/rpm/目录下)
rpm命令:
作用:查询或者安装rpm包
语法:
rpm 【选项】 包全名
注意安装包全名的绝对路径
选项:
-ivh:安装,i:安装;v:显示详细信息;h:打印安装进度
-Uvh:升级安装
--nodeps:不检测依赖关系,一般也不用,强行安装
--force:强制安装通常与--replacepkgs这个替换软件包安装
--test:测试,实际不会安装
--prefix:指定路径
-e:卸载
注意:rpm命令常用语查询功能
rpm -qa 包名 查询系统是否安装了这个包
rpm -qa:查看系统所有的包
rpm -qi:查询包名的信息
rpm -ql:查看包的文件列表(包括配置文件)
rpm -qf:查询文件属于哪个包
rpm -qR:查询软件包的依赖性
rpm -Va:校验已安装的所有软件包
rpm -qpi:查询未安装的包的信息,需要跟的是包全名
rpm -qpl:查看没有安装的包的文件列表需要包全名
rpm -qRp:查询未安装包的依赖性
#查询
[root@Master Packages]# rpm -qa httpd
httpd-2.2.15-53.el6.centos.x86_64
[root@Master Packages]# rpm -qa | grep httpd
httpd-devel-2.2.15-53.el6.centos.x86_64
httpd-tools-2.2.15-53.el6.centos.x86_64
httpd-manual-2.2.15-53.el6.centos.noarch
httpd-2.2.15-53.el6.centos.x86_64
#查询包的详细信息
[root@Master Packages]# rpm -qi httpd
Name : httpd Relocations: (not relocatable)
Version : 2.2.15 Vendor: CentOS
Release : 53.el6.centos Build Date: 2016年05月12日 星期四 03时29分17秒
Install Date: 2021年01月15日 星期五 00时19分20秒 Build Host: worker1.bsys.centos.org
Group : System Environment/Daemons Source RPM: httpd-2.2.15-53.el6.centos.src.rpm
Size : 3133738 License: ASL 2.0
Signature : RSA/SHA1, 2016年05月12日 星期四 18时52分29秒, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
#查询包的文件列表
[root@Master ~]# rpm -ql httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
.......................
#查询文件属于哪个包
[root@Master ~]# rpm -qf /etc/issue
centos-release-6-8.el6.centos.12.3.x86_64
#查询包的依赖关系
[root@Master ~]# rpm -qR httpd
/bin/bash
/bin/sh
/bin/sh
........
问题1:如何查看包文件是否被修改过?
使用到rpm -V 包名
详细的分析如下:
[root@Master ~]# rpm -V httpd
S.5....T. c /etc/httpd/conf/httpd.conf
S:文件大小是否改变
M:文件的类型或者文件的权限是否被改变
5:文件的MD5校验是否改变
D:设备的主从代码是否改变
L:文件路径是否改变
U:文件的属主是否改变
G:文件的属组是否改变
T:文件的修改时间是否改变
c:普通的配置文件
d:普通文档
g:鬼违建
l:授权文件
r:描述文件
#什么是MD5?
这个是完整性校验,是一种加密的算法;
只要内容不变,MD5码就不变,如果内容改变,则MD5码就会改变
问题2:如何导入数字证书
什么是数字证书?
数字证书用来校验包文件是否有修改
rhel:光盘数字证书,/etc/pki/rpm-gpg/rpm-gpg-key-CentOS-6
#导入数字证书
[root@Master ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[root@Master ~]# rpm -qa | grep gpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3
服务启动:
service 服务名 start|stop|restat|status
启动、停止、重启、状态
源码包安装是不能加入service这条命令来使用的
service搜索的文件目录是:/etc/rc.d/init.d/目录下
#启动httpd
[root@Master Packages]# service httpd start
#停止httpd
[root@Master Packages]# service httpd stop
#重启httpd
[root@Master Packages]# service httpd restart
#查看httpd的状态
[root@Master Packages]# service httpd status
httpd (pid 1909) 正在运行...
RPM包文件提取实验
cpio命令:--->这个备份还原--->一般不用,作为扩展了解
作用:从包中提取需要的命令
语法:
cpio 【选项】 文件| 设备名
选项:
-o:copy-out 模式,备份
-v:显示过程
-c:使用较新的存储方式
-B:设定输入输出块为5120bytes
-i:copy-in模式,还原
-v:显示过程
-c:使用较新的存储方式
-d:还原时创建新目录
-u:自动使用较新的文件覆盖旧文件
rpm2cpio 包全名 |cpio -idv . 文件绝对路径
rpm2cpio:将rpm包转换成cipo格式
cpio:标准工具,用于创建文档文件和从文档文件中提取文件
实验过程:
#移走ls命令
[root@Master ~]# mv /bin/ls /tmp/
[root@Master ~]# ls
-bash: /bin/ls: 没有那个文件或目录
#查看一下ls由哪个包提供
[root@Master ~]# rpm -qf /bin/ls
coreutils-8.4-43.el6.x86_64
#从光盘中提起
[root@Master ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-43.el6.x86_64.rpm | cpio -idv ./bin/ls
./bin/ls
25240 块
[root@Master ~]# cp /root/bin/ls /bin/
#验证
[root@Master ~]# ls
bin install.log install.log.syslog
三、结束
“当别人休息时,你仍在努力;当别人放弃时,你仍然坚持。当别人困惑时,你的眼睛是坚定的。当别人开心的时候,你选择学习。当别人躺在床上时,你已经在旅行了。当别人懈怠时,你挑战记录。当别人沉默时,你表现出热情;当别人祝贺你时,你用眼泪感谢他们。当别人奋斗的时候,你已经成功了!”
“一个人的成就不在于他的光环,而在于他的经历。”
“生活不能太平淡,平淡的生活注定会错过生活的乐趣”
“如果生命是一片海,那么期待大海会有暴风雨,在浅滩我最喜欢的1句励志上的航行永远不会到达美丽的海岸”
“如果生活是一座山,那就期待这座山有多高,而在山脚下爬山永远不会欣赏到美丽的风景”
“如果生活是一片草原,那就期待风雨吧,荒原边缘的游牧者永远也不会创造出壮丽的战斗”
互勉~!