软件包的分类,主要有以下两大类
源码包
二进制包(rpm包,系统默认包)
rpm包由Redhat公司提出,被众多linux发行版所采用。
优点:建立统一的数据库文件,详细记录软件包的安装、卸载等变化信息,能够自动的分析软件包依赖关系。
查询已安装的rpm软件信息:
格式:
rpm -q[子选项] [软件名]
用法:结合不同的子选项完成不同的查询
选项:
-qa:查询已安装的所有rpm软件包列表
-qi:查询指定软件的详细信息
-ql:查询软件包安装的目录、文件列表
-qc:查询某软件包安装后生成的所有配置文件
-qd:查询某软件包安装后生成的所有帮助文件
-q –changelog:查询某软件包制作时随版本变化的changelog信息
-q –scripts:查询某包安装或卸载时执行脚本
示例:
rpm -q bash :查询bash软件,会显示出bash这个软件是由哪个包安装以后才有的。
rpm -qa | grep bash :查询是否已经安装有bash软件包
rpm -ql postfix :查询postfix软件包安装的文件列表
-qf 可查询文件或目录属于哪个rpm软件生成的
格式:
rpm -qf 文件名或目录名
示例:
rpm -qf /usr/bin/vim :查询vim文件属于哪个rpm软件
查询未安装的rpm包文件:
格式:
rpm -qp[子选项] rpm包文件
用法:结合不同的子选项完成不同的查询
选项:
-qpi:查看该软件的详细信息
-qpl:查看包内所包含的目录、文件列表
示例:
rpm -qpi ethtoo….rpm :查看该包的详细信息
rpm -qpl ethtool…rpm :查看该包内包含的目录、文件列表
安装及升级rpm软件
格式:
rpm [选项] rpm包文件
用法:不同的选项适用于不同的情况
选项:
-i:安装一个新的rpm软件包
-U:升级软件、若未安装,则进行安装。
-h:以“#”号显示安装的进度
-v:显示安装过程中的详细信息
-F:更新某个软件包,若未安装,则放弃安装。
–force:强制安装、升级指定的rpm软件包
–nodeps:在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系,忽略依赖关系(不推荐使用)
-qR:查询软件包的依赖性
-qRp:查询未安装软件包的依赖关系
卸载rpm软件包
格式:
rpm -e 软件名
示例:
rpm -e links :卸载links这个软件
rpm包的依赖关系:
树形依赖:a-b-c
解决办法:把依赖包安装上
环形依赖:a-b-c-a
解决办法:一次性安装这几个包
模块依赖:依赖于某个包中的某个程序
解决办法:在查询网站www.rpmfind.net中搜索这个程序所在的包,然后安装就可以了。
解决软件包的依赖关系
安装有依赖关系的多个软件时:
被依赖的软件包需要先安装
可同时指定多个rpm包文件进行安装
卸载有依赖关系的多个软件时
依赖其他程序的软件需要先卸载
可同时指定多个软件名进行卸载
维护rpm数据库:
当rpm数据库受到破坏时,可重建数据库
rpm –rebuilddb 或者 rpm –initab
查询二进制程序依赖的库文件
ldd /PATH/TO/BINARY_FILE
rpm包校验:
格式:
rpm -V 已安装的包名
-V:校验指定rpm包中的文件
检验过程中输出的内容信息解释如下:
S:文件的大小是否改变
M:文件的类型或文件的权限是否改变
5:文件MD5校验个是否改变(可看成是文件内容是否改变)
D:设备的主从代码是否改变
L:文件的路径是否改变
U:文件的属主是否改变
G:文件的属组是否改变
T:文件的修改时间是否改变
rpm包的文件提取
作用:当误删除命令或者误删除某个rpm包中的文件时可以用次命令
格式:
rpm2cpio 包全名 | cpio -idv .文件绝对路径
YUM
yum是通过分析rpm的标头数据后,根据各软件的依赖关系制作出有依赖关系时的解决方案,然后可以自动处理软件的依赖性问题,以解决软件安装的依赖性问题。
yum的配置文件:
主配置文件: /etc/yum.conf 为各仓库指向提供公共配置文件
各仓库自定义: /etc/yum.repos.d/*.repo 为每一个仓库提供特有的配置
仓库文件解释:
仓库文件应以.repo结尾,每个repo配置文件中可以配置一至多个仓库
[main] :提供公共的配置信息
[仓库id]:对于当前系统的yum来讲,此仓库id用于唯一标识此仓库指向,必须唯一
name:当前仓库的描述信息
baseurl:指明仓库的访问路径
路径支持类型:
ftp服务:ftp://SERVER/PATH/TO/REPOSITORY
http服务:http://SERVER/PATH/TO/REPOSITORY
本地目录:file:///PATH/TO/REPOSTIROY
enabled={1|0}:当前仓库是否开启,1开启,0关闭,默认不写为开启
gpgcheck={1|0}:是否对程序包校验,1开启,0关闭,默认不写为开启
gpgkey= :指明校验文件的路径
yum的使用:
格式:
yum [选项] [命令] [包名…]
常用命令:
install :安装
update :升级
downgrade :降级
check-update:检查可用升级
remove:卸载,所有依赖于正卸载的程序包的程序包会被一并卸载
reinstall:重新安装
search 关键字:根据关键字搜索软件包
list:列表查看
info:查看简要信息
provides:查看某特性是由哪个软件包所提供的
chean all:清理本地缓存
groupinstall:安装包组
groupupdate:升级包组
grouplist:列表查看包组
groupremove:卸载包组
groupinfo:查看包组信息
history:查看yum事物历史
help:帮助信息
注意:安装、查询、卸载时只需提供包名即可,安装时如果某包在不同的仓库中有多个不同的版本,默认会安装最新的,如果要安装指定版本,就要指明install 包名-版本
yum命令的可选项:
-y:自动回答yes
–disablerepo=:临时禁用在配置文件中配置并启用的某个仓库
–enablerepo=临时启用指定的某仓库
–nogpgcheck:禁止做包校验
yum中的变量:
这些变量用来保存当前平台的相关信息,这些常用的变量有以下这些:
①:$raleasever:当前OS发行版的住版本号;例如:Centos6.6 x86_64,主板吧号为6
②:$arch:平台 例如:i386 i486
③:$basearch:基础平台,例如:i686,i586,i486,i386的基础平台同为i386
例如:
在yum的配置文件中定义的baseurl路径为baseurl=http://repo.abc.com/centos/$relrasever/$basearch 且当前的系统
为Centos6.6 x86_64,实际路径就为http://repo.abc.com/centos/6/x86_64
制作本地yum源
使用本地yum源的方式有两种:
1、直接使用光盘做为yum源,仅限本机使用
2、创建本地yum仓库,然后使用http或者ftp等方式向外提供yum仓库
使用光盘作为yum源的做法:
先挂载光盘,例如:mount /dev/sr0 /media/cdrom
在/etc/yum.repos.d目录下新建以.repo结尾的仓库文件,内容如下
[bash]
baseurl=file///meida/cdrom
gpgecheck=0
这是最简单的创建方法
创建本地yum源
1、首先安装createrepo程序包
2、确定repository的输出方式:
a.本地输出:提供一个放置rpm包的本地路径;
file类型
b.网络输出:提供一个服务器.ftp或者http服务
ftp服务:
先安装vsftpd程序包
文件放置在/var/ftp/pub目录中
启动服务
http服务:
先安装httpd程序包
文件放在/var/www/html目录中
启动服务
在准备好的目录中导入rpm包文件
对此目录执行createrepo命令生成repository目录
完成
源码编译安装程序:
使用源码包编译安装的优点:
可获得最新的软件版本,及时修复bug
根据用户需要,灵活定制软件功能
应用场合:
安装较新版本的应用程序时
当前安装的程序无法满足需要时
需要为应用程序添加新的功能时
Tarball封包
.tar.gz和.tar.bz2格式的居多
完整性校验:
计算MD5校验和,并与官方提供的值相比较,判断是否一致
格式:
md5sum 源码包、
源代码组织格式:
多文件:文件中的代码之间很有可能存在跨文件依赖关系
确认源码包的编译环境:
1、编译开发工具包组:
Development tools
Server Platform Development
Desktop Platform Development
Debug Tools
2、被依赖的程序包的开发组件
①编译安装被依赖的程序
②安装相关程序的名称中包含devel的子包
项目管理工具:make
编译时可能需要按特定的次序进行编译,此时,一般会用到项目管路工具对其进行管理;
构建工具会调用合适的编译器,并根据配置文件makefile中定义的次序对源代码文件进行编译
注意:1、每个项目的程序员开发完成某版本之后,会使用autoconf为程序代码生成一个脚本文件:configure
功能:此脚本会收集当前系统上的开发环境中所依赖各组件的版本、特性,并检查所依赖的环境是否能满足,最后会根据Makefile.in文件 生成一个makefile文件
2、每个项目的程序员开发完成某版本之后,会使用autoconf为程序代码生成一个makefile模板文件,即Makefile.in
编译安装源码包流程:
下载源码安装包文件
↓
步骤1:tar解包
用途:解压释放源码包到指定的目录
↓
步骤2:./configure配置,生成makefile文件
用途:设置安装目录、安装模块等选项
↓
步骤3:make编译
用途:生成可执行的二进制文件
↓
步骤4:make install安装
用途:复制二进制文件到系统,配置应用环境
↓
测试、应用及维护软件
步骤1:解包
可以根据自己的需求把解压后的包放在任何地方,当习惯上将软件包释放到/usr/src目录中
解包后的源码包文件位置:/usr/src/软件名-版本号/目录中
步骤2:配置
使用源码目录中的.congfigure脚本
执行./configure –help 可查看帮助信息
常用的配置项:
–help:查看帮助信息
–prefix:指定默认安装路径,默认为/usr/local目录下
–sysconfdir:指定配置文件安装路径
–with-CAPABILITY:依赖的程序包
–without-CAPABILITY:不依赖的程序包
–enable-FEATURE:启动某个特性
–disable-FEATURE:禁用某个特性
system types:指明系统类型(交叉编译才会用到)
步骤3:编译
执行make命令 (执行make命令还是在解压后的这个目录中)
执行make命令有时也会出现问题,例如:某个函数不满足要求等等
执行make命令时可加上“-j”选项,-j[n],n代表cpu核心数,表示几个核心同时编译
步骤4:安装
执行make install命令
完成
注意:前几步普通用户可执行,建议使用普通用户身份进行,最后一步根据安装路径的指定,可能会用到管理权限。
程序的运行环境:
将所定义的二进制程序安装路径加入到$PATH变量中去
在/etc/profile.d/目录中的*.sh文件中添加 PATH=$PATH:二进制程序安装路径
linux系统会在特定路径下为应用查找所依赖的库文件:/lib64,/lib,/usr/lib64,/usr/lib 自己编译安装的程序提供的库文件有可能不在系统搜索路径中,解决办法:
编辑/etc/ld.so.conf.d/*.conf文件,添加新库文件搜索路径到此,每行一个
执行ldconfig命令,重新生成库映射缓存ld.so.conf
此命令的常用选项有:
-v:显示命令执行过程的详细信息
-p:打印当前系统ld.so.cache中已经缓存的所有库文件目录及库文件映射列表
复制所有新生成的头文件至/usr/include目录中
创建链接(以apache为例)
ln -sv /usr/local/apache/include /usr/include/httpd
ln -sv /usr/local/apache/include/* /usr/include
修改man的配置文件/etc/man.config文件中使用MANPATH指令指向的路径,让其识别新的帮助信息。
原创文章,作者:ZJM,如若转载,请注明出处:http://www.178linux.com/39105