作品简介

本书是国内首部关于软件管理平台设计与实现(针对大规模linux服务器集群)的著作,由淘宝资深软件开发工程师和系统运维工程师撰写,书中凝结了作者在淘宝运维一线积累的宝贵经验。不仅详细讲解了rpm和yum等软件管理工具的使用方法、技巧、原理和本质,还系统讲解了linux软件管理平台的规划、设计与具体实现。对于从事linux服务器管理和运维的工程师来说,本书将是不可多得的至宝。

全书共8章,在逻辑上分为三个部分:第一部分(第1~4章)为基础技术篇,详细介绍了rpm的概念、组织方式和制作方法,另外对yum服务进行了深入的分析,目的是为对软件开发感兴趣的读者在rpm和yum领域提供导引,为运维和系统管理人员提供指导,帮助读者在rpm/yum的使用和理解方面扫清障碍;第二部分(第5~6章)为问题分析和系统设计篇,结合企业中软件管理的现状,提出问题,然后从基本的系统开始,逐步解决问题,优化方案,最终形成一套软件管理平台的设计方案,适合在企业中负责软件平台优化和系统服务管理的人员阅读;第三部分(第7~8章)为实现篇,如果读者想将本书中设计的软件管理平台应用到自己所在企业的环境中,可以参考这部分的内容进行详细设计和编码实现。附录列举了rpm和yum在日常使用中经常会遇到的问题以及对应的解决方法。

段继刚 著

