6 软件包管理
6.1 简介
软件包分类:
源码包 源代码(大多数是C语言) 安装时慢,容易报错
>脚本安装包 对源码包进行改装,使安装更简单,不多。
rpm包 二进制包 Ubuntu系列的二进制包不是rpm,这是根本不同
源码包优点:
开源,如果有足够的能力,可以修改源代码
可以自由选择所需的功能
软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高(比rpm高5%)
卸载方便(直接把安装目录删掉)
源码包缺点:
安装过程步骤较多,尤其安装较大的软件集合(如LAMP环境搭建),容易出现拼写错误
编译过程时间较长,安装比二进制安装时间长
因为是编译安装,安装过程中一旦报错新手很难解决
用源码包安装一个Linux大概用3天(老手)
二进制包优点:
包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询、卸载
安装速度比源码包安装快得多
二进制包缺点:
经过编译,不再可以看到源代码
功能选择不如源码包灵活
依赖性
6.2 包命名与依赖性
httpd-2.2.15-15.e16.centos.1.i686.rmp
httpd 包名
2.2.15 版本
15 发布次数
e16.centos 适合的Linux平台
i686 适合的硬件平台 noarch 表示任何Linux版本都可以安装
rpm rpm包扩展名
包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径。安装、升级操作
包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库。查询、卸载操作
树形依赖 a -> b -> c
环形依赖 a -> b -> c -> a 解决办法:a b c 同时安装
RPM包库依赖 以 .so.2 结尾,不是独立的,是某个软件包中的文件
模块依赖 查询网站 www.rpmfind.net,输入xxx.so.2可以查看属于哪个包。
只要把包含此文件的软件安装上即可。
6.3 安装与升级
安装
rpm -ivh 包全名
-i install
-v verbose
-h hash 显示
实验步骤:
1、先将光盘挂载:mount -t iso9660 /dev/sr0 /media
2、cd /media/Packages
3、此时就可用 rpm -ivh 包全名 命令进行安装了
升级
rpm -Uvh 包全名
-U upgrade 升级
卸载
rmp -e 包名
-e erase 卸载
--nodeps 不检查依赖性
6.4 查询
查询功能非常常用
查询是否安装
rpm -q 包名
rpm -qa
-q query 查询
-a all 所有
rpm -qa| grep httpd 此命令查询所有和httpd相关的包安装信息 |管道符
查询软件包详细信息
rpm -qi 包名 #查询已安装的包信息
rpm -qip 包全名 #查询未安装包的信息,这些信息已经在包中写好
-i information 查询软件信息
-p package 查询未安装包信息
查询包中文件安装位置 包的安装位置都是默认的
rpm -ql 包名
rpm -qlp 包全名 查询未安装包打算的位置,已在包中设置好
-l list 列表
查询系统文件属于哪个RPM包
rpm -qf 系统文件名
-f file 查询系统文件属于哪个软件包 etc目录下都是系统的配置文件
查询软件包的依赖性
rpm -qR 包名
rpm -qRp 包全名 查询未安装包的依赖性
-R requires 查询软件包的依赖性
6.5 校验
RPM包校验 判断系统文件是否被更改
rpm -V 已安装包名
-V verify 校验指定RPM包中的文件
例:rpm -V httpd
如果出现任何信息,则表示没有任何修改。
如果有修改,会显示“修改标志位 文件名”
修改标志位有8位信息 点(.)代表未被修改
S 文件大小是否修改
M 文件类型 或者 文件权限(rwx)是否修改
5 文件MD5校验(文件内容是否修改) MD5 -- 一种加密方式
D 设备中,从代码是否改变
L 文件路径是否修改
U 文件所有者是否修改
G 文件所属组是否修改
T 文件修改时间是否修改
文件类型(对应上面的M)
c config file 配置文件
d documentation 普通文档
g ghost file 鬼文件 很少见 就是该文件不应该被这个RPM包包含
l license file 授权文件
r read me 描述文件
6.6 文件提取
目的:从rpm包中提取指定文件,用于恢复某些文件。
rpm2cpio 包全名 | cpio -idv . 文件绝对路径
#rpm2cpio命令可将rpm包转换为cpio处理格式
#cpio 是一个标准工具,用于创建软件档案文件和从档案文件中提取文件
cpio 选项 < [文件|设备]
-i copy-in模式,还原
-d 还原时自动新建目录
-v 显示还原过程
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.e16.i686.rpm | cpio -idv . /bin/ls
提取RPM包中ls命令到当前目录的/bin/ls下
6.7 yum在线管理
yum在线管理 redhat收费 centos免费
内网:需配置ip 子网掩码
公网:还需配置 网关 DNS
IP地址配置:
方法一
setup redhat系列专有命令
service network restart
方法二
vi /etc/sysconfig/network-scripts/ifcfg-eth0
把 ONBOOT="no"改为 ONBOOT="yes" #启动网卡
如果文件中没有设置DNS,则添加DNS1=1114.114.114.114
service network restart
网络yum源:
(.repo都是合法的yum源 默认是CentOS-Base.repo生效)
配置文件为/etc/yum.repos.d/CentOS-Base.repo
这个文件默认已经配置好了,不需要更改
[base] 容器名称,一定要放在[]中
name 容器说明,可以自己随便写
mirrorlist 镜像站点
baseurl yum源服务器的地址。默认是CentOS官方yum源服务器,如果觉得慢,可以改成别的yum源地址
enabled 此容器是否生效,不写默认为1,代表生效
gpgcheck RPM数字证书是否生效,如果是1,则生效
gpgkey 数字证书公钥文件保存位置,不用修改
查询:
yum list #查询所有可用软件包列表
yum search 关键字 #搜索服务器上所有和关键字相关的包 yum全用包名 RPM则有包名和包全名之分
安装:
yum -y install 包名
-y 自动回答yes
例:yum -y install gcc
升级:
yum -y update 包名
例:yum -y update //此命令升级所有软件包,包括内核,慎用!
卸载:
yum -y remove 包名
#不要用yum卸载软件包!!!
会将其依赖的包卸载,出现别的问题。
服务器使用的原则:
1.最小化安装
2.使用什么软件,安装什么软件
3.尽量不卸载软件
yum软件组管理命令:
yum grouplist #列出所有可用的软件组列表
yum groupinstall 软件组名 #安装指定软件组,组名可用grouplist查询,如果组名有空格,用双引号引起来
yum groupremove 软件组名 #卸载指定软件组
6.8 yum光盘管理
1> 挂载光盘 mount -t iso9660 /dev/sr0 /media
2> 让网络yum源文件失效
方法一:将所有选项都置成enable=0;
方法二:yum源检测的是.repo后缀名 所以改名即可
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
3> 修改光盘yum源
vim CentOS-Media.repo
修改两处:
baseurl=file:///mnt/cdrom/ #地址为自己的光盘挂载点,并把其他地址注释掉
enabled=1 #让此yum源生效
yum list | more 分屏显示
注释有严格格式,最好单行顶格写注释
6.9 源码包与RPM包的区别
安装之前:概念上的区别
安装之后:安装位置不同
RPM包 系统指定的默认位置,不要人为手工修改安装目录
/etc/ 配置文件
/usr/bin/ 可执行命令
/usr/lib/ 函数库
/usr/share/doc/ 使用手册
/usr/share/man/ 帮助文件
源码包 人为手工指定安装位置
一般是 /usr/local/软件名/
安装位置不同带来的影响:
RPM包安装的服务可以使用系统服务管理命令(service)来管理,--启动、重启、关闭
例如RPM包安装的Apache的启动方法是:
/etc/rc.d/init.d/httpd start #/etc/rc.d/init.d/是所有服务的安装路径 或者
service httpd start redhat系列专有命令,工作原理:去/etc/rc.d/init.d/目录下去找httpd服务
源码包安装的服务只能通过绝对路径进行管理:
/urs/local/apache2/bin/apachectl start
6.10 源码包的安装过程
源码包安装注意事项:
源码包保存位置 /usr/local/src/
软件安装位置 /usr/local
如何确定安装过程报错?安装过程停止并出现error、warning、no的提示
安装Apache源码包过程:
1、下载源码包到/usr/local/src/
2、解压缩下载的源码包
3、(可选)du -sh 文件名/目录 查看文件夹大小 disk usage
summarize
human
4、进入解压缩目录
两个重要文件:INSTALL(安装说明文件)、README(使用说明文件)
5、查看INSTALL文件内容
INSTALL关键内容
$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachectl start
./configure 软件配置与检查,有三个作用
>定义需要的功能选项
>检测系统环境是否符合安装要求
>把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
6、./configure --prefix=/usr/local/apache2 #跟安装路径,此命令完成后,出现Makefile文件
7、make #编译;如果出错,make clean 命令来清空产生的临时文件
8、make install #编译安装,此步真正向安装目录写入文件
9、安装完成后,/usr/local/apache2/bin/apachectl start
源码包的卸载:
不需要卸载命令,直接删除安装目录即可
不会遗留任何垃圾文件
源码包 和 RPM包 如何选择?
用途
对外访问(如httpd),则采用源码包安装
本地应用(如gcc),则采用RPM包
6.11 脚本安装包
>脚本安装包并不是独立的软件包类型,常见安装的是源码包
>是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装
>非常类似于Windows下软件的安装方式
常见的脚本安装包是硬件的驱动
./setup.sh
1 下载软件
2 解压缩,并进入解压缩目录
3 执行安装脚本