找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

Linux中国开源社区 活动 查看内容

网站点评赠书:《Linux软件管理平台设计与实现》

2014-02-14 14:49    评论: 28    

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

 

作者:段继刚

2013年9月第1版第1次印刷

186mm×240mm 14.25印张

出版社:机械工业出版社

标准书号:ISBN 978-7-111-43792-5

定  价:59.00元

 

为什么要写这本书

在2011年以前,我一直从事软件开发工作,后来开始参与运维工作,一半运维,一半开发。我在将自己开发的程序部署到公司几万台服务器上的过程中遇到了一些RPM和yum使用上的问题,于是便花了很长时间对RPM和yum等软件管理工具进行了学习,对RPM的格式剖析、RPM的制作以及yum的使用、原理和详细配置等进行了总结,并将收获写成文章发布在网上,希望能帮到有同样需求的同行们。文章发布后不久,意外发现,对Linux环境下的RPM和yum感兴趣的同行竟然有这么多。因此,便计划对这块知识进一步学习,并进行整理,以期能帮到更多朋友。

碰巧在2012年,公司的三个子公司合并,各个子公司负责yum服务管理的同事由于离职或者转岗等原因,不再从事原来的yum维护工作,此事便交给我来负责。后来,部门又成立了软件配置统一规范化管理的项目,我也顺理成章地被安排来负责该项目。在经过了大半年的整合和改造后,公司的软件管理服务终于能够基本统一,使用同一套服务、同一套仓库、同一套配置,这样,Linux软件包的管理工作就变得轻松起来了(事实上,我们还有很多事情要做)。

2013年春节过后,由于个人岗位调整的原因,原来负责的软件管理平台整合和改造工作要交给别的部门来维护,为了不让学习到的知识和经验废弃,我便计划对这个项目中积累的知识和经验进行总结。而且在2012年这一年的时间中,几乎每天都会被同事的RPM和yum的使用问题“骚扰”,我和同事们也一直在尝试通过某种途径来减少这些问题的发生,比如通过培训分享的方式来对RPM、yum和公司的软件管理服务进行介绍,以提高部门中每个人解决RPM和yum问题的能力,从而减少系统管理员的工作量,提高部门工作效率。

当项目经验总结和日常问题压力这两个理由汇总到一起时,我便决定写一本书,对Linux环境下的软件管理方法进行介绍。首先,对RPM文件及SPEC文件等进行分析,以丰富读者在RPM方面的基础知识;另外,对RPM管理工具—yum,从原理到使用细节,再到常见问题以及插件等进行详细剖析,这部分可以说是Linux软件包管理的中高级话题,也算是对我之前提到的网上发布的那三篇文章的细化和扩展。我期望对RPM和yum感兴趣的学生、开发人员和从事运维工作的人员通过对这部分技术的学习,能够了解RPM和yum的本质和原理,进而帮助他们解决在实际工作中使用这些工具时遇到的大多数问题。

另外,在对软件管理平台进行改造时,我们的软件管理平台支持的服务器数量已经接近7万,这些机器分布在不同地域的不同城市中,处在不同的网络环境中,这个复杂的情况为我们平添了很多问题。不论是在技术方面,还是业务方面,我们都花费了不少时间和精力,最终才形成了一个能够支撑整个公司服务器集群的软件管理平台。可以说,这个软件管理平台和伴随这个项目总结的经验都来之不易,而且是弥足珍贵的,因此我决定通过书籍的方式来将这些经验和方案分享给广大的同行。

在上述的软件管理平台改造过程中,我通过和其他公司的朋友进行沟通了解到,在一些较大的软件或者互联网公司,软件管理平台仍然是一个很简易和初级的系统,大家对软件管理规范的概念都很淡漠。所以在本书的后半部分,我为同样从事软件管理工作的同行提供了一套方案,也是一份礼物,即从软件管理平台的最初模型开始,对我在实际工作中的经验和遇到的问题逐个进行剖析,在这个过程中总结经验、不断改造,最终形成了一套软件管理平台的设计方案。希望这个方案能够给同行企业或者感兴趣的读者提供参考。总之,我希望本书的内容能够帮助读者提高工作效率,当然更希望它能帮助同行的公司增加收益。