作品目录

  • 前言
  • 为什么要写这本书
  • 读者对象
  • 如何阅读本书
  • 勘误和支持
  • 致谢
  • 第1章 RPM认知与格式剖析
  • 1.1 软件包的演变史
  • 1.2 RPM软件包基础知识
  • 1.2.1 RPM软件包的功能
  • 1.2.2 RPM实现引子
  • 1.3 RPM格式剖析
  • 1.3.1 从协议说起
  • 1.3.2 RPM格式总览
  • 1.3.3 RPM之lead
  • 1.3.4 header structure
  • 1.3.5 RPM之signature和header
  • 1.3.6 RPM之archive
  • 1.4 RPM解析例程
  • 1.5 本章小结
  • 第2章 RPM制作与SPEC详解
  • 2.1 RPM生成要素
  • 2.2 RPM制作实例
  • 2.2.1 环境准备
  • 2.2.2 源码准备
  • 2.2.3 SPEC文件编写
  • 2.2.4 生成RPM包
  • 2.3 rpmbuild介绍
  • 2.3.1 概述
  • 2.3.2 使用说明
  • 2.4 SPEC文件解析
  • 2.4.1 SPEC组成元素
  • 2.4.2 SPEC元素解析
  • 2.5 本章小结
  • 第3章 深入理解和使用yum
  • 3.1 RPM运行机制浅析
  • 3.1.1 RPM数据库和Packages文件
  • 3.1.2 RPM日志和定时任务
  • 3.1.3 yum/rpm阻塞现象
  • 3.2 yum的出现
  • 3.2.1 RPM面临的问题
  • 3.2.2 yum的构成
  • 3.3 yum服务搭建实例
  • 3.4 软件包的索引机制
  • 3.4.1 createrepo命令
  • 3.4.2 索引文件
  • 3.5 本地缓存
  • 3.5.1 缓存中的内容
  • 3.5.2 索引中的SQLite文件
  • 3.6 配置详解
  • 3.6.1 全局配置
  • 3.6.2 repo配置
  • 3.6.3 插件配置
  • 3.7 本章小结
  • 第4章 yum的插件机制
  • 4.1 插件介绍
  • 4.1.1 插件的概念
  • 4.1.2 插件的调用方式
  • 4.2 yum的插件
  • 4.2.1 yum插件的组织方式
  • 4.2.2 yum插件调用情景
  • 4.3 yum插件开发注意事项
  • 4.3.1 函数接口规范
  • 4.3.2 插件私有选项读取方法
  • 4.3.3 插件类型
  • 4.4 再议仓库优先级
  • 4.5 插件开发与实例分析
  • 4.5.1 view_hook插件
  • 4.5.2 downloadonly插件
  • 4.5.3 fastestmirror插件
  • 4.6 本章小结
  • 第5章 企业软件管理现状与规划
  • 5.1 企业软件管理特点
  • 5.1.1 异地多机房
  • 5.1.2 服务器数量多
  • 5.1.3 软件数量多
  • 5.1.4 OS版本较多
  • 5.1.5 服务高可用
  • 5.1.6 网络环境复杂
  • 5.2 问题总结
  • 5.2.1 软件个数过多
  • 5.2.2 RPM冲突
  • 5.2.3 开发测试包和线上包
  • 5.2.4 不同RHEL版本支持
  • 5.2.5 单点问题
  • 5.2.6 跨机房访问带来的带宽问题
  • 5.2.7 大量客户端引起的网络瓶颈
  • 5.2.8 异地机房灾备
  • 5.3 软件仓库规划之路
  • 5.3.1 软件仓库划分
  • 5.3.2 redhat仓库分支规划
  • 5.3.3 第三方包仓库规划
  • 5.3.4 最终仓库结构
  • 5.3.5 测试包和线上包管理
  • 5.4 本章小结
  • 第6章 软件管理平台设计
  • 6.1 软件发布环节
  • 6.1.1 组成要素
  • 6.1.2 软件发布设计
  • 6.1.3 软件模型
  • 6.2 索引更新设计
  • 6.2.1 更新效率问题
  • 6.2.2 解决方案
  • 6.2.3 软件工作模型
  • 6.3 构建高可用索引服务器
  • 6.3.1 软件发布概述
  • 6.3.2 读写分离的必然性
  • 6.3.3 改进后的软件模型
  • 6.4 加入镜像机制
  • 6.4.1 镜像服务器问题分析
  • 6.4.2 解决方案
  • 6.4.3 改进后的软件模型
  • 6.5 加入缓存机制
  • 6.5.1 缓存服务器的出现
  • 6.5.2 搭建缓存服务器
  • 6.5.3 改进后软件模型
  • 6.6 镜像与缓存的选择
  • 6.6.1 镜像与缓存的搭建原则
  • 6.6.2 新机房中镜像与缓存的搭建实现
  • 6.7 智能DNS和多机房容灾
  • 6.7.1 多机房容灾的必要性
  • 6.7.2 解决方案
  • 6.7.3 软件模型
  • 6.8 节点数据同步优化
  • 6.8.1 问题分析
  • 6.8.2 解决方案
  • 6.9 软件管理平台最终模型
  • 6.10 本章小结
  • 第7章 平台实现梗概
  • 7.1 平台实现约定
  • 7.2 机器角色与职能
  • 7.2.1 打包发布服务器
  • 7.2.2 索引服务器
  • 7.2.3 镜像服务器
  • 7.2.4 缓存服务器
  • 7.2.5 访问客户端
  • 7.3 角色实例化
  • 7.3.1 全网结构图
  • 7.3.2 中心机房结构图
  • 7.3.3 镜像机房结构图
  • 7.4 本章小结
  • 第8章 平台具体实现
  • 8.1 软件包制作工具mkpkg
  • 8.1.1 概述
  • 8.1.2 完整SPEC文件方式
  • 8.1.3 模版SPEC文件方式
  • 8.2 发布工具pkg-release
  • 8.3 索引更新程序repobuilder
  • 8.4 同步服务端程序rsync
  • 8.5 同步客户端程序yumclone
  • 8.6 yumcache缓存服务
  • 8.7 初始化RPM包repoutils
  • 8.8 更多功能
  • 8.9 本章小结
  • 附录 yum/RPM常见问题解决方案
  • 1.yum域名不能访问
  • 2.yum上找不到期望的包
  • 3.多个yum仓库冲突
  • 4.插件引起的问题
  • 5.yum命令报错
  • 6.安装过程中的错误
  • 参考文献
展开全部