Chinaunix首页 | 论坛 | 博客
  • 博客访问: 115030
  • 博文数量: 42
  • 博客积分: 932
  • 博客等级: 准尉
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-18 22:33
文章分类
文章存档

2011年(42)

分类: LINUX

2011-08-04 20:38:52

第11讲的主要内容就一个LINUX的软件包安装和管理相关的内容!
 软件包的格式和组成:
LINUX安装软件俩种方式:第一种是源代码安装,这种需要编译安装!
                       第二种是编译好的二进制格式
软件包安装到系统后有四部分组成:
配置文件
二进制程序
库文件
帮助文件
 
先说下库文件这里的库文件和系统的标准库是不相同的!
LINUX系统里从软件角度分为俩大类:
一系统标准库:安装操作系统式由glibc的安装包所安装的,这是一个操作系统安装安装完成后必有的能被其他额外软件调用的库,称为通用库或标准库。
二程序附带的库:安装软件时自带的库文件,这样的库文件是程序要调用但是标准库里没有的或者功能更强大的库文件。
这里会产生一个问题,软件的依赖关系,大多都是因库文件的依赖造成的!这个我还没真正的亲身经历过所以等以后有经验了再补充这方面的东西!下面说说LINUX中软件包得安装路径
软件包默认的安装路径
/            操作系统自身启动所需要的令软件都放在这里并且必须放在这里
/usr         操作系统自我管理功能使操作系统完整所需要的最基本软件存储的路径
/usr/local   第3放软件丰富功能的程序存储的路径
自定义路径一般放在
/usr/local/文件名
     
上面已经说了软件包安装后由4部分组成所以软件包安装后即使是安装再以上的路径下,所有的4部分也分散存储在特定的路径下!如下:
/  下的软件4部分存储的位置 配置文件:/etc,二进制文件:/bin,/sbin,库文件:/lib,帮助文件:/usr/share/man
/usr  配置文件:/etc,二进制文件:/usr/bin,/usr/sbin 库文件:/usr/lib,帮助文件:/usr/share/man
/usr/local 配置文件:/usr/local/etc,二进制文件:/usr/local/bin,/usr/local/sbin,库文件:/usr/loval/lib,帮助文件:/usr/local/share/man
 
再归类总结下吧:
配置文件路径:/etc,/usr/local/etc,/usr/local/APP/etc
二进制文件程序:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin,/usr/local/APP/bin,/usr/local/APP/sbin
库文件:/lib,/usr/lib,/usr/local/lib,/usr/local/APP/lib
帮助文件:/usr/share/man,/usr/local/share/man,/usr/local/APP/share/man
软件运行时系统是如何找到这些路径以保证软件能正常工作呢?
一般配置文件是不用系统去找的,二进制程序被调用的时候自己能找到配置文件,这是在编译的时候已经指定的!所以关键就是找2进制文件程序的路径!这些路径被定义在一个变量中之前也提到过!
PATH 可以用echo $PATH来查看到底系统会在那些路径下找这些外部命令对应的二进制文件路径,所以当自定义安装了某些软件并且没有安装在$PATH所包含的路径下时,就要自己编辑PATH这个变量的值来使系统能够找到这个二进制文件保证软件的正常运行,系统能够找到的库文件也是有地方存储和定义了这些路径,库文件路径定义的配置文件 /etc/ld.so.conf 可以用VIM编辑 也可以写在 /ld.so.conf.d目录下以.conf结尾的文件中 ,定义帮助文件路径的配置文件 /etc/man.config文件,在此文件中想要添加自己保存的文件路径进去的方法 MANPATH 加路径即可。
 
 
二进制格式安装包的俩种:LINUX是开源的,因此开发出来的软件都是源代码包!基本上没有二进制的,而能自己将源码包编译安装的人很少,因此为了方便使用,有专门的人将这些源码包做成二进制格式!上面已经说了软件包安装完成后有4部分组成,这些部分在安装时怎么存放怎么管理,是由软件包管理器分类管理的,然而不同的人或公司开发的二进制文件和管理器又不相同,因此相同的软件被做成了很多不同格式的软件包就是这个原因!
例如:redhat的软件包都以.apm结尾只接受redhat管理器的管理 debian,只接受.dep结尾的软件包

因为我们学的是REDHAT因此就只接触了Redhat方面的!
redhat的包管理器RPM是用perl编写的,最初叫Redhat Package Hanger后更名为RPM is Package Manage。
redhat软件包得命名格式package-version-release.arch.rpm这个名字的格式 包名-版本号-发行号.平台.rpm   
如:httpd-2.2.19 这是源码包得版本主版本号.次版本号.修正号-->httpd-2.2.19-1发行号-->httpd-2.2.19-1.el5(发行商的版本号).i386适用的平台.rpm  noarch适用所有平台
/var/lib/rpm 软件包数据库管理rpm,里面存储了所有当前系统安装的软件包的相关信息!这个数据库坏了,一切就完了!
下面看看安装过程首先要说明如果使用rpm安装通常是安装在标准路径下的无法自定义安装的!要想自定义安装通常是在编译源代码的时候才能自定义安装!
 
 

