一、YUM
YUM: Yellowdog Update Modifier。YUM是通过分析RPM的标题相关数据后,根据软件的相关性制作出的软件安装时属性依赖的解决方案,其可以自动处理软件之间的依赖问题,以尽量方便用户解决软件在安装、删除或升级的问题。
YUM分为YUM客户端和YUM服务器,而我们经常使用到的就是客户端。
客户端的配置文件分两种:
/etc/yum.config:为所有的仓库提供公共的配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
我们在安装软件时通常使用的yum仓库有本地yum和服务器yum。
本地yum源配置的过程:
(1)首先要挂载发行版的磁盘镜像,相当于创建本地的yum服务器
如上图所示,指明要挂在的设备类型为iso9660,并且挂载至/media/cdrom此目录。查看挂载完成之后的,查看/media/cdrom此目录中的文件。
(2)仓库指向的配置,即在/etc/yum.repos.d/此目录下创建一个.repo结尾的文件。其内容如下:
注意:如果/etc/yum.repos.d/这个文件夹下有多个repo文件,有可能会发生冲突。所以可用两种方法:将其他的repo文件移动到别的目录下;或者将其他的repo文件内enabled此字段值设置为0。
网络yum源配置过程:
(1)仓库指向的配置,即在/etc/yum.repos.d/此目录下创建一个repo结尾的文件。其内容如下:
同样的,如果/etc/yum.repos.d/包含多个repo文件,会发生冲突。解决方法同上。
网络yum中配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号;$arch: 平台;$basearch:基础平台。
显示程序包:
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
注意:支持文件名通配
示例:
1、查看仓库中所有包含php的程序包
2、查看系统上已安装的软包含vi字符的程序包
安装程序包:
yum install package1 [package2] [...]
使用yum可以同时安装多个软件。
reinstall package1 [package2] [...] (重新安装)
升级程序包:
update [package1] [package2] [...]
downgrade package1 [package2] [...] (降级)
查看程序包的相关信息:
yum info [...]
卸载程序包:
remove | erase package1 [package2] [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
搜索:
search string1 [string2] [...]
以指定的关键字搜索程序包名及summary信息;
查看指定包所依赖的capabilities:
deplist package1 [package2] [...]
安装及升级本地程序包:
localinstall rpmfile1 [rpmfile2] [...]
localupdate rpmfile1 [rpmfile2] [...]
包组管理的相关命令:
groupinstall group1 [group2] [...] 安装某一组软件包
groupupdate group1 [group2] [...] 升级某一组软件包
grouplist [hidden] [groupwildcard] [...] 显示当前系统软件包组的相关信息
groupremove group1 [group2] [...] 删除某一包组
groupinfo group1 [...] 显示包组中包含的软件包
二、RPM
rpm命令管理程序包:包含程序的安装、卸载、升级、查询、校验和数据库维护等。
程序包安装
命令格式:rpm {-i|--install} [install-options] PACKAGE_FILE ...
其中[install-options]常用的选项有:
-v:显示更多的安装信息;
-h:以#显示程序包管理执行进度;每个#默认表示2%的安装进度(也有可能显示的#比较少);
--test:测试安装包能不能正确执行;
--nodeps:安装软件包的时候,忽略其相关的依赖关系;
--replacepkgs: 重新安装;
--nosignature: 不检查程序包其来源合法性;
--nodigest:在安装时候,不检查程序包的完整性
--noscipts:在安装程序包的过程中,不执行该程序包中包含的脚本片段
示例:
1、只用-i一个选项
2、使用-ivh三个选项
3、重新安装
再次安装某软件的时候,如下:
使用--replacepkgs选项,重新安装:
程序包升级
命令格式:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
按照第一种命令格式升级:
表示,若安装有旧版程序包,则进行升级;若无旧版程序包,则执行安装操作
按照第二种命令格式升级:
表示,若安装有旧版程序包,则进行升级;反之,如果不存在旧版程序包,则不执行操作。
注意:
(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,可以直接安装新版本内核;
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留;
程序包查询
命令格式:
rpm {-q|--query} [select-options] [query-options]
常用的[select-options]选项:
-a: 所有包
-f: 查看指定的文件由哪个程序包安装生成
-p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供;
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
##CAPABILITY:功能、特性
常用的 [query-options]选项:
--changelog:查询rpm包的changlog
-c: 查询程序的配置文件
-d: 查询程序的文档
-i: information
-l: 查看指定的程序包安装后生成的所有文件;
--scripts:程序包自带的脚本片断
-R: 查询指定的程序包所依赖的CAPABILITY;
--provides: 列出指定程序包所提供的CAPABILITY;
示例:
1、查询某未安装程序包安装之后生成的所有文件;
2、查询是哪个程序包提供了ifconfig命令
3、查询未安装程序包的相关信息
软件的卸载:
命令格式:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--test] PACKAGE_NAME ...
示例:
校验
rpm {-V|--verify} [select-options] [verify-options]
-Vp:某个RPM文件的文件名
-Va:显示整个系统上所有可能被修改过的文件
示例:
校验之后若没显示任何信息,那么说明,该软件所提供的文件没有被修改过。
包来源合法性验正及完整性验正:
完整性验正:SHA256加密算法
来源合法性验正:RSA加密算法
数据库维护
rpm {--initdb|--rebuilddb}
initdb: 初始化
如果事先不存在数据库,则新建之;否则,不执行任何操作;
rebuilddb:重建
无论当前存在与否,直接重新创建数据库;
三、使用createrepo创建本地仓库
第一步:必须先安装createrepo软件包
第二步:选择一个目录存放rpm包,如下图,rpm包存放在/tmp/lcsrpm目录下。
第三步:使用createrepo命令创建本地仓库,如图所示。
创建成功则会在仓库目录下出现repodata目录。
四、使用软件源码进行软件的编译安装
编译C源代码:
前提:需要提供编译过程中要用到的开发库文件以及开发工具。
通过安装软件包组进行记性相关开发环境以及开发工具的安装。
CentOS6安装:"Development Tools", "Server Platform Development"这两个包组;
CentOS7安装:"开发工具"这个包组就可以。
步骤
第一步:先解压源文件压缩包
编译过程在此是在configure目录的父目录中。
第二步:configure脚本
选项:指定安装位置、指定启用的特性--help: 获取其支持使用的选项
选项分类: 安装路径设定: --prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/ --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;Optional Features: 可选特性
--disable-FEATURE --enable-FEATURE[=ARG]Optional Packages: 可选包
--with-PACKAGE[=ARG] --without-PACKAGE
第二步:make
第三步:make install
安装后的配置:
(1) 导出二进制程序目录至PATH环境变量中; 编辑文件/etc/profile.d/NAME.sh export PATH=/PATH/TO/BIN:$PATH(2) 导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf 添加新的库文件所在目录至此文件中;让系统重新生成缓存:
ldconfig [-v](3) 导出头文件
基于链接的方式实现: ln -sv(4) 导出帮助手册
编辑/etc/man.config文件 添加一个MANPATH