文章目录
软件包管理简介
软件包分类
-
源码包
源码包需要先编译成二进制包,再进行安装,因此安装较慢。
源码包中还有一种比较特殊的包叫脚本安装包,这种包不需要手动安装,但这种包不多。
-
二进制包(RPM包、系统默认包)
二进制包是通过源码包编译后产生的,安装起来较快,但不能看到源代码。
两种软件包的比较
源码包
-
优点
- 开源,可以修改源代码。
- 源码包先进行编译后再安装,更适合自己的系统,也更加稳定,效率更高。
- 可以*选择所需功能。
- 卸载方便,不会遗留垃圾文件。
-
缺点
- 安装步骤多,如果安装较大的软件集合,容易出现拼写错误 。
- 安装时间较长。
- 因为是编译安装,安装过程如果报错,新手很难解决。
RPM包
-
优点
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载。
- 安装速度较快。
-
缺点
- 无法看到源代码。
- 功能选择没有源码包灵活。
- 有依赖性。
RPM包管理-rpm命令管理
RPM包命名规则
httpd-2.2.15-15.el6.centos.l.i686.rpm
httpd 软件包名
2.2.15 软件包版本
15 软件发布次数
el6.centos 适合的Linux平台
i686 适合的硬件平台
rpm rpm包扩展名
RPM包依赖性
-
树形依赖:a→b→c
通俗来说就是装软件包a,要先装软件包b,装软件包b又要先装软件包c。
-
环形依赖:a→b→c→a
解决环形依赖的方法就是a、b、c同时安装。
-
模块依赖:模块依赖查询网站
包全名与包名
- 包全名:操作的包是没有安装的软件包时,使用包全名(如安装和更新),还要注意路径。
- 包名:就是上面命名规则中的httpd,操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库。
RPM安装命令
rpm -ivh 包全名
选项:
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
--nodeps 不检测依赖性
下面装一个Apache软件包来演示一下
首先创建挂载点,挂载进去后再进入光盘目录下:
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/sr0 /mnt/cdrom
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cd /mnt/cdrom
[root@localhost cdrom]# ls
CentOS_BuildTag images repodata
EFI isolinux RPM-GPG-KEY-CentOS-7
EULA LiveOS RPM-GPG-KEY-CentOS-Testing-7
GPL Packages TRANS.TBL
然后进入到Packages目录下:
[root@localhost ~]# mkdir /mnt/cdrom/Packages
由于操作的是未安装包,因此我们使用包全名,还要注意,如果没有进Packages目录,安装时需要写明路径。
我们先输入包名httpd-然后按Tab键就可以列出目录中所有以**httpd-**的安装包。
[root@localhost Packages]# rpm -ivh httpd-
httpd-2.4.6-95.el7.centos.x86_64.rpm
httpd-devel-2.4.6-95.el7.centos.x86_64.rpm
httpd-manual-2.4.6-95.el7.centos.noarch.rpm
httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
这四个都是Apache的必须包,一般情况下先装主包,再装附加包。
那么我们先装主包。
[root@localhost Packages]# rpm -ivh httpd-2.4.6-95.el7.centos.x86_64.rpm
这时会报依赖性错误,并提示缺少哪几个包。
那么我们就先来安装这提示缺少的几个包先来安装第一个。
先把提示性信息写下来再按Tab键自动补全。
[root@localhost Packages]# rpm -ivh httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
然后又报了依赖性错误。
并且这里依赖的是模块,不知道要装什么包。
那么就需要我们上面提到的模块依赖查询网站进行查询。
我的是CentOS7.9,回到终端装上装对应的包。
[root@localhost Packages]# rpm -ivh apr-1.4.8-7.el7.x86_64.rpm
同样,第二个模块依赖也用同样的方法解决。
完成后,再安装httpd-tools-2.4.6-95.el7.centos.x86_64.rpm就不会报错了。
[root@localhost Packages]# rpm -ivh httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
好了,依赖的包都安装好了,接下来我们就能成功安装主包了。
[root@localhost Packages]# rpm -ivh httpd-2.4.6-95.el7.centos.x86_64.rpm
很不幸的是,经过这一通操作,我们只是装了主包,还有三个附加包还未安装。
经过同样的操作,我们再把三个附加包也安装好。
RPM包升级
rpm -Uvh 包全名
注意:U是大写。
卸载
rpm -e 包名
选项:
-e 卸载
--nodeps 不检查依赖性
注意:不一定在Packages目录下执行,而且只用包名即可,不需要包全名。
例如我卸载刚刚的Apache:
[root@localhost cdrom]# rpm -e httpd
但报了依赖性错误,如下图:
这时我们把先两个依赖的包卸载,再回头卸载httpd即可。
查询是否安装
rpm -q 包名
rpm -qa (查询所有安装的rpm包)
查询软件包详细信息
rpm -qi 包名
选项:
-i 查询软件信息
-p 查询未安装包信息
查询包中文件安装位置
rpm -ql 包名
选项:
-l 列表(list)
-p 查询未安装包信息
查询系统文件属于那个RPM包
rpm -qf 系统文件名
选项:
-f 查询系统文件属于哪个软件包
查询软件包的依赖性
rpm -qR 包名
rpm -qRp 包全名(查询未安装包的依赖性)
RPM包校验
rpm -V 包名
验证内容中的8个信息的含义:
S 文件大小是否改变
M 文件的类型或文件的权限(rwx)是否被改变
5 文件MD5校验和是否改变(可以看成文件内容是否改变)
D 设备的中,从代码是否改变
L 文件路径是否改变
U 文件的所有者是否改变
G 文件的所属组是否改变
T 文件的修改时间是否改变
RPM包中文件提取
rpm2cpio 路径+包全名 | cpio -idv .绝对路径
rpm2cpio
#将rpm包转换为cpio格式的命令
cpio
#是一个标准工具、它用于创建软件档案文件和从档案文件中提取文件
RPM 包管理-yum在线管理
IP地址配置
先用命令ifconfig查看网关,我的是ens33,然后执行下列命令,注意最后一个改为你自己的网关:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
然后将文件里的OMBOOT=“no"改成OMBOOT=“yes",保存退出。
再用以下命令重启网络服务:
service network restart
现在就可以ping通百度了。
如果无法ping通的可以参考下面这篇文章:
VMware下centos7配置静态ip并解决ping不通百度的问题
网络yum源
网络yum源本身已经配好了,不需要我们再配置,我们下面来看看它的配置文件的含义就好了。
首先打开配置文件:
vi /etc/yum.repos.d/CentOS-Base.repo
下面来解释一下红框中的东西是什么含义:
[base] 容器说明,要放在[]中
name 容器说明,可以随便写
mirrorlist 镜像站点,可以注释掉
baseurl yum源服务器的地址。默认是CentOS官方的yum源服务器, 可以改成其他yum源地址
enable 不写或写成
yum命令
查询
yum list #查询所有可用软件包列表
yum search 关键字 #搜索服务器上所有和关键字相关的包
安装
yum -y install 包名
升级
yum -y update 包名
卸载
yum -y remove 包名
yum软件组管理命令
yum grouplist #列出所有可用的软件组列表
yum groupinstall 软件名 #安装指定软件组,注明可以由grouplist查询出来
yum groupremove 软件组组名 #卸载指定软件组
光盘yum源搭建
首先挂载光盘:
mount /dev/cdrom /mnt/cdrom
进入目录:
cd /etc/yum.repos.d/
然后让网络yum源文件失效,只有网络yum源文件失效光盘yum源文件才起作用。
注意只有下图红框圈出的为光盘yum源,也就是其他7个都是网络yum源文件。
这时我们将网络yum源的名字改一下就可以让其失效。
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-x86_64-kernel.repo CentOS-x86_64-kernel.repo.bak
下面再来修改光盘yum源文件:
vim CentOS-Media.repo
这样就搭建好光盘yum源了,用光盘yum源的好处是可以离线下载,且下载更快。
但版本不会自动更新,即下载的可能不是最新版本。
源码包管理
源码包和RPM包的区别(安装位置)
RPM包安装位置
安装在默认位置
源码包安装位置
安装在指定位置,一般是**/usr/local/软件名/**
安装位置不同带来的影响
- RPM包安装的服务可以使用系统服务管理命令来管理。例如RPM包安装的Apache的启动方法有两种:
#直接通过绝对路径开启服务
/etc/rc.d/init.d/httd start
#利用systemctl服务管理命令开启服务,使用systemctl会自动到绝对路径下去找httpd
systemctl start httpd
- 源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中,只能通过绝对路径进行服务管理。
源码包安装过程
安装准备
- 安装C语言编译器
rpm -q gcc
- 下载源码包
安装注意事项
- 源代码保存位置:/usr/local/src/
- 软件安装位置:/usr/local/
源码包安装过程
-
下载源码包
我是从官网下载的,然后通过软件WinSCP将安装包转到Linux下。
然后在Linux的home目录下就有这个安装包了。
-
解压缩下载的源码包。
tar -zxvf httpd-2.4.52.tar.gz
- 进入解压缩目录。
cd httpd-2.4.52/
在目录下有一个叫ISTALL的文件,我们打开它,里面有安装步骤,我们照做就行。
- ./configure 软件配置与检查
- 定义需要的功能选项。
- 检测系统环境是否符合安装要求。
- 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用 于后续编辑。
./configure --prefix=/usr/local/apache2
-
make 编译
- 若前面有报错,则用命令make clean清空编译产生的临时文件
-
make install 编译安装
-
安装完毕,启动
/usr/local/apache2/bin/apachectl start
这时会有一个报错,但不影响使用。
然后在浏览器中输入我们虚拟机的ip地址,就能显示It works!
源码包的卸载
不需要卸载命令,直接删除安装目录即可,不会遗留任何垃圾文件。
rm -rf /usr/local/apache2/
源码包安装和RPM包的选择
要根据这个软件包的用途进行选择,如果是对外提供访问的,访问量大,则用源码包,源码包经过编译,计算效率更高。
如果不对外提供访问,则可以用RPM包进行安装。
脚本安装包
什么是脚本安装包
- 脚本安装包不是独立的软件包类型,常见安装的是源码包。
- 是人为把安装过程写成自动安装的脚本,只要执行脚本,定义简单参数,就可以完成安装。
- 非常类似于Windows下软件的安装方式。
下面已安装软件包Webmin为例进行演示:
- 软件下载,网址。
- 解压,进入目录。
tar -zxvf webmin-1.984.tar.gz
cd webmin-1.984
-
执行安装脚本。
目录下的setup.sh就是安装脚本
./setup.sh
全部回车默认即可,我这里的默认端口号是10000,安装完毕后,在浏览器输入ip地址加端口号即可访问。
参考资料:
[1]https://blog.csdn.net/qq_33355821/article/details/100667144
[2]https://www.bilibili.com/video/BV1mW411i7Qf