Gentoo月报: 2008年9月30日
1.
介绍
本月GMN
欢迎阅读9月份的Gentoo月报!
和往常一样,你可以在对应的论坛帖子里面讨论与本期月报相关的任何问题。我们期待听到您的声音!
2.
Gentoo新闻
TeTex宣布淘汰
由于作者没有时间维护,TeX的发行版teTeX已正式被淘汰。取而代之的是TeXLive,它拥有更完整的功能。许多Linux发行版都已经将它作为新的标准。现在,Gentoo的TeX也选择了它。
建议你emerge --unmerge tetex, 然后emerge world来获得最新的TeX版本。更多的信息请参考TeXLive迁移向导。
Gentoo的TeX维护者也发起了一项关于你正在使用哪个TeX发行版的调查,请投票告诉他们!
发行策略变动
您可能已经读到Gentoo发布策略的一些变动。我们正计划制作每周自动生成的stage包和最小安装CD,也可能约一年一次发行无网络媒介(包括LiveCD/DVD安装盘、通用/打包 CD)。请阅读公告了解更多的详细情况。实施这个策略需要做很多的工作,我们需要帮助!
理事会议摘要
Gentoo理事会 在2008年9月14日召开了月度会议。这里是日程表。
议会会议摘要
Gentoo议会在2008年9月11日召开了月度会议。讨论事项包括:
议会于2008年9月25日再次见面。这次讨论的事项包括:
-
EAPI-2:新的EAPI已经通过。这给Portage增加了如USE标记依赖的特性。例如现在一个包可以直接依赖用“foo” USE标记构建的包而不是使用一些特殊技巧或是类似“built_with_use || die”这样的手段。
-
cache中的PROPERTIES字段:因为在cache中使用PROPERTIES字段是和EAPI相关的,所以这个问题应当由包管理器开发者解决,而且在无法达成一致时应提交到理事会。包管理器开发者同意在cache中添加PROPERTIES字段,但这个值可以被包管理器忽略。
-
ebuild中的PROPERTIES=interactive字段:这是一个议会通过的,已经追加到之前已经批准的所有EAPI的,同时是向后兼容的EAPI改动。它允许ebuild通过设置一个变量来在开始安装前向用户预先说明安装此软件需要用户手工干预,例如同意一份协议或是输入一些信息。
近期活动
-
Bugday:想找到不花太多时间就能帮助Gentoo的方式吗?在10月04日参加我们每月一次的bugday活动,帮助我们捉一些bug吧。
-
议会会议:Getoo议会每个月都会召开两次会议来讨论那些影响整个Gentoo的重要技术问题。下次会议计划于10月09日UTC时间20:00,在irc.freenode.net上的#gentoo-council频道举行,届时欢迎大家的参与。
-
理事会议:10月19日。
3.
倾听社区
Gentoo-Quebec训练
Gentoo-Quebec小组在2008年9月13日提供了一个关于Gentoo发行版的培训课程。作为这个系列18部分中的第一部分,这次课程使23位参与者熟悉了Gentoo LiveCD,并简要学习了安装Gentoo时的一些命令行工具。
感谢Gentoo-Quebec小组和为所有参与者提供培训室和网络安装条件的Copernic,使这个培训课程成功开展。请查阅以下网址获取更多信息(法语):http://gentoo-quebec.org。
图示 3.1: 在Quebec学习Gentoo |
 |
