Linux之yum解读及程序包安装
在Linux常用的命令安装工具中,rpm是一个功能非常强悍的软件包管理系统,它促使在Linux下安装、升级和删掉软件包的工作显得容易,而且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。
然而rpm有一个缺点,未能解决包的依赖性,也就是说,当我们用rpm安装A包的时侯,须要依赖于B包,但运用rpm安装A包前必须自动安装B包,之后就能安装A包。
假如用yum安装A包的话,yum会先手动安装B包,以解决A包的依赖性。
而yum是哪些?
YUM:YellowdogUpdateModifier,rpm的后端程序,拿来解决软件包相关依赖性,可以在多个库之间定位软件包linux 安装程序,up2date的代替工具linux模拟美国linux主机,以下为yum解读。
yum
yumrepository:yumrepo,储存了诸多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
文件服务器:
ftp://
file:///
yum顾客端配置文件:
/etc/yum.conf:为所有库房提供公共配置
/etc/yum.repos.d/*.repo:为库房的指向提供配置
库房指向的定义:
[repositoryID]
name=Somenameforthisrepository
baseurl=url://path/to/repository/
enabled={1|0}//是否启用该配置
gpgcheck={1|0}//1为开启,0为不验证私钥
gpgkey=URL//私钥地址,可以为本机(/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
或则为光碟的CentOS7x86_64/RPM-GPG-KEY-CentOS-7
或则为远端镜像源的地址)
enablegroups={1|0}//是否容许包组
failovermethod={roundrobin|priority}//默认为:roundrobin,意为随机选购;
cost=默认为1000
yum命令的用法:
yum[options][command][package…]
yum-config-manager–disable“仓库名"禁用库房
yum-config-manager–enable“仓库名”启用库房
显示库房列表:
repolist[all|enabled|disabled]//右图是本博主自己自定义的一个库房列表,
在/etc/yum.repos.d/录下仅有本博主自己的一个*.repo文件,
然而文件里面有多个配置信息,所以,库房列表也显示多个
这儿再度说明一下,当库房指向的配置中enabled=1,
则为启用,yumrepolist中还会显示该库房列表
显示程序包:
list
#yumlist[all|glob_exp1][glob_exp2][…]
#yumlist{available|installed|updates}[glob_exp1]
[…]
安装程序包:
installpackage1[package2][…]
reinstallpackage1[package2][…](重新安装)
升级程序包:
update[package1][package2][…]
downgradepackage1[package2][…](降级)
检测可用升级:
check-update
卸载程序包:
remove|erasepackage1[package2][…]
查看程序包information:
info[…]
查看指定的特点(可以是某文件)是由那个程序包所提供:
provides|whatprovidesfeature1[feature2][…]
清除本地缓存:
clean[packages|metadata|expire-cache|rpmdb|plugins|all]
建立缓存:
makecache
搜索:searchstring1[string2][…]
以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities:
deplistpackage1[package2][…]
查看yum事务历史:
history[info|list|packages-list|packages-info|
summary|addon-info|redo|undo|
rollback|new|sync|stats]
yumhistory
yumhistoryinfo15//查看yumhistoryid为15的操作
yumhistoryundo15//撤消yumhistoryid为15的操作
日志:/var/log/yum.log
因为我historyinfo15是一个安装gcc的操作,所以我的命令yumhistoryundo15就是卸载gcc的操作
安装及升级本地程序包:
localinstallrpmfile1[rpmfile2][…]
(用install取代)
localupdaterpmfile1[rpmfile2][…]
(用update取代)
包组管理的相关命令:
grouplist[hidden][groupwildcard][…]
groupinstallgroup1[group2][…]
groupupdategroup1[group2][…]
groupremovegroup1[group2][…]
groupinfogroup1[…]
这儿值得注意的是,一般包组名都不是一个看起来连续的字符,而是一个中间有空格的字符串如DevelopmentTools等
(PS:这儿的包组就是一开始的时侯,安装Linux系统可以选择的包组)
所以在使用yumgroupinstallgroupname安装包组的时侯,须要加双冒号"",否则难以辨识
怎样使用光碟当做本地yum库房:
(1)挂载光碟至某目录,比如/media/cdrom
#mount/dev/cdrom/media/cdrom
(2)创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
yum的命令行选项:
–nogpgcheck:严禁进行gpgcheck
-y:手动回答为“yes”
-q:沉静模式
–disablerepo=repoidglob:临时禁用此处指定的repo
–enablerepo=repoidglob:临时启用此处指定的repo
–noplugins:禁用所有插件
yum的repo配置文件中可用的变量:
$releasever:当前OS的发行版的主版本号
$arch:平台linux 安装程序,i386,i486,i586,x86_64等
$basearch:基础平台;i386
$YUM0-$YUM9:自定义变量
实例:(当我们在实际生产工作中,管理的服务器是大量的,且有可能每一台的配置都有所不同,这么是否要每一台的yum库房指向文件都要配置一次呢,答案是否定的)
$releasever/$basearch/
创建yum库房:
createrepo[options]
no.1复制库房安装包至自定义目录,自定义目录为自创的yum库房
no.2在yum库房下运行命令createrepo.(.为当前目录),运行成后会生成一个repodata,一个yum库房的标记文件
no.3安装yum库房的rpm包
以下为创建yum库房,并安装tree
其实,安装库房没有的rpm包是会报错的
====================================================================================================================================
程序包编译安装:
若要在Linux系统上安装软件,
首先要有源码(开放源码;由于linux是开源系统),
之后解压源码包,源码包只不过是程序员编撰的代码
以下步骤在解压源码包的目录下进行
接着是编译,编译是由于机器难以看懂人类语言,通过编译软件如gcc等,编译成二补码文件,机器能够看懂(在解压源码包的目录下进行)
之后make建立应用程序文件(在解压源码包的目录下进行)
最后就是makeinstall安装程序(在解压源码包的目录下进行)
相较于Windows安装软件,Windows执行应用程序相当于Linux的makeinstall这一步,虽然简单,但因为Windows是闭源,未能自定义软件的功能,而Linux的开源可以编撰文件的个别数组,以达到自定义软件的功能(这是开源的益处)
以安装Apache2为解读:
Application-VERSION-release.src.rpm–>安装后,使用rpmbuild命令制做成二补码格式的rpm包,而后再安装
源代码–>预处理–>编译(gcc)–>汇编–>链接–>执行
源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系C、C++:make(项目管理器,configure–>
Makefile.in–>makefile)
java:maven
C代码编译安装三步骤: