Linux之 yum详解 及 程序包安装
在Linux常用的命令安装工具中,rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。
但是rpm有一个缺点,无法解决包的依赖性,也就是说,当我们用rpm安装A包的时候,需要依赖于B包,但运用rpm安装A包前必须手动安装B包,然后才能安装A包。
如果用yum安装A包的话,yum会先自动安装B包,以解决A包的依赖性。
而yum是什么?
YUM: Yellowdog Update Modifier, rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,up2date的替代工具,以下为yum详解。
yum
yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
文件服务器:
ftp://
http://
file:///
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0} //是否启用该配置
gpgcheck={1|0} //1为开启,0为不验证公钥
gpgkey=URL //公钥地址,可以为本机(/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
或者为光盘的 CentOS\ 7\ x86_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,
则为启用,yum repolist中就会显示该仓库列表
显示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] […]
# yum list {available|installed|updates} [glob_exp1]
[…]
安装程序包:
install package1 [package2] […]
reinstall package1 [package2] […] (重新安装)
升级程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] (降级)
检查可用升级:
check-update
卸载程序包:
remove | erase package1 [package2] […]
查看程序包information:
info […]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2] […]
清理本地缓存:
clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]
构建缓存:
makecache
搜索: search string1 [string2] […]
以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities:
deplist package1 [package2] […]
查看yum事务历史:
history [info|list|packages-list|packages-info|
summary|addon-info|redo|undo|
rollback|new|sync|stats]
yum history
yum history info 15 //查看yum history id为15 的 操作
yum history undo 15 //撤销yum history id为15 的 操作
日志 : /var/log/yum.log
由于我history info 15 是一个安装gcc 的操作, 所以我的命令 yum history undo 15 就是卸载 gcc 的操作
安装及升级本地程序包:
localinstall rpmfile1 [rpmfile2] […]
(用install替代)
localupdate rpmfile1 [rpmfile2] […]
(用update替代)
包组管理的相关命令:
grouplist [hidden] [groupwildcard] […]
groupinstall group1 [group2] […]
groupupdate group1 [group2] […]
groupremove group1 [group2] […]
groupinfo group1 […]
这里值得注意的是,通常包组名都不是一个看上去连续的字符,而是一个中间有空格的字符串如 Development Tools 等
(PS : 这里的包组就是一开始的时候,安装Linux系统可以选择的包组 )
所以在使用 yum groupinstall groupname 安装包组的时候,需要加双引号" " ,否则无法识别
如何使用光盘当作本地yum仓库:
(1) 挂载光盘至某目录,例如/media/cdrom
# mount /dev/cdrom /media/cdrom
(2) 创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
yum的命令行选项:
–nogpgcheck:禁止进行gpg check
-y: 自动回答为“ yes”
-q:静默模式
–disablerepo=repoidglob:临时禁用此处指定的repo
–enablerepo=repoidglob:临时启用此处指定的repo
–noplugins:禁用所有插件
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台, i386,i486,i586,x86_64等
$basearch:基础平台; i386
$YUM0-$YUM9:自定义变量
实例:(当我们在实际生产工作中,管理的服务器是大量的,且有可能每一台的配置都有所不同,那么是否要每一台的yum仓库指向文件都要配置一次呢,答案是否定的)
http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i384
创建yum仓库:
createrepo [options] <directory>
no.1 复制仓库安装包至自定义目录,自定义目录为自创的yum仓库
no.2 在yum仓库下运行命令 createrepo . (. 为当前目录) , 运行成后会生成一个repodata ,一个yum仓库的标记文件
no.3 安装yum仓库的rpm包
以下为创建yum仓库,并安装 tree
当然 , 安装仓库没有的rpm包是会报错的
====================================================================================================================================
程序包编译安装:
若要在Linux系统上安装软件 ,
首先要有源码(开放源码;因为linux是开源系统) ,
然后解压源码包,源码包只不过是程序员编写的代码
以下步骤在解压源码包的目录下进行
接着是编译 , 编译是因为机器无法读懂人类语言 , 通过编译软件 如 gcc等,编译成二进制文件 , 机器才能读懂 (在解压源码包的目录下进行)
然后 make 构建应用程序文件(在解压源码包的目录下进行)
最后就是 make install 安装程序(在解压源码包的目录下进行)
相较于Windows安装软件,Windows执行应用程序相当于Linux的make install这一步,虽说简单,但由于Windows是闭源,无法自定义软件的功能,而Linux的开源可以编写文件的某些字段 , 以达到自定义软件的功能(这是开源的好处)
以安装Apache2为详解:
Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
源代码–>预处理–>编译(gcc)–>汇编–>链接–>执行
源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系C、 C++: make (项目管理器, configure –>
Makefile.in –> makefile)
java: maven
C代码编译安装三步骤:
下载httpd安装包,也就是Apache的安装包(2.2.29版本比较稳定)
1、 ./configure:(一般来说,我们都先要看一下帮助文件,以了解软件的相关信息: configure –help 或者是 less README )
(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile
(2) 检查依赖到的外部环境 (需要检查,了解)
(3) 最后才运行configure (./configure)
2、 make:根据makefile文件,构建应用程序 (跑的代码比较多,不截图了,记住要在解压的目录里运行)
3、 make install:复制文件到相应路径 (跑的代码比较多,不截图了,记住要在解压的目录里运行)
第一步: configure脚本
选项:指定安装位置、指定启用的特性
–help: 获取其支持使用的选项
选项分类:
安装路径设定:
–prefix=/PATH: 指定默认安装位置,默认为/usr/local/
–sysconfdir=/PATH:配置文件安装位置
System types:支持交叉编译
Optional Features: 可选特性
–disable-FEATURE
–enable-FEATURE[=ARG]
Optional Packages: 可选包,
–with-PACKAGE[=ARG],依赖包
–without-PACKAGE,禁用依赖关系
第二步: make
第三步: make install
PATH=$PATH:/usr/local/apache2/bin
编译安装
安装后的配置:
(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
在 /usr/include/ 目录下创建 /usr/lcoal/apache2/include/ 的软链接
(4) 导入帮助手册
编辑/etc/man.config|man_db.conf文件
添加一个MANPATH
开发工具:
autoconf: 生成configure脚本
automake:生成Makefile.in
注意:安装前查看INSTALL, README
开源程序源代码的获取:
官方自建站点:
apache.org (ASF)
mariadb.org
…
代码托管:
SourceForge.net
Github.com
code.google.com
c/c++编译器: gcc (GNU C Complier)
编译C源代码:
前提:提供开发工具及开发环境(要先安装Development Tools )
开发工具: make, gcc等
开发环境:开发库,头文件
glibc:标准库
通过“包组”提供开发组件
CentOS 6: "Development Tools",
"Server Platform Development",
原创文章,作者:hunter,如若转载,请注明出处:http://www.178linux.com/39458
评论列表(1条)
文章思路清晰,整篇博客能让人看到很多专业性所在,还能看出很用心的地方,革命尚未成功,同志仍需努力啊,加油!