Planet Gentoo
OLPC XO:Daniel Drake在为“让每个孩子拥有一台笔记本”计划工作。这个工程前段时间发布了XO笔记本,这台笔记本搭载了一种特殊版本的Linux。但是也可以使用有标准桌面的发行版。
体验MIPS:Stuart Longland在几个月前开始编译工作,现在这里已有MIPS上的Firefox 3。
重返Gentoo书刊:第一本已出版的关于Gentoo的德语书的作者对书进行了Tobias Scherbaum修订。
RAID技巧:Robin H. Johnson有一些关于如何在硬盘数量不够的情况下创建RAID,并在有了足够硬盘的时候再把它们加入的技巧。
Gentoo没有死:Steve Dibb和Ben de Groot讲述了一些关于Gentoo的事情。
美化Xfce:Joshua Saddler有一些关于使用小型轻量程序构建漂亮且实用的Xfce环境的技巧和截图。
新闻报道中的Gentoo
基于Gentoo的游戏服务器现身:Internode重新推出了它的Games On Net联网游戏服务。这个规模可观的网络(至少有一部分)运行在Gentoo Linux机器上。
4.
心得技巧
在多台机器上运行命令
如果你曾经为了运行一两个命令一台一台地登录你的大量Gentoo机器,这个技巧能够帮你节省不少时间。让我们来简单了解几种让你在多台机器上顺序或者并行地运行命令的方法。
最原始的方法是第一种,只使用bash。假设我们有十台机器,主机名分别是gentoo-box-1,gentoo-box-2,等等。我们要同时在所有机器上运行emerge --info。我们这样做:
代码 4.1: 在众多的机器上运行emerge命令 |
$ for i in `seq 10`; do ssh gentoo-box-$i "emerge --info"; done
|
警告: 不要试图用这个“for”循环运行需要人机交互的命令。在不使用公钥加密的情况下运行的命令也一样。因为机器会提示你输入密码,但是你无法输入。 |
如果你没有为ssh设置公钥加密,请阅读OpenSSH密钥管理这一系列文章。你也可能需要参考这篇指南。
如果你不愿意折腾公钥加密,在bash里写复杂的“for”循环语句,又想运行交互命令,你有一个很好的选择:Cluster SSH。我们先来把它安装上:
代码 4.2: 安装Cluster SSH |
# emerge clusterssh
|
Cluster SSH需要有X11才能工作。你提供一份机器列表,Cluster SSH给其中的每一台机器打开一个xterm窗口。同时它打开一个小型指令窗口,你可以在里面输入命令,这些命令被同时转发到其它所有机器的命令行中。要在这十台gentoo机器上做和我们刚才所做的相同的事情,我们这样运行Cluster SSH:
代码 4.3: 启动Cluster SSH |
$ cssh gentoo-box-{1,2,3,4,5,6,7,8,9}
|
如果你没有为机器设置公钥加密的话,机器会首先询问密码。如果你的一台机器密码跟其它的不一样,不用担心,你可以点击那台机器对应的窗口在里面输入。一旦你登录进了所有的机器,你就可以对所有机器同时下命令,或者分别输入命令。
还有一种选择是使用Tentakel。Tentakel的使用方式相较之下是静态的。用户要修改一个静态的配置文件,然后告诉Tentakel要连接到哪一组机器。首先,我们安装Tentakel:
代码 4.4: 安装Tentakel |
# emerge tentakel
|
下一步,我们建立一个配置文件:
代码 4.5: 配置Tentakel |
# echo "set ssh_path=\"`which ssh`\"" >> /etc/tentakel.conf
# echo "set method=\"ssh\"" >> /etc/tentakel.conf
# echo 'group ten_gentoos (user="root")' >> /etc/tentakel.conf
# for i in `seq 10`; do echo -e "\t+gentoo-box-$i"; done >> /etc/tentakel.conf
|
直接编辑Tentakel附带的范例配置文件可能更方便一些:
代码 4.6: 编辑范例配置文件 |
# cp /usr/share/doc/tentakel/tentakel.conf.example /etc/tentakel.conf
# nano -w /etc/tentakel.conf
|
把所有东西配置好以后,该运行Tentakel了:
代码 4.7: 运行Tentakel |
$ tentakel -g ten_gentoos
|
这个命令将启动Tentakel的交互式命令界面。我们用它提供的exec指令来运行一条命令:
代码 4.8: 在Tentakel中运行命令 |
$ exec emerge --info
|
如果你面对Tentakel的命令界面不知所措,就运行help命令。你也可以像这样运行Tentakel而不使用它的交互式命令界面:
代码 4.9: 运行Tentakel而不使用交互式命令界面 |
$ tentakel -g ten_gentoos "emerge --info"
|
这些技巧只涉及了现有的可以在多台机器上分散执行命令的程序中的一小部分。如果Cluster SSH和Tentakel不能满足你的要求,你也许可以试试dsh,pdsh,pconsole和shmux。
Iotop
如果一台拥有大量额外内存和磁盘空间的计算机被一个进程拖慢了,原因可能在于cpu占用或者输入/输出(I/O)。大多数Gentoo用户习惯于用top来寻找那些讨厌的CPU和内存消耗大户,但很少有人用iotop来寻找大量占用磁盘数据传输的进程。
iotop分列显示采样时段中每个进程/线程读写数据占用的I/O带宽。它同时显示线程/进程被载入内存和等待输入/输出的时间。此外采样时段中总的I/O读写带宽则显示在界面顶端。
用emerge iotop命令安装这个工具。如果Portage警告说你的内核没有运行iotop工具必要的选项(TASKSTATS和TASK_IO_ACCOUNTING),你需要加入下面的选项重新编译内核。
代码 4.10: 为iotop配置内核 |
General Setup -->
[*] Export task/process statistics through netlink
[ ] Enable per-task delay accounting
[*] Enable extended accounting over taskstats
[*] Enable per-task storage I/O accounting
|
用新内核重启后,你就可以从命令行运行iotop工具了。在备份一张DVD时,iotop的显示可能是这样:
代码 4.11: 运行iotop |
$ iotop
Total DISK READ: 387.25 K/s | Total DISK WRITE: 221.29 K/s
PID USER DISK READ DISK WRITE SWAPIN IO> COMMAND
7703 root 387.25 K/s 0 B/s 0.00 % 0.00 % tccat -i /shared/...
211 root 0 B/s 13.83 K/s 0.00 % 0.00 % [pdflush]
7672 root 0 B/s 207.46 K/s 0.00 % 0.00 % transcode -H 10 ...
|
一个不守规矩的用户的输出可能是这样:
代码 4.12: 一个失控的用户 |
$ iotop
Total DISK READ: 5.21 K/s | Total DISK WRITE: 7.37 M/s
PID USER DISK READ DISK WRITE SWAPIN IO> COMMAND
7936 user1 5.21 K/s 7.37 M/s 0.00 % 0.00 % dd if /dev/zero of ./bigfile
|
iotop适合用来观察是什么在大量占用磁盘,这样你就可以在必要时重新分配资源。这个程序有一些命令选项,你可以用iotop --help得到它的功能的简要描述。
使用lsof:老话重提
上一期月报的心得技巧栏目向你展示了如何使用lsof来查找打开的文件和目录。
一位聪明的读者在给GMN的email里展示了lsof的另一个用途:查找在软件包更新后需要重启的进程。
例如,在更新了openssl这样的软件包后,你可能需要重启邮件服务器,web服务器,甚至一些客户端程序。lsof能很有效地指出哪些已打开的文件被删除了,这样你就很容易发现需要重启的进程:
代码 4.13: 利用lsof查找进程 |
# lsof | grep 'DEL.*lib' | cut -f 1 -d ' ' | sort -u
|
注意: 有些服务会打开然后删除临时文件或shm文件,所以在正则表达式中加入了“lib”部分。 |
在进程依赖的函数库包含安全修复的情况下,升级后重启进程尤其重要。
5.
人员变更
总结
Gentoo目前有242位活跃开发人员,当前43人暂时离队。Gentoo成立至今,先后共招募过649位开发者。
离开
下列开发者最近离开Gentoo项目:
加入
下列开发者最近加入Gentoo项目:
变更
下列开发者最近改变了在Gentoo项目内的职位:
6.
Portage
总结
本章节概述Portage树的当前状态。不巧的是,本月我们无法公布统计信息,因为我们正在更新工具集以使其能同新引入的EAPI-2协同工作。下期我们将恢复统计信息发布,敬请关注!
以下部分列出Portage树中移除或加入的软件包。包移除有多个来源,包括
已经移除:
已经加入:
7.
Bugzilla
统计信息
Gentoo社区使用Bugzilla (bugs.gentoo.org)记录并追踪bugs,通告,建议和其他与开发团队之间的互动信息。下面的图表总结了2008年8月30日至2008年9月29日之间Bugzilla上的动态。
图示 7.1: Bug活动构成 |
 |
