一、yum简介 二、客户端配置文件 三、yum命令使用 四、*.repo的配置文件变量 五、使用本地光盘当做yum仓库 六、创建yum仓库 七、程序包的编译安装 八、开源程序的源代码的获取与安装 九、configure脚本十、后续步骤
前言
rpm弊端:依赖关系,yum会自动解决依赖关系
Centos:yum,dnf
debian:apt-get
suse:zypper
一、yum简介
C/S架构:yelow dog Update Modifer
S:文件服务器,放置rpm包,共享到外部主机
描述性信息{元数据文件}:版本,包名,依赖关系
c:支持rpm包的基本功能和yum工具
安装程序的时候:先下载描述性信息到本地缓存中//查看是否存在目标程序,分析依赖关系,下载,安装,删除程序包,但是不会删除元数据
//问题:元数据本地的和server可能没有同步,方法:每一次使用yum的时候,同步校验码(元数据)是否相同,判断是否更新
同一个服务器,多个网站地址:镜像列表
yum弊端:假如安装过程中断的话,恢复后,无法继续,需要重新开始
dnf主要用于解决该问题
yum仅仅是rpm的前端工具
要素:
yum命令
配置文件
仓库存在
createrepo:创建元数据文件,自动分析依赖关系
//分组:xml格式的
yum repository:yum repo 仓库
存储了众多的rpm包,以及包的相关的元数据文件(放置于特定目录下,repodata)
文件服务器:
ftp://
http://
nfs://
file://
[root@mt ~]# rpm -qc yum
/etc/logrotate.d/yum //日志滚动
/etc/yum.conf //主配置文件
/etc/yum/version-groups.conf
多个仓库:yum会分析所有仓库的元数据,都有目标程序的时候,yum会安装最新的
二、客户端配置文件
/etc/yum.conf :为所有仓库提供公共配置
[main] //仓库名 repositoryid
exactarch=1 //是否做严格的平台匹配,i386,x86..
installonly_limit=5 //一次同时安装几个程序包
//man yum.conf //查看配置文件帮助手册
/etc/yum.repo.d/*.repo 为仓库的指向提供配置
[repositoryid] //唯一
name=随意启用
baserurl=[ftp|http|file|]://path/to/repository
url://server1/paht/to/repository
url://server1/paht/to/repository //查找根据顺序查找
mirrorlist= //以镜像方式,在线共享的文件
//yum需要支持插件功能,baseurl和mirrorlist选择一个使用
enabled=1/0 //是否启用
gpgcheck=0/1 //是否检查其完整性和来源合法性
repo_gpgcheck=0/1 //检查仓库的元数据的GPG签名
gpgkey=URL //密钥文件所在地
enablegroups=0/1 //默认支持,是否基于组批量管理程序包
failovermethod=roundrobin/priority 故障转移方法,轮训(随机抽取)|根据优先级
//多个仓库的查找顺序,默认为roundrobin:随机
timeout //超时时间,默认30s
username
password //指明账号和密码
cost= 默认都是1000
https://mirrors.aliyun.com/centos/7/os/x86_64/ //这个路径下有repodata目录,指定到这里就可以
问题:baseurl和mirrorlist的区别
baseurl:相对稳定
mirrorlist也是一个网址,在这个网址里能下到更新源列表
mirrorlist是从上面查找最近的更新源
三、yum命令使用
注意:yum是具有事务的概念的,同时只能启动一个
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
list all|通配符 //glob风格的通配符,默认只列出未安装的包
available|通配符 //尚未安装的
updates |通配符 //可用的升级包
installed |通配符//已经安装的
extras|通配符 //拓展的仓库内容
obsoletes|通配符 //废弃的包
recent|通配符 //最近添加到repository中的
grouplist
search string1 [string2] [...] //搜索包名和summary信息
reinstall|install pk1 pk2 安装
yum reinstall zsh --enablerepo=base、
update pk1 pk2 升级
check-update 检查更新
remove|erase pk1 pk2 卸载
info 简要信息
clean 清理本地缓存
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
deplist //显示依赖关系
provides | whatprovides feature1 [feature2] [...] //查看指定的特性(可以是某文件)是由哪个程序包提供的
yum whatprovides /bin/ls
makecache [fast]
downgrade package1 [package2] [... //降级安装
version grouplist | groupinfo | installed | available | all
history [summary] //安装和更新的事务,只查看摘要信息
[info|list| package-list|package-info|summary|addon-info|redo|undo|rollback|new|sync| stats]
localinstall/localupdate //本地安装,而不是仓库中的包,现在直接使用intall和update都可以了
grouinstall
groupupdate
grouplist
groupremove
groupinfo
指定repo安装:--enablerepo=base
降级安装:yum downgrade zsh
四、*.repo的配置文件变量
$releasever:代表发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch:cpu体系,如i686,athlon等
$basearch:cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
http://mirrors.173.com/centos/6/i386/os
http://mirrors.173.com/centos/7/x86_64/os
http://mirrors.173.com/centos/7/i686/os
http://mirrors.173.com/centos/$releasever/$basearch/os
$releasever == [6|7|8| r //主版本号,6.7是6,7.1是7
$arch == 平台
$basearch 基础平台,i386,i686的基础平台都是i386
$YUM0-$YUM9 //自定义了10个变量,供用户使用
http://updates/$releasever/$basearch
http://updates/$releasever/$basearch
http://updates/$releasever/$basearc
yum install yum-priorities
priority=N (N为1到99的正整数,数值越小越优先)
五、使用本地光盘当做yum仓库
mount -r -t iso9660 /dev/cdrom /mnt
创建repo文件
[cdrom] name= baseurl= gpgcheck= gpgkey= enabled=
yum install zsh --nogpgcheck
-y 自动回答为yes
-q quiet静默模式
--disablerepo,--enablerepo ;临时禁止或者启用repo
--disableplugin=plugin 禁用某个插件
--noplugin 禁用插件
六、创建yum仓库
yum install createrepo
mkdir /tmp/test //repo所在地,复制部分rpm包到该文件中
-x 排除某些包 -g 指明groupfile -v 显示过程 -c cachedir --basedir rpm所在位置
cd /tmp/test ; createrepo ./ //直接在本目录创建
createrepo /tmp --basedir=tmp/test
七、程序包的编译安装
testapp-VERSION-release.src.rpm -->安装后,使用rpmbuild命令制作成二进制的rpm包,而后在安装
源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系
C、C++:make:依赖于(mkefile.in-->makefile)文件
//makefile.in是一个模板,例如安装路径,启用功能等,
//configure允许传递选项,指定编译参数,到makefile.in文件,生成makefile
jave:maven
源代码--->预处理--->编译(gcc)--->汇编(汇编器)--->链接(链接器)-->执行
编译安装三步骤:
./confiure //生成makefile文件
(1)通过选项传递参数,指定启用特性,安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile文件
(2)检查依赖到的外部环境
make //make将源代码翻译成二进制,但是需要调用gcc实现
根据makefile文件,构建应用程序
make install
使用cp命令也可以实现
开发工具:自动生成makefile.in
autoconf:生成confiure脚本 //也要结合一个脚本实现,脚本中描述程序的功能等
automake:生成makefile.in //依赖于一个脚本,脚本中包括了,各种依赖关系,编译器版本等
建议:安装前查看INSTALL,README文件
八、开源程序的源代码的获取与安装
官方自建站点
apache.org
mariadb.org
...
代码托管点:
SourceForge:
Github.com
code.google.com
c/c++ :gcc (GNU C Complier) :功能强悍
编译C源代码:
前提:提供开发工具及开发环境
开发工具:make,gcc等
开发环境:开发库,头文件
glibc:标准库,兼容posix的标准
通过“包组”提供开发组件
Centos 6:“Development Tools",“Server Platform Development”
注意:老版本的程序和新版本的程序在不同的OS上可能要求环境不一样导致无法安装
九、configure脚本
选项:指定安装位置,指定启用的特性
--help:获取支持的选项
选项分类:
安装路径设定:
--prefix=/PATH/TO/SOMEWHERE :指定默认安装位置,默认/usr/local
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件路径
System types:编译的操作可以执行交叉编译:在本平台编译其他平台的程序
Optional Features:可选特性
--disable-Feature:禁用该特性
--enable-Feature:启用该特性
Some influential environment variables:可能会产生影响的环境变量
OPtional Packages:可选程序包,它依赖的包
--with-PACKAGE[=ARG] :使用该包,需要指定路径
--without-PACKAGE:不使用该包
--with-include-apr
make && make install
十、后续步骤
/usr/local/apache/ man,lib和头文件
1.到处二进制程序目录至PATH环境变量中
/etc/profile.d/NAME.sh
export PATH=$PATH:/usr/local/apache/
2.导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
/usr/local/apache/lib
让系统重新生成缓存:ldconfig -v
3.到处头文件//基于链接的方式实现
ln -sv /usr/local/apache/include /usr/include
4.导出帮助手册
/etc/man.config
添加一条MANPATH
MANPATH /usr/local/apache/man
CentOS 6:/etc/man.config ;
## CentOS 7: /etc/man_db.conf
练习:
1.yum的配置和使用,包括yum repository
2.编译安装apache 2.2 ;启动此服务