另外,关于Linux环境中软件管理平台设计方法的书籍,在市场上还鲜有出现,因此,笔者希望本书的出版,能够在图书领域和技术领域,都打开一个新的篇章,让我们的图书出版行业多一个软件管理平台的类目;也让我们的技术领域,多一个软件管理平台的研究方向。

以上就是本书撰写的初衷。

读者对象

本书的读者对象如下:

  • 对Linux环境下软件开发感兴趣的技术人员
  • 从事计算机系统管理的工作人员
  • 互联网公司技术部的运维人员
  • 对软件架构设计和优化感兴趣的工程人员
  • 计算机相关专业的高等院校学生

如何阅读本书

本书共分8章,按照讲述的内容和适应读者的不同层次,可以划分为三大部分:

第一部分为基础技术篇,包括第1~4章,介绍了RPM的概念、组织方式和制作方法,另外对yum服务进行了深入的分析。这部分的目的是为对软件开发感兴趣的读者在RPM和yum领域提供导引,为运维和系统管理人员提供指导,帮助这部分读者尽可能扫清在RPM和yum的使用和理解方面的疑问。

第二部分为问题分析和系统设计篇,包括第5章和第6章,结合企业中软件管理的现状,提出问题,然后从基本的系统开始,逐步解决问题、优化方案,最终形成一套软件管理平台的设计方案。这部分内容适合在企业中负责软件平台优化和系统服务管理的人员阅读。在阅读这部分内容时,从事运维/系统管理的读者大多会找到能与笔者产生的共鸣之处,或者会有一种“身临其境”、“似曾相识”的感觉,因为这部分所涉及的索引更新问题、多机房镜像问题、数据同步问题以及RPM包冲突问题等,都是Linux软件管理工作中最容易遇到的问题,而我们的讨论正是针对这些常见问题展开的。

第三部分为实现篇,包括第7章和第8章。如果读者想将本书中设计的软件管理平台应用到自己所在企业的环境中,可以参考这部分的内容进行详细设计和编码实现。

附录列举了RPM和yum在日常使用中经常会遇到的问题以及对应的解决方法。 

目录

前言
第1章  RPM认知与格式剖析1
1.1  软件包的演变史2
1.2  RPM软件包基础知识3
1.2.1  RPM软件包的功能3
1.2.2  RPM实现引子6
1.3  RPM 格式剖析7
1.3.1  从协议说起7
1.3.2  RPM格式总览8
1.3.3  RPM之lead9
1.3.4  header structure11
1.3.5  RPM之signature和header14
1.3.6  RPM之archive18
1.4  RPM解析例程19
1.5  本章小结21
第2章  RPM制作与SPEC详解22
2.1  RPM生成要素23
2.2  RPM制作实例23
2.2.1  环境准备24
2.2.2  源码准备25
2.2.3  SPEC文件编写25
2.2.4  生成RPM包26
2.3  rpmbuild介绍30
2.3.1  概述30
2.3.2  使用说明30
2.4  SPEC文件解析31
2.4.1  SPEC组成元素32
2.4.2  SPEC元素解析32
2.5  本章小结58
第3章  深入理解和使用yum59
3.1  RPM运行机制浅析60
3.1.1  RPM数据库和Packages文件61
3.1.2  RPM日志和定时任务64
3.1.3  yum/rpm阻塞现象65
3.2  yum的出现66
3.2.1  RPM面临的问题66
3.2.2  yum的构成68
3.3  yum服务搭建实例69
3.4  软件包的索引机制72
3.4.1  createrepo命令73
3.4.2  索引文件78
3.5  本地缓存84
3.5.1  缓存中的内容84
3.5.2  索引中的SQLite文件86
3.6  配置详解87
3.6.1  全局配置88
3.6.2  repo配置92
3.6.3  插件配置97
3.7  本章小结97
第4章  yum的插件机制98
4.1  插件介绍99
4.1.1  插件的概念99
4.1.2  插件的调用方式99
4.2  yum的插件100
4.2.1  yum插件的组织方式100
4.2.2  yum插件调用情景101
4.3  yum 插件开发注意事项104
4.3.1  函数接口规范104
4.3.2  插件私有选项读取方法105
4.3.3  插件类型105
4.4  再议仓库优先级107
4.5  插件开发与实例分析108
4.5.1  view_hook插件108
4.5.2  downloadonly插件110
4.5.3  fastestmirror插件113
4.6  本章小结118
第5章  企业软件管理现状与规划119
5.1  企业软件管理特点120
5.1.1  异地多机房120
5.1.2  服务器数量多121
5.1.3  软件数量多121
5.1.4  OS版本较多121
5.1.5  服务高可用122
5.1.6  网络环境复杂122
5.2  问题总结123
5.2.1  软件个数过多123
5.2.2  RPM冲突123
5.2.3  开发测试包和线上包124
5.2.4  不同RHEL版本支持124
5.2.5  单点问题124
5.2.6  跨机房访问带来的带宽问题124
5.2.7  大量客户端引起的网络瓶颈125
5.2.8  异地机房灾备125
5.3  软件仓库规划之路125
5.3.1  软件仓库划分126
5.3.2  redhat仓库分支规划128
5.3.3  第三方包仓库规划133
5.3.4  最终仓库结构134
5.3.5  测试包和线上包管理136
5.4  本章小结137
第6章  软件管理平台设计138
6.1  软件发布环节140
6.1.1  组成要素140
6.1.2  软件发布设计140
6.1.3  软件模型142
6.2  索引更新设计143
6.2.1  更新效率问题143
6.2.2  解决方案145
6.2.3  软件工作模型147
6.3  构建高可用索引服务器148
6.3.1  软件发布概述148
6.3.2  读写分离的必然性149
6.3.3  改进后的软件模型149
6.4  加入镜像机制150
6.4.1  镜像服务器问题分析150
6.4.2  解决方案151
6.4.3  改进后的软件模型152
6.5  加入缓存机制153
6.5.1  缓存服务器的出现153
6.5.2  搭建缓存服务器154
6.5.3  改进后软件模型156
6.6  镜像与缓存的选择157
6.6.1  镜像与缓存的搭建原则157
6.6.2  新机房中镜像与缓存的搭建实现158
6.7  智能DNS和多机房容灾159
6.7.1  多机房容灾的必要性159
6.7.2  解决方案160
6.7.3  软件模型161
6.8  节点数据同步优化162
6.8.1  问题分析162
6.8.2  解决方案164
6.9  软件管理平台最终模型164
6.10  本章小结165
第7章  平台实现梗概166
7.1  平台实现约定167
7.2  机器角色与职能169
7.2.1  打包发布服务器169
7.2.2  索引服务器172
7.2.3  镜像服务器174
7.2.4  缓存服务器175
7.2.5  访问客户端176
7.3  角色实例化177
7.3.1  全网结构图178
7.3.2  中心机房结构图179
7.3.3  镜像机房结构图180
7.4  本章小结181
第8章  平台具体实现182
8.1  软件包制作工具mkpkg183
8.1.1  概述183
8.1.2  完整SPEC文件方式184
8.1.3  模版SPEC文件方式188
8.2  发布工具pkg-release192
8.3  索引更新程序repobuilder196
8.4  同步服务端程序rsync198
8.5  同步客户端程序yumclone199
8.6  yumcache缓存服务200
8.7  初始化RPM包repoutils205
8.8  更多功能207
8.9  本章小结210
附录  yum/RPM常见问题解决方案 211
参考文献215

样章地址: http://wenku.it168.com/d_001273122.shtml 

购买链接:  http://www.amazon.cn/Linux%E8%BD%AF%E4%BB%B6%E7%AE%A1%E7%90%86%E5%B9%B3%E5%8F%B0%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0-%E6%AE%B5%E7%BB%A7%E5%88%9A/dp/B00FFSX4HI/ref=sr_1_1?ie=UTF8&qid=1392257995&sr=8-1 

活动内容

活动时间:2014年02月13日-02月21日

活动奖品:

活动结束后,我们会评选出5位积极参与评论的网友奖励《Linux软件管理平台设计与实现》图书1本。

活动要求:

1、 在Linux中国(http://linux.cn)对本书进行点评,要言之有物,有效评论不能低于40个字。

2、 本次话题主要关注Linux软件管理平台及相关技术的讨论,以及对本书样章内容的点评。

 

最新评论

我也要发表评论

明白了 2014-02-13 11:09 回复
好书,能送一本就好了。
夜域诡士 2014-02-13 11:26 回复
我看完目录,很是诱人,看主要章节是讲解rpm/yum相关知识,我对此颇有兴趣,有深入的讲解:组织方法,制作方法,对rpm/yum服务进行了深入的分析,本书列举了日常rpm/yum的一些问题,以前遇到这些问题时,就会找大神或者是在网上搜索相关博客,也有一些事解决不了的,本书无疑是我的福音,再次希望有幸获取本书,定会细细研读。
kyohand 2014-02-13 12:01 回复
第六章很吸引我
饕餮巽离 2014-02-13 12:56 回复
之前工作需要写过一点spec,不过没深入,随便查点资料就算了,理解比较松散。最近一直跟debian系列打交道,对于dpkg这边的做了一些调研,想对比看看这俩系列
巴斯光年 2014-02-13 13:23 回复
小公司供职,没有大范围布署软件的需求。对于yum,我一直有个愿望,就是当安装一个rpm包时,会自动安装上依赖包,例如安装A.rpm会自动安装b.rpm c.rpm ... z.rpm。之后如果想卸载A.rpm,并且将b到z的rpm包都卸了,还我一个干净的系统,貌似只有一种方法:rpm -e A.rpm b.rpm c.rpm d.rpm ... z.rpm。不知本书有没有给出更好的解决之道,光从本书提供的目录上看,好像没有。
huozhe3136 2014-02-13 16:46 回复
好书, 买了再说
徐吖毛GoNuts 2014-02-13 20:11 回复
回复 巴斯光年 的帖子

rpm的spec文件可以写明require,会自动处理依赖包,包括build require 和 install require
贺兰云天雪 2014-02-13 21:52 回复
回复 kyohand 的帖子

嗯,1-4章是技术,5-8章属于经验总结分享,可以说是软件管理平台的形成之路。
有过相同工作经验的朋友一定会很有感触。
贺兰云天雪 2014-02-13 21:57 回复
回复 巴斯光年 的帖子

yum通过require是能够安装依赖包的,但是自动卸载依赖/基础包这种功能已经超出了软件管理平台的范畴,有些公司把这个作为配置管理的一部分。
可以加入maillist:
http://www.freelists.org/list/lsmd
一起讨论下更多问题。
爱心熊XX 2014-02-14 09:10 回复
牛!必须顶!求书!
kyohand 2014-02-14 10:34 回复
回复 贺兰云天雪 的帖子

1到4到处可以学到,
但5-8确实需要...
linux 2014-02-14 10:39 回复
回复 kyohand 的帖子

贺兰云天雪 就是作者呢。
kyohand 2014-02-14 10:42 回复
回复 linux 的帖子

-_-#
技术类文档很多,但是经验类总结类应用类文档太少
所以很喜欢目录中的东西
kyohand 2014-02-14 10:43 回复
同时,还有很多文档都是管杀不管埋的,只写出了软件如果安装如何配置
却没有如何应用..或者深度应用的东西..唉
arhool 2014-02-14 14:43 回复
第5、6章很有吸引力,不过没有其前面的内容也不好读下去。期待。。。
贺兰云天雪 2014-02-14 17:46 回复
回复 kyohand 的帖子

嗯,5-8章没经过大规模软件管理工作的折磨,很难体会到的。呵呵。
贺兰云天雪 2014-02-14 17:52 回复
回复 arhool 的帖子

是的,在写书时,我定的结构就是,读者只读前N章,也是完整的知识。
一,二章可以单独作为一个教材
然后,1,2,3章也可以单独做个教材
第四章是相对独立的一个教材。
5-8章就是经验总结和设计实现,顺着问题寻找解法,最终落到实现。
整本书是一种自然发展的顺序写的。
disylee 2014-02-14 18:18 回复
好书,不过我不是开发,第6、7章值得学习!
绿色圣光 2014-02-14 19:50 回复
回复 巴斯光年 的帖子

没用过 yum-plugin-remove-with-leaves?
没试过 yum autoremove?

收藏

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。