12369个当前公开的bugs中:12个被标为特别严重,106个被标为严重,451个被标为较为严重。
被修复的bug排行榜
在这段时间内修复最多bug的开发者和团队有:
| 排名 |
开发者/团队 |
Bug数 |
| 0 |
其它 |
865 |
| 1 |
Gentoo游戏 |
54 |
| 2 |
Gentoo KDE团队 |
50 |
| 3 |
孤立软件包的默认受托人 |
44 |
| 4 |
Gentoo安全 |
41 |
| 5 |
Gentoo Linux Gnome桌面团队 |
41 |
| 6 |
Gentoo核心系统软件包团队 |
34 |
| 7 |
Java团队 |
32 |
| 8 |
Gentoo非Linux团队 |
28 |
| 9 |
Gentoo Linux bug牧人 |
25 |
图示 7.2: Bug关闭排行榜 |
 |
bug分配排名
在这段时间内被分配得到最多bug的开发者和团队有:
| 排名 |
开发者/团队 |
Bug数 |
| 0 |
其它 |
628 |
| 1 |
新软件包的默认受托人 |
78 |
| 2 |
Gentoo Linux Gnome桌面团队 |
40 |
| 3 |
Gentoo安全 |
38 |
| 4 |
Gentoo核心系统软件包团队 |
32 |
| 5 |
Gentoo X包装程序 |
27 |
| 6 |
Gentoo KDE团队 |
25 |
| 7 |
Java团队 |
23 |
| 8 |
Python Gentoo团队 |
22 |
| 9 |
Gentoo声音团队 |
20 |
图示 7.3: Bug分配排行榜 |
 |
8.
加入我们
GMN每月内容来源依赖于广大的志愿者和社区成员。如果你对供稿感兴趣,请将稿件发送至gmn-writers@gentoo.org,来稿请用普通文本或GuideXML格式。
注意: 下期GMN投稿截止日期是2008年10月17日。 |
我们恳请所有读者对我们的报道进行反馈。如果您对文章、章节有任何意见和建议,或者对于GMN有任何话要说,不要犹豫,请写信给我们,邮件地址gmn-feedback@gentoo.org。
您还可以就本期GMN给出反馈或进行评论,论坛地址。
9.
月报订阅
订阅Gentoo月报,请发送空邮件至gentoo-gmn+subscribe@gentoo.org。
退订Gentoo月报,请使用您的订阅邮箱发送空邮件至gentoo-gmn+unsubscribe@gentoo.org。
10.
其他语言
Gentoo月报有下列语言的版本:
|