系统管理之程序包管理(二)yum详解:
上节向大家介绍了程序包管理的理论和rpm命令的使用,本篇文章接着向大家介绍rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。
一 概论:
Centos:yum,dnf 两个rpm前端工具
YUM :yellow dog, Yellowdog,Update Modifier
rpm的前端工具,用于解决软件包相关依赖性,可以在多个库之间定位软件包
采取cs架构 从文件服务器加载rpm包,安装程序到本地主机
yum repository:yum repo 存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repadata)
文件服务器:
ftp:// URL:ftp://10.1.0.1/pub/
http://
nfs://
yum配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo 为仓库的指向提供配置
仓库的定义:
[repositoryID]
name=Some name for this repository 仓库名称
baseurl=ur1://path/to/repository/ 指明rpm包的文件服务器
enabled={1|0} 启动此仓库
pgpchecck={1|0} 此仓库的所有rpm包在安装前是否支持来源合法性和完整性验证
gpgkey=URL 指明密钥文件,通过URL把密钥文件通过服务器共享
enablesgroups={1|0} 是否支持此仓库批量管理包组 默认支持,不写也OK
failovermethod={roundrobin|priority} 故障转移方法 ,仓库在特殊情况下的使用顺序
默认为:roundrobin 轮训,意为随机挑选;
priority 凭位置的上下优先级决定
cost=默认为1000
二.yum使用:
yum命令的用法 (引用于yum的官方帮助文档):
yum [options] [command] [package …]
command is one of:
* install package1 [package2] […]
* update [package1] [package2] […]
* update-to [package1] [package2] […]
* update-minimal [package1] [package2] […]
* check-update
* upgrade [package1] [package2] […]
* upgrade-to [package1] [package2] […]
* distribution-synchronization [package1] [package2] […]
* remove | erase package1 [package2] […]
* autoremove [package1] […]
* list […]
* info […]
* provides | whatprovides feature1 [feature2] […]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache [fast]
* groups […]
* search string1 [string2] […]
* shell [filename]
* resolvedep dep1 [dep2] […]
(maintained for legacy reasons only – use repoquery or yum provides)
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
* reinstall package1 [package2] […]
* downgrade package1 [package2] […]
* deplist package1 [package2] […]
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
* repository-packages <enabled-repoid> <install|remove|remove-or-rei
stall|remove-or-distribution-synchronization> [package2] […]
* version [all|installed| available | group-* |nogroups* |grouplist| groupinfo ]
*history [info|list|redo|undo|rollback|new|sync|stats]
* load-transaction [txfile]
info|redo|undo|rollback|new|sync|stats]
* load-transaction [txfile]
* updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates |
exclude-all | check-running-kernel]
* fssnapshot [summary | list | have-space | create | delete]
* fs [filters | refilter | refilter-cleanup | du]
* check
* help [command]
显示仓库列表:
repolist [all|enabled|disabled]
显示程序包:
list
#yum list [all|glob_exp1] [glob_exp2]..
#yum list {available|installed|updatese} [glob_exp1]
安装程序包
install package1[package2] …
reinstall 覆盖重新安装
升级程序包
update [package1] [package2] ..
downgrade [package1] [package2] .. 降级
检查可用升级
chack-update
卸载程序包:
rmore | erase package1 [package2]..
查看程序包 information
info […]
查看程序提供特性:(可以查看是有那个程序包所提供)
provides | whatprovides feature1 [feature2] […]
清理本地缓存:
clean [ package | metadata | expire-cache| rpmddb| plugins|all]
构建缓存
makecache
搜索:
search string1 [string2][..]
以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities
deplist package1 [package] [..]
查看yum事务历史
yum history [info|list|packages-list|pac|redo|undo|rollback|new|sync|stats]
安装及升级本地程序包 (5系系统用localinstall)
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
包组管理的相关命令
groupinstall group1 [group2] …安装包组
groupuodate group1 [group2] … 升级包组
grouplist [hidden] [groupwildcard] […] 显示包组列表
groupremove group1 [group2] … 卸载包组
groupinfo group1 [group2] … 显示包组的详细信息及包的组成信息
实战:创建本地yum源
1.挂载光盘
(1).虚拟机的设置里选CD-ROM中的已连接
(2).命令:
[root@wen-7 ~]# mount -r -t iso9660 /dev/cdrom /media mount: /dev/sr0 写保护,将以只读方式挂载
2.配置yum
[root@wen-7 ~]# cd /etc/yum.repos.d/ 会看到系统默认的一些以Centos开头文件,是网络yum源,暂不使用,可以创建一个文件,mv移动到文件里以后使用 [root@wen-7 yum.repos.d]# ls 1 yum.repo [root@wen-7 yum.repos.d]# cat yum.repo 创建一个以repo为后缀的文本,配置如下: [centos7] name=centos 7 is yum gpgcheck=0 enabled=1 baseurl=file:///media [root@wen-7 yum.repos.d]# yum repolist #检查yum是否配置成功,结果如下,表示已加载成功软件包,可正常使用yum了 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile 源标识 源名称 状态 yum yum 9,007 repolist: 9,007 [root@wen-7 http]# yum makecache ##建立缓存 已加载插件:fastestmirror, langpacks yum | 3.6 kB 00:00:00 yum/other_db | 2.3 MB 00:00:00 Loading mirror speeds from cached hostfile 元数据缓存已建立 [root@wen-7 http]# yum install zsh -y #安装软件 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile
yum的命令行选项
–nogpgcheck:禁止进行pgpcheck 阻止验证来源合法性和完整性
-y: 指定回答yes 避免用户交互
-q:静默模式
–enablerepo=repoidglob:临时启用此处指定的repo。
–disablerepo=repoidglob:临时禁用此处指定的repo。
–noplugins:禁用所有插件
yum的仓库配置文件中可用的变量:
判断获取当前系统的版本号 ,方便yum 自己找寻符合自己主机的yum仓库地址
$releaserver:当前OS的发行版的主版本号;
$rach:平台
$basearch:基础平台
$YUM0-$YUM9
例: 指定仓库文件 baseurl参数
http://mirrors.magedu.com/centos/$centos-7/i386/os
http://mirrors.magedu.com/centos/$$releaserver/$basearch/os
三、程序包编译安装
testappp-VERSION-release.src.rpm–>安装后,使用rpmbuild命令制作成二进制格式包的rpm包,而后在安装;
源代码–>预处理———>编译(gcc)–>汇编–>链接–>执行
源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系;
C/C++: make (configure –>Makefile.in–>makefile)
java:maven
编译安装三步骤:
(1)./configure:
(1)通过选项传递参数,指定启用特性,安装路径登;执行时会参考用户的指定以及Makefile.in文件生成Makefile
(2)检查依赖到的外部环境; 不存在外部环境,会报警,提示安装所需的外部环境。configure执行失败,make将无法进行;
(2)make (项目管理工具,依赖于Makefile)
根据makefile文件,构建应用程序;相仿与instal命令,把程序的相应的文件复制到工作目录中
(3)make install
相仿与instal命令,把程序的相应的文件复制到相应的工作目录中(二进制文件,库文件,配置文件,帮助文档)
开发工具:
autoconf:生成configure脚本 需要结合一个能够介绍程序特性的脚本,了解程序的相关信息,才能生成configure脚本
automake:生成Makefile.in文
建议:安装前查看INSTALL,README文件,查看安装事项
开源程序源代码的获取:
官方自建站点:
apache.org(ASF)
mariadb.org
….
代码托管站点:
SourceForge
Github.com
code.google.com
…
编译c源代码:
C/C++: gcc(GNU C Complier)编译器
前提:提供开发工具记忆开发环境
开发工具:make,gcc等
开发环境:开发库,头文件
glibc:标准库
通过“包组”提供开发组件
Centos 6:“Development Tools”,“Server Platdorm Development”
过程:
(1)configure脚本
选项:指定安装位置,指定启用的特性等等
–help:获取其支持使用的选项
选项分类:
安装路径设定
–prefix=/PATH/TO/SOMEWHERE:指定默认安装位置,默认为/usr/local;
–sysconfdir=/PATH/TO/SOMEWHERE/:配置文件存放位置
system types(系统设定):
Optional Packages(可选依赖包):
–with-PACKAGE[=ARG]
–without-PACKAGE
Optional Features(可选特性):
–disable-FEATURE
–enable-FEATURE[=ARG]
环境变量:
(2)make
调用命令,编译安装
(3)make install
移动,粘贴程序文件
(4)安装后的配置
(1)导出二进制程序目录至PATH环境变量中
编辑文件:/etc/profile.d/NAME.sh
export PATH=PATH/TO/BIN:$PATH
(2)导出库文件路径:
编辑/etc/ld.so.conf/NAMe.conf
添加新反库文件所在目录至此文件中;
让系统重新生成缓存:
idconfig [-v]
(3)导出头文件
基于连接的方式实现 (/usr/bin /usr/sbin)
ln -sv
(4)导出帮助手册
编辑/etc/man.config文件中
添加一个MANPATH
实战:(实战演练均在centos7.2操作系统上操作)
1.yum的配置和使用,包括yum reoisitory的创建
(1).准备rpm包到文件夹内
[root@wen-7 yum]# cp tree-1.6.0-10.el7.x86_64.rpm /tmp
(2).createrepo ./ 进入文件夹内 执行命令createrepo命令,创建仓库函数
[root@wen-7 yum]# createrepo ./ Spawning worker 0 with 546 pkgs Workers Finished Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
(3).检查仓库函数
[root@wen-7 yum]# cd repodata/ [root@wen-7 repodata]# ls 189860660bf3eff6826715ecec3750a6d116d9b034703a71fed5661b2d5ac719-primary.xml.gz 2a3690fa47f57597494eb52bed1c8baafe8418467b5af2d82b79505c1dd8f124-filelists.sqlite.bz2 328759bb1bb75627712b4ba99b4234c26aefcb71bc9c71a78b08092c106ea303-primary.sqlite.bz2 581f2e2e2025c833919ea42523ecad4dbb6d83c162c9c85c260965fed41a0532-other.xml.gz a83ecbd110af8a84c6587b04de826154a514dac462f21b59fa1eee1b1baaa950-other.sqlite.bz2 c24ada093144b72ec25f3f5876f199a15baaa27bdd8741b78a8b82ef90a1b0f1-filelists.xml.gz
(4).编写仓库文件
[root@wen-7 repodata]# vim /etc/yum.repos.d/yum.rep [centos7] name=centos7.yum pgpcheck=0 baseurl=file:///root/yum/
(5).清除yum缓存
yum makecache
(6).查看yum包列表
[root@wen-7 repodata]# yum repolist 已加载插件:fastestmirror, langpack centos7/primary_db | 263 kB 00:00:00 Loading mirror speeds from cached hostfile 源标识 源名称 状态 centos7(以显示可以使用,后面有546个包) centos7.yum 546 yum yum 9,007 repolist: 9,553
到此,自已制作rpm仓库以完成
2.编译安装apache 2.2,启动此服务
1.复制安装包到目录,并解压到指定目录
[root@wen-7 ~]# cp httpd-2.2.9.tar.gz /tmp [root@wen-7 ~]# tar xvf httpd-2.2.9.tar.gz
2.进去解压目录
[root@wen-7 ~]# cd /tmp/ [root@wen-7 tmp]# ls httpd-2.2.9 httpd-2.2.9.tar.gz [root@wen-7 tmp]# cd httpd-2.2.9/
3.执行configure脚本,检查当前编译环境,并指定安装选项
[root@wen-7 httpd-2.2.9]# ./configure -prefix=/usr/local/http [root@wen-7 httpd-2.2.9]# echo $? ##查看命令状态返回值,确认命令执行成功 0
4.执行安装命令,并执行生成程序文件命令
[root@wen-7 httpd-2.2.9]# make && make install [root@wen-7 httpd-2.2.9]# echo $? ##查看命令状态返回值,确认命令执行成功 0
5.导出二进制程序目录至PATH环境变量中
[root@wen-7 httpd-2.2.9]# cat /etc/profile.d/http PATH=$PATH:/usr/local/http/bin
6.导出程序头文件
[root@wen-7 httpd-2.2.9]# ln -sv /usr/local/http/bin/apachectl /usr/sbin/apache 软连接到/usr/sbin "/usr/sbin/apache" -> "/usr/local/http/bin/apachectl"
7.导出库文件
[root@wen-7 httpd-2.2.9]# cat /etc/ld.so.conf 编写文件 include ld.so.conf.d/* include /usr/local/http/bin/* [root@wen-7 httpd-2.2.9]# ldconfig -v ##系统重新生成缓存
8.导出man帮助文档
[root@wen-7 httpd-2.2.9]# vim /etc/man_db.conf vim ##编写文件,写下面代码 [root@wen-7 httpd-2.2.9]# ldconfig -v
9.启动或关闭apache
[root@wen-7 ~]# apache stop httpd: apr_sockaddr_info_get() failed for wen-7.2 httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [root@wen-7 ~]# apache start httpd: apr_sockaddr_info_get() failed for wen-7.2 httpd: Could not reliably determine the server's fully qual
10检查apache端口
[root@wen-7 ~]# netstat -tan| grep 80 tcp6 0 0 :::80 :::* LISTEN
11.浏览器访问(配置成功)
注意:如果访问不成功,请查看防火墙是否开启
原创文章,作者:wencx,如若转载,请注明出处:http://www.178linux.com/39329
评论列表(1条)
文章整体架构清晰,层次明了,内容上较为完整,如果嫩南瓜对一些工具的背景知识和实验过程中遇到的错误进行总结会让文章更专业,更具有可读性哦。