Linux第六章 软件包管理
文章目录
- [Linux第六章 软件包管理](#Linux第六章 软件包管理)
简介
windows中的软件包都不能直接在linux中安装使用.
- 软件包分类
源码包 :
源代码开源, 绝大多数使用C语言编写.
比如 : 脚本安装包
二进制包 :
rpm包和系统默认包, 源代码编译成二进制的包, 省略了编译过程, 节约安装时间, 但是不能看到源代码.
比如 : 镜像文件里的包
rpm包管理 - rpm命令管理
rpm包都存放在
挂载目录下的packages目录下
- 包和依赖性
- rpm包命令规则
rpm包全名 : httpd-2.4.6-40.el7.centos.x86_64.rpm
httpd | 软件包名 |
---|---|
2.4.6 | 软件版本 |
40 | 软件发布的次数 |
el7.centos | 适合的linux平台 |
x86_64 | 适合的硬件平台 |
rpm | rpm包扩展名 |
rpm包扩展名都应以rpm结尾, 以便管理员识别.
- rpm包依赖性
a -> b -> c
装c依赖b, 装b依赖a.
- 安装
- 包全名和包名
包全名 : 操作的包是没有安装的软件包时, 使用包全名, 而且要注意路径
包名 : 操作已经安装的软件包时, 使用包名. 是搜索/var/lib/rpm中的数据库.
- rpm安装
rpm -ivh 包全名
参数 :
markdown
-i : 安装
-v : 显示详细信息
-h : 显示进度
--nodeps : 不检测依赖性
- rpm包升级
rpm -Uvh 包全名
-U : 升级
- 卸载
rpm -e 包名
- 查询
- 查询是否安装
rpm -q 包名
markdown
-q : 查询
-a : 所有
-i : 信息
-l : 列表( 安装位置 )
-f : 系统文件属于哪个软件包
-R : 软件包的依赖性
- 校验
rpm -V 已安装的包名
8个信息是否改变
S | 文件大小是否改变 |
---|---|
M | 文件类型或权限是否改变 |
5 | 文件MD5校验和 ( 文件内容 )是否改变 |
D | 设备的中,从代码 |
L | 文件路径 |
U | 文件的所有者 |
G | 文件的所属组 |
T | 文件的修改时间 |
文件类型
c | 配置文件 |
---|---|
d | 普通文档 |
g | 很少见 |
l | 授权文件 |
r | 描述文件 |
rpm包管理 - yum在线管理
yum可以解决rpm安装时软件包的依赖性问题.
red hat 公司yum是要收费的, 而centos是免费的.
yum和rpm都是管理的rpm包. rpm是手动管理, yum是自动管理.
- IP地址配置和网络yum源
- IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33
配置
markdown
{
IPADDR=
GATEWAY=
NETMASK=
DNS=
ONBOOT=yes
}
重启
systemctl restart network
- 网络yum源
默认网络yum源是配置好的, 只要网络是通的, 就可以使用.
vi /etc/yum.repos.d/CentOS-Base.repo
[base] | 软件池( 容器 )名称, 一定要放[]中 |
---|---|
name | 软件池说明, 可随便写 |
mirrorlist | 镜像站点 |
baseurl | yum源服务器的地址 |
enabled | 为1则容器生效, 0为不生效 |
gpgcheck | 数字证书验证, 1为验证, 0为不验证 |
gpgkey | 数字证书的保存位置 |
- yum命令
yum只输入包名即可, 无需输入包全名, 因为yum是自动到服务器上搜索软件包的.
- 查询
yum list
查询所有可用软件包列表
yum search httpd
搜索服务器上所有和httpd相关的包
- 安装
yum install -y 包名
-y : 自动回答yes
- 升级
yum update -y包名
yum update -y : 升级所有软件包, 包括内核, 所以慎用.
- 卸载
yum remove -y 包名
yum卸载会连同依赖包一起卸载, 有的依赖包被linux系统本身依赖, 卸载后系统会出错, 所以尽量不要使用yum卸载, 最好使用rpm来手动卸载.
- 本地yum源
网络yum源是在网上下载的, 下载慢.
本地yum源不需上网, 它是用的镜像当中的rpm包来进行下载的, 安装快, 但是版本不是最新的.
- 挂载镜像
挂载镜像后, 镜像文件会放在挂载点, 供本地yum源使用.
mount /dev/sr0 /opt/centos
- 让网络yum源失效
cd /etc/yum.repos.d
mkdir bak
mv C* bak
将网络yum源文件移动到bak目录中, 使其失效.
- 创建新的yum源文件
yum源文件扩展名必须为.repo
vi local.repo
markdown
{
[centos]
name=centos
baseurl=file:///opt/centos : 镜像的挂载地址
enabled=1
gpgcheck=0
}
- 清空yum缓存
yum clean all
- 列出仓库配置
yum repolist
源码包管理
- 源码包和rpm包的区别
- 安装前
概念上 : rpm包安装快, 源码包安装慢, 能看到源代码.
- 安装后
安装位置 : rpm是安装在系统默认位置, 源码包是手动指定的.
- rpm包安装位置
/etc | 配置文件安装目录 |
---|---|
/usr/bin | 可执行命令 |
/usr/lib | 函数库 |
/usr/share/doc | 软件使用手册 |
/usr/share/man | 帮助文件 |
- 源码包安装位置
一般安装在
/usr/local/软件名/
目录下.
- 安装位置不同带来的影响
rpm包安装的httpd的启动方法:
markdown
{
/etc/rc.d/init.d/httpd start : 通过绝对路径
service httpd start : 通过service命令
}
service命令是通过在rpm包默认的安装路径中搜索服务, 源码包的安装位置不固定, 所以它是不能管理源码包的.
service类似的服务管理命令只能管理rpm包安装的服务.
源码包安装的服务的启动方法:
只能使用绝对路径
- 源码包安装过程
- 安装C语言编译器 -> gcc
yum install -y gcc
- 下载源码包
- 注意事项
源代码保存位置 : /usr/local/src
软件安装位置 : /usr/local
确认安装过程报错 : 安装过程停止, 并出现错误提示.
- 安装过程
\1. 上传源码包
编辑
点击CRT上的secureFX, 将在windows中下载好的httpd压缩包拖拽到linux中.
\2. 解压源码包
tar -zxvf httpd-2.4.9.tar.gz
\3. 进入解压目录
cd httpd-2.4.9/
markdown
{
后续操作都应该在本目录中进行, 否则系统找不到文件.
该目录下有两个大写的说明文件, 每个源码包都有类似的文件.
{
INSTALL : 安装说明
README : 使用说明
}
}
INSTALL
markdown
{
$ ./configure --prefix=PREFIX
{
定义安装位置;
检测系统是否符合安装要求( 是否安装gcc );
将前两项写入Makefile文件, 用于后续的编辑;
}
$ make
编译, 调用gcc, 将源代码编译成二进制码;
$ make install
编译安装;
$ PREFIX/bin/apachectl start
启动;
}
\4. ./configure
markdown
./configure --prefix=/usr/local/apache2.4
apache2.4版本的会出现关于apr的报错, 解决方案如下:
本方案转载至博客园
中用户[yzkwork](https://home.cnblogs.com/u/yuzhaokai0523/)
的博客 : 解决apr报错
\5. make
markdown
make
如果报错, 执行make clean清除make形成的临时文件.
\6. make install
markdown
make install
执行之后会将数据写入/usr/local/apache2.4目录
\7. PREFIX/bin/apachectl start
markdown
/usr/local/apache2.4/bin/apachectl start
启动服务
- 卸载
无卸载命令, 直接删除安装目录即可, 不会遗留任何垃圾文件.
脚本安装包
并不是独立的软件包类型, 常见的安装的是源码包.
人为把安装过程写成了自动安装的脚本, 只要执行脚本, 定义简单的参数, 就可以完成安装.
非常类似于windows下软件的安装方式.