软件的组成
1)二进制可执行文件(可执行文件)
2)库文件(就是这个可执行文件,需要的库文件)
3)配置文件
用来配置软件的功能的。
4)帮助文件
软件包管理器
作用:
用来管理软件的制作、安装、卸载、查找、更新
能RPM够生成1个数据库(记录每个软件的安装位置等信息)
种类:
1)后端工具
直接管理软件包的工具:
RedHat, CentOS, SUSE: 使用 RPM
Debian: 使用 dpt
特别注意:
软件的依赖关系:
软件A的执行过程中,需要使用软件B,就称为A依赖B, A->B
循环依赖: A ->B-1.2 -> C -> A
A ->B-1.1 -> C-1.5
2) 前端工具
能够自动解决的管理软件包之间的依赖关系。
前端工具,是基于后端工具的,能够自动解决软件包的依赖关系
RedHat, CentOS: 使用yum
Ubuntu(个人用户常常使用): apt-get
补充:
软件的安装方式:
1)使用软件的源代码,手动配置,编译,安装
2)使用软件包(rpm软件包,dpt软件包)
如果已经有了软件包: apache-2.2.1-el.x86_64.rpm
就可以直接使用 rpm工具
# rpm -i apache-2.2.1-el.x86_64.rpm
安装时,可能提示你还需要安装该软件包的依赖包,而导致安装失败
此时,就应该考虑使用对应的前端工具(yum或者apt-get)
RPM工具
1)rmp包的命名
例如:qq-9.5.1-2.el5.i586.rpm
软件名-主版本号.子版本号.源代码的发行号-rmp包的发行号.硬件平台.rpm
qq 9 5 1 2.el5 i586
软件包的发行号:
可能包含平行信息。
2.el5 表示是对于红帽企业版5.x发行,第2次发行
2.el6
硬件平台
i586 Intel586芯片
例如:
gcc3.4-3.4.5-alt16.x86_64.rpm
该命名不规范。
2) rpm工具的基本使用
2.1)安装
# rpm -i 包名
安装指定的软件包
# rpm -ivh 包名
安装指定的软件包
-v:显示安装的详细过程
-vv: 显示安装的更加详细的过程
-h 显示安装的进度(用#表示,一个#表示2%的进度)
2.2) 查询类
# rpm -q 包名
查询指定的包是否已经安装
如果某个软件是通过源码安装的,那么用rpm是查询不到的。
# rpm -qa
查询当前系统已经安装的所有软件包
# rpm -qi 包名(软件名)
查询指定软件包(已经安装的)说明信息(描述信息)
# rpm -ql 包名
查询指定的软件包,所生成的文件
# rpm -qf 路径/文件名
查询指定的文件是哪个软件包所安装的。
# rpm -qc 包名
查询指定的软件包的配置文件
需要完整的包名。
例如:
rpm -qc yum-3.2.29-40.el6.centos.noarch
# rpm -qd 包名
查询指定的软件包的帮助文件。
# rpm -q --scripts 包名
查询指定的软件包的脚本文件。
# rpm -qpl 包名
查询如果安装某个软件包后,将要生成哪些文件(还没有安装)
# rpm -qpi 包名
查询指定的软件包(还没有安装的)的说明信息。
2.3)升级
# rpm -Uvh 包名
如果指定的包已经安装,那么就对这个软件包升级。
如果还没有安装,那么就安装!
# rpm -Fvh 包名
如果指定的包已经安装,那么就对这个软件包升级。
如果还没有安装,那么就什么也不做。
2.4)卸载
rpm -e 包名
如果这个软件包,有依赖的软件包,那么将提示相关的依赖包,而拒绝卸载。
如果这个软件包,没有任何依赖包,才会卸载。
rpm -e --nodeps 包名
卸载指定的软件包,而不管依赖关系。
2.4) 校验
# rpm -V 包名
检查指定的软件包是否被非法修改。
2.5)数据库
rpm --rebuilddb
重建rpm软件管理的数据库
rpm --initdb
初始化rpm软件管理的数据库
yum软件管理
1) 介绍:yum是一个后端管理工具,是基于rpm
能够从指定的服务器自动下载所需要的软件包并安装。
能够自动处理软件包的依赖关系,而且能自动下载所依赖的软件包,并安装。
2)基本使用
# yum install httpd
安装指定的软件包
安装过程中,会提示你是否确定要安装。
# yum install httpd -y
安装指定的软件包
安装过程中,不再提示确认。
# yum list
搜索当前可安装的(不是指已安装的)的所有软件包
# yum list httpd
从当前的yum仓库(软件源)中,是否有指定软件包
# yum search http
和yum list的作用类似,
只要软件包的名称中包含指定名称,就把结果列出来。
# yum provides /bin/ls
查询指定的文件是哪个软件包安装的。
# yum remove 包名
卸载指定的软件包,
注意,将同时卸载所有的依赖软件包
注意,一般情况下,尽量不要使用该命令。
可以考虑使用 rpm -e 包名
rpm -e --nodeps 包名
# yum update 包名
更新指定的软件包
# yum grouplist
显示当前系统可以安装的所有组包。
补充:组包,包含多个软件包。
# yum groupinfo 组包名
查询指定的组包的描述信息
# yum groupremove 组包名
卸载指定的组包
# yum groupupdate 组包名
更新指定的组包
# yum repolist
列出当前的所有可以使用的软件库(软件仓库)
# yum repolist all
列出所有的软件仓库。(包括被禁用的软件仓库)
# yum --enablerepo=软件仓库的ID install 包名
从指定的软件仓库中,安装指定的软件包
注意:软件仓库的ID,就是.repo文件中的模块名
# yum --enablerepo=local --disablerepo=base,extra,updates install LNMP
从local软件仓库中安装,而且不从base,extra,updates这些软件仓库中安装指定的软件包LNMP
# yum clean all
删除yum的所有缓存。
使用场合:当改变了yum源改变以后,就应该删除本地的缓存。
注意:软件包安装完成后,这个软件包将保存在缓存中。(默认情况下,不保存缓存的。)
# yum history
查看yum的历史记录
创建自己的yum源
yum服务器端的配置
1) 创建1个目录,用来存放rpm包
# mkdir -p /root/yum
2) 把需要的rpm包存放到该目录
3) 安装createrepo
createrepo是专门用户创建软件仓库的工具。
# yum install createrepo -y
4)初始化软件仓库的索引文件
也就是,对/root/yum/中的所有rpm包,建立1个索引文件。
# createrepo -pdo /root/yum /root/yum
对/root/yum下的所有rpm包,建立索引(repodata),而且把这个索引保存在/root/yum目录下。
补充:
以后,如果在/root/yum目录中添加了新的rpm包,
就应该更新这个索引文件(repodata)
# createrepo --update /root/yum
5) 让yum服务器提供yum服务
可是使用Apache的web服务
更简单的办法,是使用python的http模块。
python -m SimpleHTTPServer 80 & > /dev/null &
以后台的方式运行python的http模块。
客户端的配置
在客户端配置自己的yum仓库
即在/etc/yum.repos.d/下创建.repo文件。
# vim pzj.repo
----------------------------------
[pzj-file]
name=pzj server's file packages
baseurl=http://192.168.1.4
enabled=1
gpgcheck=0
---------------------------------
注意:baseurl支持:http://
ftp://
file://(本地文件系统)
例如:baseurl=file:///root/packages
baseurl如果有多个链接,必须用如下格式:
baseurl=http://192.168.1.4
http://192.168.2.5
htpp://192.18.1.11
至此,就可以在客户端直接使用.
补充:
临时禁止某些软件仓库
# yum install gcc --enablerepo=pzj-file --disablerepo=base,extra,updates
永久禁止某些软件仓库
修改该软件仓库的enalbed的值。
在相应的.repo文件中修改。
例如:CentOS-Base.repo
--------------------------------------------------------
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=0
-------------------------------------------------------------
enabled=0表示禁止使用这个软件仓库。
gpgcheck表示是否检查软件包的合法性。
yum的配置文件
/etc/yum.conf
注意,这个文件是对yum的客户端有效
cachedir 表示缓存目录
keepcache 表示是否使用缓存。
=0时,不使用缓存。
=1时,使用缓存,即软件下载并安装后,该软件包保存在缓存目录中。
默认值为0
logfile 日志文件的位置
exactarch 表示是否只安装和自己架构正确匹配的软件包
gpgcheck 是否对软件包进行有效性和安全性检查。
plugins 是否使用插件