软件管理
软件的组成 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 是否使用插件