rpm五大功能:
查询,安装,卸载,升级,校验

查询:
 rpm -q 查询
 rpm -qa  查询所有软件包 只显示名字与版本号
 rpm -q package_name  查看特定软件包是否安装了及版本
 rpm -ql package_name 能查看包安装完成后生成了那些文件
rpm -qc package_name 可以查看安装包完成后生成了那些配置文件
rpm -qd               可以查看安装完成后生成了那些文档
rpm -qf file_path(文件路径) 可以查看某文件是有那个安装包生成的
rpm -qi package_name 查询软件包得摘要信息 能看到软件包得名字 作者 编译时期 版本号 那些人编译的 等等的信息

如 rpm -qa | grep "^b" 可以以名字过滤

安装:
 rpm -i /PATH/TO/FILE
 rpm -ivh +安装包的文件名 进行安装 vh显示安装的过程
 rpm -ivh --nodeps 用于忽略依赖关系直接安装软件包
卸载:
rpm -e package_name 卸载软件包
rpm -e --nodeps 忽略依赖关系直接卸载软件包
升级:
rpm -Uvh /PATH/TO/RPM_FILE 安装和升级俩种功能
rpm -Fvh 纯粹升级,老得版本没装将不升级和安装
        --force 强行升级,忽略错误
 内核不能升级,只能安装 这里说的不能升级的意思是,命令可以用于升级但是实际应用中不能升级 防止新的内核跟系统不兼容造成无法挽回的损失

校验:
  rpm -V package_name 校验软件包能看见软件包得文件是否被人改动
校验信息中的部分说明
S 大小改变 M 权限被改变 5 校验码改变 D 设备文件 主设备号 次设备号改变 U G 属主属组改变 T 修改时间改变
 
rpm管理数据库的重建:此数据库为rpm能完成的功能提供了依据,因此损坏后rpm将失去以上的功能所以要了解下怎么重建这个数据库!只要我们的rpm包都还在数据库就可以使用一下命令重建:
 rpm --rebuilddb  无论此前的库是否存在都重建
 rpm --initdb 重建安装数据库 初始化 以前有则不建
 
 
rpm包的安装与管理:rpm包之间的依赖关系使包的安装异常复杂因此为了解决依赖关系!各个发行商都采用了很多方法!下面还是主要说redhat的解决工具!
早期用update这个工具,没有用过不是很了解不多说!主要说说现在主要流行的yum
yum本身依赖于rpm是rpm的前端,但是能自动解决软件包之间的依赖关系!使我们安装rpm软件包十分方便!
全称:yellowdog Updater Modified
 
yum是如何实现解决依赖关系的呢?
我们可以将yum理解为C/S结构的软件:
客户端yum命令
服务器yum repository 软件仓库 由俩部分组成一个是XML文档,这里面定义了所有rpm包之间的依赖关系,第2部分就是所有的rpm包了!
yum是如何获取软件仓库的信息呢?
 
yum通过三种协议与yum仓库通信
 ftp://
 http://
以上俩种都能通过互联网来获取所需的仓库信息
 file:/// 本地的file协议
要想使yum知道这些仓库的信息我们就要配置yum客户端的配置文件
yum客户端的配置文件
/etc/yum.conf
/etc/yum.repos.d/FILE.repo(必须以repo结尾)
可以为yum配置N个仓库
定义yum仓库的格式redhat对软件包进行了分类管理
[base]系统最基本的软件包
name=Description 描述信息
baseurl= 这是最关键的一项指定yum库的地址
gpgcheck=0
enabled=1 默认等于1 0表示关闭仓库
下面都相同
[VT]虚拟化的相关软件包
name=VT
baseurl=
gpgcheck=0
[Cluster]关于集群的软件包
name
baseurl
gpgcheck
[ClusterStorage]关于集群存储的软件包
name
baseurl
gpgcheck
下面说说yum的用法:
 
yum [options][command][package....]
安装:
yum install 直接加安装包的名字即可 可以跟多个名字 中间用空格隔开
升级:
yum update 加要升级的包名即可 如果升级的是内核它会自动给切换为安装而非升级
yum check-update 检查所有可升级的软件包
yum list all 可以查看所有可用软件包的名字
         installed available
卸载软件包
remove +软件包得名字
清除缓存
yum clean all 清除缓存的所有信息
yum provides | whatprovides FILE 用于查询某个文件是由哪个文件生成的
 
查询一个rpm包得摘要信息
yum info=rpm -qi

grououinstall
groupeupdate
本地安装软件包
yum localinstall RPM_FILE 会明确检查签名信息。
  --nogpigcheck 用于不要检查软件包得签名信息。
reinstall 重装某个软件包
downgread 降级
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
阅读(1007) | 评论(0) | 转发(0) |
0

上一篇:LINUX学习之路10

下一篇:LINUX学习之路12

给主人留下些什么吧!~~