<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Gentoo Linux</title>
    <description>Gentoo是一种可以随心所欲的优化，定制应用程序或软件工具的Linux发行版。

极限性能！高度可配置！顶尖用户及开发社区支持！这些都是许多Gentooer的使用感受。
那么，你呢？

现在开始，从编译入手，打造属于自己 Linux 世界吧！</description>
    <link>http://gentoo.group.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>gentoo下定制apache-启用模块和配置结构</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/209507" style="color:red;">http://gentoo.group.javaeye.com/group/blog/209507</a>&nbsp;
          发表时间: 2008年06月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这两天由于要搭建个小型资讯网站，需要用到apache。抽空在gentoo上定制了一把apache。</p>
<p>&nbsp;</p>
<p>所谓的gentoo版apache，其实源码还是跟官方版本一致的。</p>
<p>不同之处在于模块的安装，卸载已经完全gentoo化。</p>
<p>只需要在USE标记里，添加，删除相应的标签，即可。</p>
<p>&nbsp;</p>
<h2>编译时用到的模块介绍</h2>
<p>apache的编译安装就不多说了，这里要提一下的是，<strong>安装apache模块的USE标记并不是跟着apache</strong>
</p>
<p><strong>走的</strong>
，而且单独配置的一套变量。</p>
<p>&nbsp;</p>
<p>以下是我需要用到的一些模块（黄色的变量即使编译时需要用到的模块列表），应该算是非常精简了：</p>
<p><img src="http://pic.yupoo.com/kenwug/670265cae318/medium.jpg" alt="" />
</p>
<p>&nbsp;</p>
<p>以上配置位于 /etc/make.conf</p>
<p>&nbsp;</p>
<p>dir 指定默认文档</p>
<p>mime 文档类型识别</p>
<p>authz_host 一些最简单的权限指令，比如Order deny, allow</p>
<p>rewrite 重写引擎</p>
<p>log_config 访问日志</p>
<p>mime_magic 针对前面的mime文档类型的补充</p>
<p>worker apache多路处理模块MPM的多线程实现</p>
<p>&nbsp;</p>
<p><strong>所有模块，你可以自由剪裁，但是，authz_host,mime,dir 这三个模块是必须的被添加的。</strong>
</p>
<p>这点，可以在 gentoo 的apache ebuild 描述文件中看出。</p>
<p><img src="http://pic.yupoo.com/kenwug/828305cae455/medium.jpg" alt="" />
</p>
<p>&nbsp;</p>
<p>以上配置，位于 /usr/portage/www-servers/apache/apache-2.2.9.ebuild</p>
<p>&nbsp;</p>
<h2>gentoo下定制需要启用的apache模块</h2>
<p>在gentoo下启用apache模块，是依靠传递 -D XX 参数给 httpd 进程，然后在配置文件中，将功能 XX 所属的配置块包在 &lt;IfDefine XX&gt; 标签内，来实现某一块功能的启用或屏蔽的。（不同于 &lt;IfModule&gt;标签，前者涉及面更广）</p>
<p>&nbsp;</p>
<p>这些屏蔽启用的参数，全部位于 <strong>/etc/conf.d/apache2</strong>
 ，这里是我的启用屏蔽设置。</p>
<p>&nbsp;</p>
<p><img src="http://pic.yupoo.com/kenwug/061355cae7d7/medium.jpg" alt="" />
</p>
<p>&nbsp;</p>
<p>从上面的图片中，看到，我只启用了PHP5和虚拟主机，其实，gentoo版apache提供了很多的参数。</p>
<p>&nbsp;</p>
<p><img src="http://pic.yupoo.com/kenwug/497095cae980/zajrotb7.jpg" alt="" />
</p>
<h2>配置部署结构</h2>
<p>gentoo版apache的配置文件部署结构，我认为是所见过apache配置中，比较灵活的。</p>
<p>它根据功能不同，细分了所有的功能模块配置。</p>
<p>&nbsp;</p>
<p>目录结构大致为</p>
<p>/etc/apache2/&nbsp; apache核心配置文件httpd.conf的所属目录</p>
<p>/etc/apache2/modules.d/&nbsp; apache模块各个配置文件所属的目录</p>
<p>/etc/apache2/vhost.d/&nbsp; apache虚拟主机配置文件所属的目录</p>
<p>/etc/apache2/ssl&nbsp;&nbsp; https用到的一些密钥</p>
<p>&nbsp;</p>
<p><img src="http://pic.yupoo.com/kenwug/805475caebf7/cipalwb8.jpg" height="161" alt="" width="654" />
</p>
<p>&nbsp;</p>
<p>仔细看modules.d这个目录下的配置，可以发现这些配置文件都是由序号和每个模块名组成的。</p>
<p>序号呢，主要是为了控制加载的顺序（由linux文件系统保证），模块名呢，当然就是这个模块的配置</p>
<p>都集中在当前文件里了。很灵活。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/209507#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 29 Jun 2008 19:52:20 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/209507</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/209507</guid>
      </item>
      <item>
        <title>挑了几个比较好用的eclipse 3.4新特性（附下载地址）</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/208037" style="color:red;">http://gentoo.group.javaeye.com/group/blog/208037</a>&nbsp;
          发表时间: 2008年06月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong><span style="color: #000000; font-size: small;">介绍</span>
</strong>
</p>
<p>eclipse 3.4 代号为ganymede （<span style="font-size: large;">G</span>
anymede (英语发音&quot;GAN
uh meed&quot;)为最大的木星
已知卫星，也是第七颗发现的木星卫星，在伽利略发现的
卫星中离木星第三近,在希腊神话中 Ganymede是一个特洛伊美人的男孩(一个美少男)，被宙斯带去给众神斟酒）。</p>
<p>&nbsp;</p>
<p><strong>1，面包屑</strong>
</p>
<p>其实就是当前类到项目(project)的路径，其中包括包和文件夹。</p>
<p>另外，使用者还可以自由地在同一路径下的某个节点处，纵向切换到其他元素。</p>
<p>&nbsp;</p>
<p><img title="Java Editor breadcrumb" src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/breadcrumb.png" alt="Picture showing the breadcrumb in the Java editor" />
</p>
<p>&nbsp;</p>
<p>在节点所在位置做一些操作,比如在同级新增一个类</p>
<p> <img title="Breadcrumb Context Menu" src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/breadcrumb-context-menu.png" alt="Context menu on breadcrumb item" />
</p>
<p>&nbsp;</p>
<p>纵向切换元素</p>
<p><img title="Breadcrumb Drop Down" src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/breadcrumb-drop-down.png" alt="Breadcrumb drop down" />
</p>
<p>&nbsp;</p>
<p><strong>2，针对有问题的代码，只要鼠标移动上去，就能提示解决方案信息</strong>
</p>
<p>&nbsp;</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/rich-problem-hover.png" alt="Enriched Problem Hover" />
</p>
<p>&nbsp;</p>
<p><strong>3，万能的快速协助(quick assist)</strong>
</p>
<p>只要在任何代码处，按 ctrl + 1，就有可能出现相关的提示，预测你的下一步动作。</p>
<p>&nbsp;</p>
<p>创建getter 和 setter</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/gettersetter-quickassist.png" alt="Screenshot of the 'create getter and setter' quick assist" style="margin-top: 0.5em;" />
</p>
<p>&nbsp;</p>
<p>抽取方法</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/extractmethod-quickassist.png" alt="Screenshot of the 'extract method' quick assist" style="margin-top: 0.5em;" />
</p>
<p>&nbsp;</p>
<p>将低性能的字符串拼接，改用StringBuilder</p>
<p><img title="'Convert to StringBuffer' quick assist" src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/convert-to-sb2.png" alt="Picture showing the 'Convert to StringBuffer' quick assist" style="margin-top: 0.5em;" />
</p>
<p>&nbsp;</p>
<p>将字符串拼接改用MessageFormat</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/convert-to-messageformat.png" alt="Picture showing the 'Convert to MessageFormat' quick assist" style="margin-top: 0.5em;" />
</p>
<p>&nbsp;</p>
<p><strong>4，按保存时，自动格式化代码（分格式化全文和格式化修改的代码）</strong>
</p>
<p>省去了，保存前，按ctrl + shift + f 的时间。</p>
<p>&nbsp;</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/save-action-preference.png" alt="Save action preference page" />
</p>
<p>&nbsp;</p>
<p><strong>5，当前元素的高亮功能，根据元素是被引用还是赋值（读或写），来</strong>
<strong>区分</strong>
<strong>不同的颜色</strong>
<strong></strong>
<strong>。</strong>
</p>
<p>&nbsp;</p>
<p><img title="Read and write accesses in the Java editor" src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/read-write-occs.png" alt="Picture showing read and write accesses in the Java editor" />
</p>
<p>&nbsp;</p>
<p><strong>6，annotation 格式化</strong>
</p>
<ul>
<li>Annotations on members:
<p> <img title="Member Annotation" src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/annotation-fmt-member.png" alt="A member annotation" />
</p>
</li>
<li>Annotations on parameters:
<p> <img title="Parameter Annotation" src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/annotation-fmt-param.png" alt="A parameter annotation" />
</p>
</li>
<li>Annotations on local variables:
<p> <img title="Local variable Annotation" src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/annotation-fmt-var.png" alt="A local variable annotation" />
</p>
</li>
</ul>
<p><strong>7, Junit 支持对线程内每个帧（方法）的调用时间输出</strong>
</p>
<p>&nbsp;</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/junit-time.png" alt="JUnit view with elapsed time" />
</p>
<p>&nbsp;</p>
<p><strong>8，在outline里，支持对同一个类中，方法的重排序</strong>
</p>
<p>&nbsp;</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/drag-and-drop-outline.png" alt="Outline view showing a drag and drop interaction." />
</p>
<p>&nbsp;</p>
<p><strong>9，查找某个元素的调用层次，支持更多，更细的内容，包括成员变量访问等，call hierarchy</strong>
</p>
<p>&nbsp;</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/call-hierarchy-members.png" alt="Caller Hierarchy on a field" />
</p>
<p>&nbsp;</p>
<p><strong>10，更多的搜索选项</strong>
</p>
<p>&nbsp;</p>
<p> <img title="Match location dialog" src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/finegrain-search.png" alt="Picture showing the match location selection UI" />
</p>
<p>&nbsp;</p>
<p><strong>11，加强了debug 变量查看功能，不需要再按 ctrl + shift + i 来查看变量的值</strong>
</p>
<p>&nbsp;</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/debug-hover.png" alt="Debug hover" />
</p>
<p>&nbsp;</p>
<p><strong>12，新增模拟服务端监听的debug功能</strong>
</p>
<p>&nbsp;</p>
<p><img src="http://ganymede-mirror1.eclipse.org/eclipse/downloads/drops/R-3.4-200806172000/whatsnew3.4/images/listening.png" alt="Connect tab using a socket listening connector" />
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #ff0000; font-size: small;">eclipse 最新版 3.4 下载链接地址：</span>
</p>
<p><a href="http://ganymede-mirror1.eclipse.org/eclipse/downloads/" target="_blank">http://ganymede-mirror1.eclipse.org/eclipse/downloads/</a></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/208037#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 25 Jun 2008 22:37:35 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/208037</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/208037</guid>
      </item>
      <item>
        <title>以稳定为导向的，gentoo gcc 优化策略</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/207648" style="color:red;">http://gentoo.group.javaeye.com/group/blog/207648</a>&nbsp;
          发表时间: 2008年06月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>昨天晚上，在linuxsir的精华版，研究了几篇gcc编译优化的文章，发现，如果要提高emerge软件的速度，必须要对</p>
<p>/etc/make.conf 里的 gcc 编译选项 CFLAGS,LDFLAGS 做一些简单的优化。</p>
<p>&nbsp;</p>
<p>这里有一篇详解CFLAGS的文章:</p>
<p><a href="http://blog.csdn.net/collide/archive/2004/12/28/231852.aspx">http://blog.csdn.net/collide/archive/2004/12/28/231852.aspx</a>
</p>
<p>&nbsp;</p>
<p>LDFLAGS文章看这里:</p>
<p><a href="http://www.linuxsir.org/bbs/thread155216.html">http://www.linuxsir.org/bbs/thread155216.html</a>
</p>
<p>&nbsp;</p>
<p>一开始，我先参照了，第一篇文章里的最高效能优化策略。作者称可以大幅提高编译后，软件的性能。</p>
<p>于是实验了一下 emerge php，但却发生了致命错误。</p>
<p>搞了半天也没找到原因，我估计是，这类优化，太过头了。凡事还是应该脚踏实地啊。</p>
<p>随后，就改成了这种， 相对稳定了很多。</p>
<p>&nbsp;</p>
<pre name="code" class="c">CFLAGS=&quot;-march=pentium-m -mtune=pentium-m -O2 -pipe -fomit-frame-pointer -mmmx -msse -msse2&quot;</pre>
<p>&nbsp;</p>
<p>而LDFLAGS，大致上分为两种</p>
<p>一种是</p>
<p><code><span style="color: #000000;"><span style="color: #0000bb;">LDFLAGS</span>
<span style="color: #007700;">=</span>
<span style="color: #dd0000;">&quot;-Wl,-O1&nbsp;-Wl,-z&nbsp;combreloc,--relax&nbsp;-Wl,--enable-new-dtags&nbsp;-Wl,--sort-common&nbsp;-s&quot; </span>
</span>
</code>
</p>
<p>&nbsp;</p>
<p>还有一种是</p>
<p>LDFLAGS=&quot;-Wl,-O2&quot;</p>
<p>&nbsp;</p>
<p>从配置两上，其实就可以看出，第一种的优化深度要高得多。</p>
<p>但由于第一次的尝试，为了稳定期间，还是选用了第二种。</p>
<p>&nbsp;</p>
<p>从以上的编译优化，可以看出，gentoo对系统的定制程度是非常高的。</p>
<p>只是限于对gcc的了解程度不够，汗。</p>
<p>不过，优化后，测试了一下php的编译速度，比以前快乐一些，还算比较满意，没有白忙活。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/207648#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 Jun 2008 21:35:10 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/207648</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/207648</guid>
      </item>
      <item>
        <title>更新gentoo基础设施baselayout到2，体验openrc的超高性能</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/206660" style="color:red;">http://gentoo.group.javaeye.com/group/blog/206660</a>&nbsp;
          发表时间: 2008年06月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今天，闲着没事，将gentoo的baselayout更新到了2代。</p>
<p>照着官方文档做，少走了不少歪路。</p>
<p>&nbsp;</p>
<p><a href="http://www.gentoo.org/doc/zh_cn/openrc-migration.xml" target="_blank">http://www.gentoo.org/doc/zh_cn/openrc-migration.xml</a></p>
<p>&nbsp;</p>
<p>其中，有几点，是官方文档上没提到的，这边描述一下：</p>
<p>&nbsp;</p>
<p>1，clock这个init script在安装完baselayout-2后，没有被删除，而新的baselayout已经采用了hwclock作为系统时钟程序。因此，需要手动删除这个script，否则启动init时，可能会出现ERROR字样。</p>
<p>2，文档上说，安装完重启后，net.eth0会消失，但是我的这个软链接还健在，难道是我的RP比较高？？</p>
<p>3，还有，时钟的timezone,在安装完后，以前的市区已经自动移植到/etc/timezone里了。我的是 Asia/Shanghai</p>
<p>4，因为没使用X windows,所以，XSESSIONS没设置过，不知道有没有问题。</p>
<p>&nbsp;</p>
<p>最后，跟大家分享一下，openrc作为新的RC系统，丝毫不比老的差。</p>
<p>在init进程调用它时，比起以前的RC，真的有质的飞跃。</p>
<p>整个启动过程，整整加快了3倍。</p>
<p>（openrc是用C重写的，以前用shell，差距太大了，C才是王道）</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/206660#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 21 Jun 2008 14:59:14 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/206660</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/206660</guid>
      </item>
      <item>
        <title>gentoo &amp; linux 系统启动步骤分析</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/204947" style="color:red;">http://gentoo.group.javaeye.com/group/blog/204947</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>首先推广一下javaeye的 <a href="http://gentoo.group.javaeye.com/" target="_blank">gentoo圈子</a>
</p>
<p><br id="c4ef" />
以下步骤，是基于已安装版本（非livecd）分析的。<br id="c4ef0" />
<br id="c4ef1" />
按序号从小到大执行：<br id="nr-s" />
</p>
<ol id="nr-s0">
<li id="nr-s1">linux 内核加载完硬件驱动后，启动 init 用户根进程（最后的引导步骤）。<br id="r39g" />
<br id="r39g0" />
</li>
<li id="nr-s1">init 用户进程读取 /etc/inittab 配置文件，进行系统环境初始化。<br id="slzm" />
inittab配置文件：<br id="r39g1" />
<div id="tafs" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_331c9pfksgq_b" id="slzm0" alt="" style="width: 603px; height: 664px;" />
</div>
<br id="r39g2" />
</li>
<li id="nr-s1">按照 inittab 文件中的配置，首先会执行 &quot;id:3:initdefault:&quot;，作用是定义默认的启动级别(runlevel)<br id="i:o7" />
<br id="i:o70" />
</li>
<li id="nr-s1">按照 inittab 文件中的配置，执行 &quot;si::sysinit:/sbin/rc sysinit&quot;。作用是执行 /sbin/rc sysinit 指令，进行本地文件系统的mount和初始化。<br id="uipx" />
<br id="uipx0" />
</li>
<li id="nr-s1">rc 脚本是由 /sbin/runscript 指令来执行的，从截屏中最上部分的 &quot;#!/sbin/runscript&quot; 可以看出。<br id="a.2l" />
在 rc 脚本里，首先会 source 一下 /sbin/functions.sh，这里主要是做一些<span id="hta2" style="color: #ff0102;"><span id="hta20" style="color: #000102;">环境变量，公用函数的预定义</span>
</span>
<span id="hta2" style="color: #ff0102;"><span id="hta20" style="color: #000102;">。</span>
</span>
<br id="h8b7" />
下面的 RC_INTERACTIVE if判断，可以设定，是否以交互方式，来启动。默认是不交互的。<br id="sxmi" />
<div id="pufv" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_332fj4cbgd2_b" id="sxmi0" alt="" style="width: 548px; height: 264px;" />
</div>
<br id="x:nv" />
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">接下来，跳过一些函数定义，能够看到如下截屏的代码，作用是</span>
<span id="hta221" style="color: #000000;">只在传递了 sysinit 参数时设置好</span>
<span id="hta221" style="color: #000000;">PATH环境变量，启用字符设备，设置系统消息的级别。<br id="pmnz" />
<div id="ye5x" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_333ghhxpbs7_b" id="pmnz0" height="368" alt="" width="627" />
</div>
</span>
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">检查 /proc 目录是否存在，如果不存在这个目录，那么提示错误信息，并 unmount 所有的文件系统，重启。如果存在，那么提示成功信息，并尝试mount proc，有异常就提示。<br id="cqn7" />
<div id="r9lz" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_3349rwqt2cc_b" id="qu3k" alt="" style="width: 568px; height: 136px;" />
<br id="dr5r" />
<br id="c4ef2" />
</div>
</span>
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">如果当前内核版本是2.6.0的，那么看一下 /sys 目录是否存在，不存在提示错误，存在的话，尝试mount sys文件系统。 <br id="xfpa" />
<div id="otjs" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_336hm9krgc8_b" id="xfpa0" height="197" alt="" width="616" />
</div>
</span>
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">检查 /dev 目录是否存在，</span>
<span id="hta221" style="color: #000000;">如果不存在这个目录，那么提示错误信息，并 unmount 文件系统，重启。如果存在，则 fix 掉一个官方称之为比较神奇的关于devfs 的 bug。</span>
<span id="hta221" style="color: #000000;">
<div id="f-sp" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_337hdr79n8k_b" id="jjeg0" alt="" style="width: 644px; height: 193px;" />
</div>
</span>
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">尝试弄清楚用户希望如何运用 /dev 设备，以及看内核是否支持 /dev，依赖文件是否缺少，启动参数是否正确等。<br id="im7." />
<div id="i6:v" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_3385n5th7cp_b" id="nuz-" alt="" style="width: 614px; height: 450px;" />
</div>
</span>
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">如果内核版本为 2.5.68 ，那么还需要 mount pts设备(/dev/pts)<br id="qgxp" />
<div id="ni6a" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_339d6pk6tfp_b" id="qgxp0" height="384" alt="" width="616" />
</div>
</span>
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">开始记录启动日志<br id="lw3e" />
<div id="vr5_" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_340hpxqxbhm_b" id="s503" alt="" style="width: 540px; height: 31px;" />
</div>
</span>
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">设置默认的启动级别。逻辑：<br id="nf1u" />
内
核命令行参数(在引导配置中，跟在内核后面的bootlevel和softlevel，比如grub.conf里 kernel
/boot/vmlinuz root=/dev/hda3 bootlevel=another1 softlevel=another2)<br id="jqi4" />
<br id="jqi40" />
有设置 bootlevel = xx，则以xx为启动级别。默认 boot</span>
<span id="hta221" style="color: #000000;"><br id="vk63" />
设置 softlevel = xx，则以xx为默认级别，默认 default<br id="vs4y" />
<div id="vjwc" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_341vht86qgw_b" id="vs4y0" alt="" style="width: 480px; height: 61px;" />
</div>
</span>
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">获得关键服务列表, 这里的关键服务指的是 boot 级别的服务，默认为 checkroot modules checkfs localmount clock bootmisc<br id="c2ld" />
<div id="f:ai" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_34395fxcr79_b" id="dzw4" alt="" style="width: 535px; height: 58px;" />
</div>
</span>
</li>
<li id="nr-s1"><span id="hta221" style="color: #000000;">将 checkroot 和 modules 两个启动服务先启来。<br id="v2hj" />
然后启动一些磁盘扩展设备程序<br id="xjy1" />
启动在boot级别里，除checkroot和modules的其他服务<br id="mz78" />
<div id="ev27" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_344dz337ddh_b" id="mz780" alt="" style="width: 558px; height: 267px;" />
</div>
</span>
</li>
</ol>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/204947#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 17 Jun 2008 23:55:00 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/204947</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/204947</guid>
      </item>
      <item>
        <title>gentoo关键引导步骤 - init进程详解</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/204032" style="color:red;">http://gentoo.group.javaeye.com/group/blog/204032</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>首先推广一下javaeye的 <a href="http://gentoo.group.javaeye.com/" target="_blank">gentoo圈子</a>
</p>
<p>&nbsp;</p>
<h1>介绍</h1>
<p>
init 是由内核启动的用户进程，处于系统引导的最后一步。<br id="cwel" />
内核会在这最后一步，尝试执行/sbin/init指令，如果找不到init，内核会执行/bin/sh，如果执行失败或找不到，将直接导致系统启动失败。<br id="wgsf" />
当然，一般情况下，这种出错概率还是很低的。完成这一步，就表示系统启动引导完成了。<br id="wgsf0" />
作为系统里第一个进程，init当然会有它的特色，即进程的id为1。<br id="yfpm" /></p>
<h1>详解</h1>
<p>
以下转自 linuxsir 的<strong id="aoab"> jarchun </strong>
写的文章，分析了init启动时的一些细节：<br id="x-vv" />
<br id="kh_i" />
&nbsp;&nbsp;&nbsp; init会按任务表/etc/inittab里面的设置运行对应的脚本。我们可以为系统制定多个运行环境以满足不同任务的需要，在 inittab中称之为运行等级（runlevel）。
</p>
<div id="kh_i0">&nbsp;&nbsp;&nbsp; 下面是我的gentoo的/etc/inittab文件:</div>
<div id="kh_i1">&nbsp;<br id="qsf5" />
<div id="res9" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_329gs9zg7ct_b" id="q5.3" alt="" style="width: 495px; height: 652px;" />
</div>
</div>
<p><br id="qsf51" />
</p>
<div id="kh_i27">&nbsp;&nbsp;&nbsp; 该文件有一个基本类型的指令，它们指定命令行，命令行所采取的动作，在何种运行等级下激活命令。这引起命令行的格式大体如下：</div>
<div id="kh_i28">id:runlevels:action:process</div>
<div id="kh_i29">&nbsp;&nbsp;&nbsp; id是任意一个名称（具体是什么并不重要），runlevels是一个数字串（代表运行等级），action描述何时执行命令，process指定执行的实际命令。<br id="k-6q" />
<br id="k-6q0" />
</div>
<div id="kh_i30">&nbsp;&nbsp;&nbsp; 拿启动agetty的命令行举例：</div>
<div id="kh_i31">c1:12345:respawn:/sbin/agetty 38400 tty1 linux</div>
<div id="kh_i32">&nbsp;&nbsp;&nbsp; 该命令告诉init，它应该在引导后以运行等级1-5运行命令/sbin/agetty 38400 tty1。动作标记respawn表示命令在退出时重新运行（当用户在shell输入exit的时候）。<br id="k-6q1" />
<br id="k-6q2" />
</div>
<div id="kh_i33">&nbsp;&nbsp;&nbsp; &middot;respawn：启动命令并监视命令的执行，当进程退出时，再次执行该命令（通常用于虚拟终端设备上的登录提示）。 </div>
<div id="kh_i34">&nbsp;&nbsp;&nbsp; &middot;wait：进入指定运行等级时，启动进程。init会停下来，直到执行完成。这个标记用于设置特定等级下软件的启动。<br id="kh_i35" />
&nbsp;&nbsp;&nbsp; &middot;once：进入指定的任一运行等级时，启动一次进程。<br id="kh_i36" />
&nbsp;&nbsp;&nbsp; .boot:当系统启动时执行,这种类型的执行忽略runlevel.</div>
<div id="kh_i37">&nbsp;&nbsp;&nbsp; .bootwait:当系统启动时执行,init进程等待这些脚本执行完成,象/etc/rc.</div>
<div id="kh_i38">&nbsp;&nbsp;&nbsp; &middot;initdefault：这种类型的项指定在系统引导时进入哪个运行等级。<br id="kh_i39" />
&nbsp;&nbsp;&nbsp; .sysinit:在boot或者bootwait之前启动,这种类型的执行忽略runlevel.</div>
<div id="kh_i40">&nbsp;&nbsp;&nbsp; &middot;powerwait：这类指令给出在电源不足时需要执行的命令。init直到进程完成后才继续工作。<br id="kh_i41" />
&nbsp;&nbsp;&nbsp; &middot;powerfail：与powerwait类似，但init不等待进程完成。<br id="kh_i42" />
&nbsp;&nbsp;&nbsp; &middot;powerworkwait：电源正常后执行。init暂停，直到进程结束。<br id="kh_i43" />
&nbsp;&nbsp;&nbsp; &middot;powerfailnow：当便携机电池或外部UPS电池电量不足时执行。<br id="kh_i44" />
&nbsp;&nbsp;&nbsp; &middot;ctrlaltdel：指定init在捕获ctrl+alt+del组合键时执行的命令。<br id="kh_i45" />
&nbsp;&nbsp;&nbsp; &middot;kbdrequest：把特殊动作映射到特定的按键。Debian中的是alt+UpArrow。</div>
<div id="kh_i46">&nbsp;</div>
<div id="kh_i47">&nbsp;&nbsp;&nbsp; 从上面的分析可以看到:</div>
<div id="kh_i48">&nbsp;&nbsp;&nbsp; id:3:initdefault:</div>
<div id="kh_i49">&nbsp;&nbsp;&nbsp; #系统的缺省级别是3<br id="dtyt" />
<br id="dtyt0" />
</div>
<div id="kh_i50">&nbsp;&nbsp;&nbsp; si::sysinit:/sbin/rc sysinit</div>
<div id="kh_i52">&nbsp;&nbsp;&nbsp; #系统启动时自动执行脚本/sbin/rc sysinit<br id="sesx" />
<br id="sesx0" />
</div>
<div id="kh_i53">&nbsp;&nbsp;&nbsp; l3:3:wait:/sbin/rc default</div>
<div id="kh_i54">&nbsp;&nbsp;&nbsp; #当系统运行级别是3的时候，init等待/sbin/rc default执行完<br id="sesx1" />
<br id="sesx2" />
</div>
<div id="kh_i55">&nbsp;&nbsp;&nbsp; c1:12345:respawn:/sbin/agetty 38400 tty1 linux<br id="kh_i56" />
&nbsp;&nbsp;&nbsp; #在1-5运行级别的时候运行/sbin/agetty，如果进程退出，再次执行/sbin/agetty<br id="sesx3" />
<br id="sesx4" />
</div>
<div id="kh_i57">&nbsp;&nbsp;&nbsp; ca:12345:ctrlaltdel:/sbin/shutdown -r now</div>
<div id="kh_i58">&nbsp;&nbsp;&nbsp; #在1-5运行级别按下ctrlaltdel,那么系统就shutdown now!!!<br id="sesx5" />
<br id="sesx6" />
</div>
<div id="kh_i59">&nbsp;&nbsp;&nbsp; x:a:once:/etc/X11/startDM.sh</div>
<div id="kh_i60">&nbsp;&nbsp;&nbsp; #不管是什么runlevel,都会执行/etc/X11/startDM.sh,启动X,只有启动一次</div>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/204032#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 11:19:45 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/204032</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/204032</guid>
      </item>
      <item>
        <title>gentoo配置文件更新器etc-update详解</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/203871" style="color:red;">http://gentoo.group.javaeye.com/group/blog/203871</a>&nbsp;
          发表时间: 2008年06月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>首先推广一下javaeye的 <a href="http://gentoo.group.javaeye.com/" target="_blank">gentoo圈子</a>
</p>
<p>&nbsp;</p>
<h2><span class="mw-headline" id="qx4g0">介绍<br id="qx4g1" />
</span>
</h2>
<p id="qx4g7">etc-update是一个类似版本管理工具中的merge功能的gentoo工具。当你更新系统或软件后，难免会有新的配置选项下来，这样，就会跟老的配置内容有冲突。etc-update可以帮助你解决这些冲突。</p>
<p id="qx4g7">另外，etc-update还有个备份配置文件功能，具体可以参看/etc/dispatch-conf里的配置说明。</p>
<p id="qx4g7"><br id="e.sg" />
</p>
<h2 id="sry_"><span class="mw-headline" id="sry_0">使用<br id="sry_1" />
</span>
</h2>
<ol id="sry_2">
<li id="sry_3"> 运行 etc-update 命令</li>
<li id="sry_4">你会看到一个冲突文件列表。针对每个文件，你能：<br id="sry_6" />
<ol id="sry_7">
<li id="sry_8"> 自动解决冲突</li>
<li id="sry_9"> 丢弃更新的内容<br id="hw1y" />
</li>
<li id="sry_10"> 交互式解决冲突</li>
<li id="sry_11"> 忽略更新，保持原样</li>
</ol>
</li>
</ol>
<p id="sry_12">如果你查看冲突情况，按 enter</p>
<p id="sry_12">如果想退出，按 q</p>
<p id="sry_12"><br id="n-xh" />
</p>
<h3 id="nf:a">常用的方式：交互式解决冲突</h3>
<p id="zyor2">available command:
</p>
<ul id="zyor3">
<li id="zyor4"> <strong id="zyor5">ed</strong>
:     Edit then use both versions, each decorated with a header.
</li>
<li id="zyor6"> <strong id="zyor7">eb</strong>
:     Edit then use both versions.
</li>
<li id="zyor8"> <strong id="zyor9">el</strong>
:     Edit then use the left version.
</li>
<li id="zyor10"> <strong id="zyor11">er</strong>
:     Edit then use the right version.
</li>
<li id="zyor12"> <strong id="zyor13">e</strong>
:      Edit a new version.
</li>
<li id="zyor14"> <strong id="zyor15">l</strong>
:      Use the left version.
</li>
<li id="zyor16"> <strong id="zyor17">r</strong>
:      Use the right version.
</li>
<li id="zyor18"> <strong id="zyor19">s</strong>
:      Silently include common lines.
</li>
<li id="zyor20"> <strong id="zyor21">v</strong>
:      Verbosely include common lines.
</li>
<li id="zyor22"> <strong id="zyor23">q</strong>
:      Quit.
</li>
</ul>
<p><br id="cj0s" />
这种交互方式，官方wiki上推荐用的。<br id="cocq" />
但是个人还是觉得不好用，可能是因为对vim情有独钟的缘故。建议直接使用vimdiff。<br id="cj0s0" />
用 do,dp 之类的内部指令来实现，效率更高。<br id="f:xj" />
<br id="f:xj0" />
当然要使用 vimdiff 作为比较工具，需要修改配置文件。如下：<br id="gjiu" />
<br id="gjiu0" />
</p>
<blockquote id="m4e3"># For emacs-users (see NOTE_2)<br id="gjiu1" />
# diff_command=&quot;eval emacs -nw --eval=\'\(ediff\ \&quot;%file1\&quot;\ \&quot;%file2\&quot;\)\'&quot;<br id="gjiu2" />
#using_editor=1<br id="gjiu3" />
<br id="gjiu4" />
&nbsp;# vim-users: you CAN use vimdiff for diff_command. (see NOTE_1 and NOTE_2)<br id="gjiu5" />
&nbsp;diff_command=&quot;vim -d %file1 %file2&quot;<br id="gjiu6" />
&nbsp;using_editor=1<br id="gjiu7" />
&nbsp;<br id="gjiu8" />
&nbsp;#diff_command=&quot;diff -uN %file1 %file2&quot;<br id="gjiu9" />
&nbsp;#using_editor=0<br id="m4e30" />
</blockquote>
<p>保留 vim 那行注释，注释掉其他的 diff_command 就行了。注意 using_editor = 1<br id="m4e31" />
<br id="ooj9" />
</p>
<h1 id="bb75"><span style="font-size: medium;"><strong id="ooj91">etc-update配置文件说明:</strong>
</span>
</h1>
<p id="epuc0">etc-update的配置文件在 <span style="color: green;">/etc/etc-update.conf</span>
</p>
<h2 id="vpkk"><a name="Automerging_changes" id="epuc2"></a>
自动解决冲突</h2>
<blockquote id="n501">
<pre>eu_automerge=yes/no<br id="epuc9" />



</pre>
</blockquote>
<h2 id="vpkk0"><a name="Additional_parameters" id="epuc10"></a>
解决冲突过程中，调用的系统指令附加参数</h2>
<p id="epuc15">比如给rm,cp,mv等系统指令添加参数</p>
<blockquote id="slj:">
<pre>rm_opts=&quot;-i&quot;<br id="epuc17" />



mv_opts=&quot;-i&quot;<br id="epuc18" />



cp_opts=&quot;-i&quot;<br id="epuc19" />



</pre>
</blockquote>
<h3 id="dh00"><a name="Diff_command" id="epuc20"></a>
比较指令</h3>
<p id="epuc25">默认的比较指令<br id="ke8d" />
</p>
<blockquote id="ke8d0">
<pre>diff_command=&quot;diff -uN %file1 %file2&quot;<br id="epuc27" />



using_editor=0<br id="epuc28" />



</pre>
</blockquote>
<p id="epuc29">使用vimdiff作为比较指令：<br id="ke8d1" />
</p>
<blockquote id="ke8d2">
<pre>diff_command=&quot;vim -d %file1 %file2&quot;<br id="epuc31" />



using_editor=1<br id="epuc32" />



</pre>
</blockquote>
<h3 id="dh000"><a name="Merge_command" id="epuc33"></a>
冲突解决命令</h3>
<blockquote id="rarn0">
<pre>sdiff -s -o %merged %orig %new<br id="epuc40" />



</pre>
</blockquote>
<h3 id="dh001"><a name="Colored_output" id="epuc42"></a>
彩色的比较工具</h3>
<p id="epuc47">如果你比较喜欢彩色的比较工具，你可以安装 colordiff 这个小工具。<br id="wx1r1" />
</p>
<blockquote id="wx1r2">
<pre># emerge colordiff<br id="epuc49" />



</pre>
</blockquote>
<table cellspacing="0" border="0" id="epuc50" width="100%" cellpadding="0" style="border: 1px solid #ffbfbf; background-color: #fff2f2;">
<tbody id="epuc51">
<tr id="epuc52">
<td id="epuc53" style="border-bottom: 1px solid #888888; background-color: #ffafaf;"> <span><strong id="epuc55">File:</strong>
  /etc/etc-update.conf</span>
</td>
</tr>
<tr id="epuc56">
<td id="epuc57">
<div class="scroll" id="epuc58"> 
 
 diff_command=&quot;colordiff -uN %file1 %file2&quot;</div>
</td>
</tr>
</tbody>
</table>
<p id="epuc59">You may also need to change less to accept raw input if you are using it as your pager.
</p>
<table cellspacing="0" border="0" id="epuc60" width="100%" cellpadding="0" style="border: 1px solid #ffbfbf; background-color: #fff2f2;">
<tbody id="epuc61">
<tr id="epuc62">
<td id="epuc63" style="border-bottom: 1px solid #888888; background-color: #ffafaf;"> <span><strong id="epuc65">File:</strong>
  /etc/etc-update.conf</span>
</td>
</tr>
<tr id="epuc66">
<td id="epuc67">
<div class="scroll" id="epuc68"> 
 
 pager=&quot;less -r&quot;</div>
</td>
</tr>
</tbody>
</table>
<p><br id="m4e32" />
</p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/203871#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 15 Jun 2008 22:45:59 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/203871</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/203871</guid>
      </item>
      <item>
        <title>一些常用的vim指令和技巧（不断更新中）</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/201549" style="color:red;">http://gentoo.group.javaeye.com/group/blog/201549</a>&nbsp;
          发表时间: 2008年06月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;</p>
<ol id="jvwd0">
<li id="jvwd1">h 左，j 下， k 上， l 右</li>
<li id="jvwd2">x 删除当前光标后的一个字符</li>
<li id="jvwd2">i 在当前光标插入</li>
<li id="jvwd2">u 撤销一次操作</li>
<li id="jvwd2">ctrl + r 重复上一次操作</li>
<li id="jvwd2">w 向右移动一个词首</li>
<li id="jvwd2">b 向左移动一个词首</li>
<li id="jvwd2">e 向左移动到一个词末</li>
<li id="jvwd2">ge 左右移动到一个词末</li>
<li id="jvwd2">W 向右移动到句首</li>
<li id="jvwd2">B 向左移动到句首</li>
<li id="jvwd2">E 向右移动到句末</li>
<li id="jvwd2">gE 向左移动到句末<br id="s8ok0" />
</li>
<li id="jvwd2">^ 行首</li>
<li id="jvwd2">$ 行尾</li>
<li id="jvwd2">f + 字母，当前行，当前光标向左定位到指定字母处（常用操作）</li>
<li id="jvwd2">F + 字母，当前行，当前光标向右定位到指定字母处</li>
<li id="jvwd2">% 匹配括号</li>
<li id="jvwd2">数字 + gg，定位到数字行</li>
<li id="jvwd2">数字 + %，定位到占全文百分之数字的行</li>
<li id="jvwd2">ctrl + f，向下翻页</li>
<li id="jvwd2">ctrl + b，向上翻页</li>
<li id="jvwd2">/字符串，以当前光标为基准，向下全文查找字符串，支持正则表达式</li>
<li id="jvwd2">?字符串，以当前光标为基准，向上全文查找字符串，支持正则表达式</li>
<li id="jvwd2">c，修改，即删除文本后，进入插入模式</li>
<li id="jvwd2">v，进入可视模式</li>
<li id="jvwd2">y，拷贝内容</li>
<li id="jvwd2">split/vsplit 将一个文件切成两个的窗口，合理利用屏幕资源(默认是横着分，vsplit是垂直分)</li>
<li id="jvwd2">ctrl + w 在多个窗口间切换</li>
<li id="jvwd2">:qall 退出所有窗口</li>
<li id="jvwd2">比较两个文件的差异，vimdiff</li>
<li id="jvwd2">do 获取右边与左边不一样的(diff obtain)</li>
<li id="jvwd2">dp 将左边的放到右边(diff put)</li>
<li id="jvwd2">:s/target/replace/g 替换当前行的target字符串到replace,/g指的是同一行内多次匹配</li>
<li id="jvwd2">:1,5s/target/replace/g 替换第一行到第五行中的target字符串到replace<br id="w36i0" />
</li>
<li id="jvwd2">:%s/target/replace/g 替换整个文件中的target字符串到replace,/g表示整<code class="example" id="veu11">行</code>
</li>
<li id="jvwd2">:s<span style="color: #000000;">/</span>
<span style="color: #000000;">\([^,]*\)</span>
<span style="color: #000000;">,</span>
<span style="color: #000000;">\(.*\)</span>
/\2 \1/g 反向引用，将第一个和第二个正则子表达式匹配的值置换下位子</li>
<li id="jvwd2">g ctrl + g 显示字符数，字数，行和列</li>
<li id="jvwd2">快速选中技巧: v + f 或 v + / 组合</li>
<li id="jvwd2">gu / gU 小写/大写</li>
<li id="jvwd2">:read 读一个文件到当前光标下 简写 :r<br id="s.7e0" />
</li>
<li id="jvwd2">:write 写入另一个文件中 简写 :w<br id="l_8s0" />
</li>
<li id="jvwd2">q: 指令历史记录</li>
<li id="jvwd2">:[range]! xx 执行shell指令，比如 1,5!cat -n则，使1到5行加上行号<br id="i:-g0" />
</li>
<li id="jvwd2">:tabedit 在同一个vim进程里，新建一个tab，共享寄存器和内存</li>
<li id="jvwd2">gt 在tab间切换</li>
<li id="jvwd2">\c 当在前指令里忽略大小写，比如查找word的指令 /\cword ，那么 word,Word,WORD都将匹配</li>
<li id="jvwd2">:iabbrev 定义快捷字符串模板，比如 :iabbrev ad adverisement 那么在你进行编辑文本时，输入ad+空格，就会自动补全ad这个单词。如果要每次都是用，最好加到 vimrc 里.</li>
<li id="jvwd2">使用 * 键可以向后搜索光标所在位置的单词。反之，使用 # 键可以向前搜索光标所在位置的单词。</li>
<li id="jvwd2">使用 ga 可以看到光标下的字符的ASCII值。</li>
<li id="jvwd2">用 xp 来交换两个字符，用 ddp 来交换两行。</li>
<li id="jvwd2">使用如下命令给正在编辑的文件添加行号：  :%!cat -n</li>
</ol>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/201549#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 09 Jun 2008 19:54:49 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/201549</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/201549</guid>
      </item>
      <item>
        <title>Vmware下编译gentoo内核</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/196336" style="color:red;">http://gentoo.group.javaeye.com/group/blog/196336</a>&nbsp;
          发表时间: 2008年05月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
    
    

    
    

    
    
<span style="font-size: small;"><strong id="r-tf1"><span style="font-size: medium;">下载&amp;安装vmware</span>
<br id="n.b:0" />
</strong>
<span style="font-size: small;">下载vmware可以到官网，也可以到天空，霏凡，华军等下载。</span>
<br id="e1eb1" />
<span style="font-size: small;">这里推荐用官方的，因为版本可能会更新一点。<br id="rvz80" />
但是，一直令人头痛的收费问题，还是比较难搞定。</span>
<span style="font-size: small;">于是，只能 google serialnum。</span>
<br id="n.b:1" />
<strong id="r-tf1"><br id="n.b:2" />
<span style="font-size: medium;">确定内核版本</span>
</strong>
</span>
<span style="font-size: small;"><br id="r-tf2" />
首先，确定你要使用的内核版本，一般情况下，建议使用最新版本的。<br id="mqmc0" />
截至到今天，gentoo的最新内核版本是: v2.6.24-gentoo-r4<br id="mqmc1" />
<br id="oh:e0" />
你也可以通过以下指令获取最新的版本。<br id="mkdf0" />
</span>
</p>
<blockquote id="mkdf1">
<p id="mkdf2"><span style="font-size: small;">emerge -s gentoo-source</span>
</p>
</blockquote>
<p><span style="font-size: small;">&nbsp;</span>
</p>
<div id="rhxe" style="padding: 1em 0pt; text-align: left;"><span style="font-size: small;"><img src="http://docs.google.com/File?id=dtbhrmv_312dv3xqvzz_b" id="kswj0" height="179" alt="" width="650" />
</span>
</div>
<p><span style="font-size: small;">如果你已经在正常使用gentoo，那么，新版本也会在你更新emerge时，被下载下来。<br id="s0.j0" />
</span>
</p>
<blockquote id="fxja0"><span style="font-size: small;">emerge -avtuDN world<br id="oh:e2" />
</span>
</blockquote>
<p><span style="font-size: small;">具体内核的位置在 /usr/src 下<br id="t.iy0" />
</span>
</p>
<div id="pn6d" style="padding: 1em 0pt; text-align: left;"><span style="font-size: small;"><img src="http://docs.google.com/File?id=dtbhrmv_313frs2dhgb_b" id="ol0k0" alt="" style="width: 661px; height: 59px;" />
</span>
</div>
<p><span style="font-size: small;">当你经常update merge时，这个目录下应该会有各种版本的内核，所以，我们要建立一个软连接，到我们需要<br id="djmu0" />
编译的内核上。<br id="djmu1" />
比如，上面的 linux 指向到了 /usr/src/linux-2.6.24-gentoo-r4<br id="djmu2" />
<br id="djmu3" />
</span>
<span style="font-size: medium;"><strong id="b3ru1">配置编译选项</strong>
</span>
<span style="font-size: small;"><br id="b3ru2" />
</span>
<span style="font-size: small;">如果你是第一次编译，或者没有保存 .config 编译选项配置文件。<br id="b3ru4" />
那么请到内核目录下(/usr/src/linux)先运行一下：<br id="b3ru5" />
</span>
</p>
<blockquote id="b3ru6"><span style="font-size: small;">make defconfig</span>
<span style="font-size: small;"><br id="b3ru8" />
</span>
</blockquote>
<p><span style="font-size: small;">生成默认的配置文件。<br id="b3ru10" />
它可以为我们节省很多定制时间，但是，只采用默认配置，往往都是有问题。<br id="j5rz0" />
比如cpu类型和文件系统，网卡驱动这些很容易产生兼容性问题，所以最好还是自己经手定制过。<br id="sxom0" />
<br id="sxom1" />
定制内核编译选项：<br id="sxom2" />
</span>
</p>
<blockquote id="wtwv0"><span style="font-size: small;">make menuconfig</span>
<span style="font-size: small;"><br id="sxom3" />
</span>
</blockquote>
<p><span style="font-size: small;">以服务器为目标，需要调整的几项，分别是：</span>
<span style="font-size: small;"><br id="qs1b0" />
根目录截图：<br id="wtwv2" />
</span>
<span style="font-size: small;">
<div id="y5nb" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_314g2hfj3gp_b" id="gego0" alt="" style="width: 387px; height: 265px;" />
</div>
</span>
<span style="font-size: small;"><br id="wtwv1" />
</span>
<span style="font-size: small;">1，cpu类型</span>
<span style="font-size: small;"><br id="bkzr0" />
</span>
<span style="font-size: small;">这里选择根目录下的 Processor type and features 按回车</span>
<span style="font-size: small;"><br id="jfpb1" />
</span>
</p>
<div id="y5nb" style="padding: 1em 0pt; text-align: left;"><span style="font-size: small;">然后根据自己处理器的类型选择 Processor family<br id="jfpb2" />
</span>
</div>
<div id="cqrh" style="padding: 1em 0pt; text-align: left;"><span style="font-size: small;"><img src="http://docs.google.com/File?id=dtbhrmv_315nt6m36d9_b" id="jfpb3" alt="" style="width: 565px; height: 171px;" />
</span>
</div>
<p><span style="font-size: small;"><br id="wtwv4" />
2，网卡驱动<br id="jfpb4" />
选择根目录下的 Device Driver ， 然后选择 Network Device Support<br id="p1cg0" />
选择 Ethernet (10 or 100Mbit) <br id="bp.z0" />
</span>
</p>
<div id="ti9n" style="padding: 1em 0pt; text-align: left;"><span style="font-size: small;"><img src="http://docs.google.com/File?id=dtbhrmv_3163gj8qg7b_b" id="p1cg1" alt="" style="width: 537px; height: 361px;" />
<br id="d6m60" />
下面，取消所有的勾选，只留图中显示的AMD驱动（因为vmware默认用这个驱动虚拟网卡）<br id="d6m61" />
</span>
</div>
<div id="dgll" style="padding: 1em 0pt; text-align: left;">
<div id="clk3" style="padding: 1em 0pt; text-align: left;"><span style="font-size: small;"><img src="http://docs.google.com/File?id=dtbhrmv_318d5tg87cx_b" id="d6m62" alt="" style="width: 551px; height: 371px;" />
</span>
</div>
</div>
<p><span style="font-size: small;">3，文件系统<br id="wlfa0" />
这里可以根据自己想要的文件系统，进行勾选，图中，我只保留了 ext2 和 reiserFS。<br id="qjsv0" />
</span>
</p>
<div id="laod" style="padding: 1em 0pt; text-align: left;"><span style="font-size: small;"><img src="http://docs.google.com/File?id=dtbhrmv_319sjjqvjhn_b" id="ysjm0" alt="" style="width: 402px; height: 380px;" />
</span>
</div>
<p><span style="font-size: small;"><br id="wtwv7" />
其他配置，可以根据自己的需求来设置。<br id="p8_t1" />
当我们编译选项的配置后，就可以开始漫长的编译过程了。<br id="p8_t2" />
</span>
</p>
<blockquote id="fetj0"><span style="font-size: small;">make &amp;&amp; make modules_install &amp;&amp; make install</span>
<span style="font-size: small;"><br id="ewyl0" />
</span>
</blockquote>
<p><span style="font-size: small;"><span style="font-size: medium;"><strong id="xzzm0"><span>启用新内核<br id="u34e0" />
</span>
</strong>
</span>
</span>
<span style="font-size: small;"><br id="j_n:0" />
</span>
<span style="font-size: small;">编译安装完成后，make指令会刷新 /boot下的系统符号表，内核配置，内核文件。<br id="bytu0" />
<div id="p.cz" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_322hch96jnc_b" id="bytu1" alt="" style="width: 648px; height: 119px;" />
</div>
接下来，需要检查一下引导工具的配置是否正确。<br id="pdv10" />
一般来说，make install 生成的内核文件名为 vmlinuz，所以，引导工具上配置的内核应该还是vmlinuz。</span>
<span style="font-size: small;"><br id="bf-l0" />
<br id="bf-l1" />
我使用的是 grub, 所以到 /boot/grub下查看 grub.conf 配置到新内核上。<br id="pdv11" />
<div id="o6nz" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_323hs9cn4cn_b" id="io:p0" alt="" style="width: 362px; height: 98px;" />
</div>
<br id="ap9b0" />
到这里为止，一个新的linux内核已经升级完成了。接下来，当然就是重启了看效果。<br id="io:p1" />
</span>
</p>
<blockquote id="io:p2"><span style="font-size: small;">shutdown -r now</span>
<br id="et8m0" />
</blockquote>
<p><span style="font-size: small;">注意：<br id="ej7v0" />
重启时，可能会出现<br id="ej7v1" />
Use &quot;update-modules force&quot; to regeneration.<br id="yy8t0" />
原因是，新内核的模块有变化，但/etc/modprobe.conf已经存在了，无法自动生成。<br id="ej7v2" />
只要进入到系统后，删除 /etc/modprobe.conf，然后执行以下命令就可以了。<br />
</span>
</p>
<blockquote><span style="font-size: small;">update-modules</span>
<br />
</blockquote>
<p>
<span style="font-size: small;"><br id="bf-l2" />
</span>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/196336#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 24 May 2008 11:50:34 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/196336</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/196336</guid>
      </item>
      <item>
        <title>gentoo中利用ccache提高编译速度</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/174652" style="color:red;">http://gentoo.group.javaeye.com/group/blog/174652</a>&nbsp;
          发表时间: 2008年03月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
    
    
<span class="code" id="anif"><span id="n13q"><strong id="zc4e">什么是ccahe?</strong>
</span>
<br id="xw65" />
ccache</span>
是一个快速的编译器缓存。当您编译一个程序的时候，它会缓存中间的结果。这样，不论什么时候您重新编译同一个程序，编译所需要得时间将被大大缩短。对于普通的编译来说，这可以提高编译速度5到10倍。<br id="onx8" />
<br id="ch0e" />
这个想法，来自 Erik Thiele 用bash写的 <a href="http://compilercache.sourceforge.net/" id="jr2l">compilercache</a>
 。只不过，ccache用C再实现了一遍。但比前者性能高许多，也有更多的特性。<br id="wln2" />
<br id="ii_l" />
<span id="egn_"><strong id="zc4e0">安装 ccache</strong>
</span>
<br id="if03" />
</p>
<blockquote id="nwvg">emerge ccache<br id="j_44" />
</blockquote>
<p>
<span id="y2j-"><strong id="zc4e1">使用 ccache</strong>
</span>
<br id="h5yd" />
1, 设置启用ccache<br id="qh44" />
&nbsp;&nbsp;&nbsp; 在 /etc/make.conf 中设置<br id="kab3" />
</p>
<blockquote id="kab30">&nbsp;&nbsp;&nbsp; FEATURES=&quot;ccache&quot;<br id="h5yd0" />
</blockquote>
<p>
2, 指定ccache的主目录<br id="xqcc" />
<span class="path" id="m02d">&nbsp;&nbsp;&nbsp; 比如，/var/tmp/ccache</span>
是Portage的默认ccache主目录；为了修改这个设置，您可以设定<span class="path" id="a2le">/etc/make.conf</span>
中的<span class="code" id="oiw2">CCACHE_DIR</span>
参数。<br id="q4_3" />
</p>
<blockquote id="arl2"><span class="code" id="uv9a">CCACHE_DIR=</span>
/var/tmp/ccache
</blockquote>
<p>&nbsp;&nbsp;&nbsp; 针对不同的系统环境，可能如上的配置会不生效，保险起见，我们再加一个环境变量配置。<br id="ws8w" />
比如，我在 /etc/env.d/99ken.wug(ken.wug是我的机器的名字,可以自定义) 这个文件中，加入<br id="ws8w0" />
</p>
<blockquote id="bnmt">&nbsp;&nbsp;&nbsp; CCACHE_DIR=&quot;/var/tmp/ccache&quot;<br id="pnrr" />
</blockquote>
<p>3, 设置 ccache 的主缓存大小<br id="vgad" />
&nbsp;&nbsp;&nbsp; 设定/etc/make.conf中CCACHE_SIZE, 并设置它为&quot;2G&quot;<br id="s214" />
</p>
<blockquote id="xh.i">CCACHE_SIZE=&quot;2G&quot;</blockquote>
<p>
4, ccache 常用指令使用说明<br id="qn3r" />
<span id="w.sc" style="color: #0b5394;"><span id="qb7v"><strong id="zc4e2">&nbsp;-s 获得关于高速缓存性能的统计数据</strong>
</span>
</span>
<br id="v-6t" />
<img src="file:///C:/Users/imkenwu/AppData/Local/Temp/moz-screenshot.jpg" id="ur7b" alt="" />
</p>
<div id="tqk7" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dtbhrmv_345dfw7r8fd_b" id="ur7b0" alt="" style="width: 412px; height: 185px;" />
</div>
<p><span class="path" id="qk_u"><br id="bv8y" />
</span>
<span id="zd-r" style="color: #0b5394;"><span id="dcxq"><strong id="zc4e3">-M 设置高速缓存的最大大小</strong>
</span>
</span>
<br id="fcxw" />
</p>
<div id="v:98" style="padding: 1em 0pt; text-align: left;"><img src="http://docs.google.com/File?id=dfct32t2_247jt2mwdgn" id="q5v4" alt="" style="width: 305px; height: 28px;" />
</div>
<p>这里<span class="code" id="m.id">默认设置的是 </span>
<span class="path" id="mwc-">${HOME}/.ccache 这个目录的缓存大小。<br id="ihz4" />
<br id="pj56" />
<span id="dahx" style="color: #0b5394;"><span id="p9q8"><strong id="zc4e4">-F </strong>
</span>
</span>
</span>
<span id="ifum" style="color: #0b5394;"><span id="i-o4"><strong id="zc4e5">设置高速缓存目录的最大文件数目，按 16 进制舍入<br id="t-uq" />
</strong>
</span>
</span>
<span id="a7m-" style="color: #0b5394;"><span id="dmos"><strong id="zc4e6">-c 清空缓存</strong>
</span>
<br id="c5t9" />
<span id="i5l_"><strong id="zc4e7">-C 完全清空缓存</strong>
</span>
</span>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/174652#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 21 Mar 2008 22:52:59 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/174652</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/174652</guid>
      </item>
      <item>
        <title>手动修复已经损坏的portage安装文件</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/174346" style="color:red;">http://gentoo.group.javaeye.com/group/blog/174346</a>&nbsp;
          发表时间: 2008年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-weight: bold">目的</span><br />

<p>
<span class="code">当你执行 emerge sys-apps/portage</span> 出现致命错误的时候，你可能需要手动修复整个portage。<br />

请试着跟下面的步骤做：<br />

<br />

<span style="font-weight: bold">取得当前版本的 portage tarball 包</span><br />

首选，要取得 portage tar包。<br />

可以通过以下两种方式，<br />

一是运气好， emerge 没有完全损坏，还可以运行 fetchonly。这个时候，就可以通过这种方式取得 tar 包。<br />

</p>

<blockquote><span class="code">emerge --fetchonly sys-apps/portage</span></blockquote>


二是，通过网上下载。<br />


<blockquote>
  <pre><span style="font-size: small"><span class="code-input">wget -P /usr/portage/distfiles http://distfiles.gentoo.org/distfiles/portage-2.1.1.tar.bz</span></span></pre>
</blockquote>




这里用的是 portage 2.1.1 版来演示修复 portage。<br />


<br />


<span style="font-weight: bold">替换已经安装的portage版本</span><br />


<blockquote># <span class="code-input">cd /root</span><br />
# <span class="code-input">mkdir portage-recover</span><br />
# <span class="code-input">cd portage-recover</span><br />
# <span class="code-input">tar xfj /usr/portage/distfiles/portage-2.1.1.tar.bz2</span><br />
</blockquote>


当你执行完上面的指令， portage已经解压完成，现在要做的是，替换python及一些相关 bash 脚本：<br />


<blockquote># <span class="code-input">cd /root/portage-recover/portage-2.1.1</span><br />
# <span class="code-input">cp -R pym bin /usr/lib/portage/</span><br />
</blockquote>


<pre>如果你没有把 gentoo 跑在 freebsd 上，那么当 sed 脚本与老的 bash 脚本发生冲突时。直接删除 sed 就行了。
</pre>


<blockquote><span class="code-input">rm -f /usr/lib/portage/bin/sed</span><br />
</blockquote>


<pre>到这里为之，你可以重新运行 <span class="code">emerge sys-apps/portage 了。
如果提示 command not found，那么需要加一个符号链接:
</span></pre>


<blockquote><span class="code-input">ln -s ../lib/portage/bin/emerge /usr/bin/emerge</span><br />
</blockquote>


<pre>如果这篇文档无法解决你遇到的问题，你还可以求助于 <a href="http://www.gentoo.org/proj/en/portage/doc/common-problems.xml">list of common problems</a> 和 <a href="http://bugs.gentoo.org/">bugzilla</a> 。

</pre>


参考资料： <a href="http://www.gentoo.org/proj/en/portage/doc/manually-fixing-portage.xml" title="http://www.gentoo.org/proj/en/portage/doc/manually-fixing-portage.xml" id="r3-l">http://www.gentoo.org/proj/en/portage/doc/manually-fixing-portage.xml</a> <br />


<br />


<br />




    
    

          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/174346#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 20 Mar 2008 23:57:52 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/174346</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/174346</guid>
      </item>
      <item>
        <title>设计高性能网站架构-LLMP</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/174332" style="color:red;">http://gentoo.group.javaeye.com/group/blog/174332</a>&nbsp;
          发表时间: 2008年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在网站架构设计中，大家一定对 LAMP (<strong>L</strong>inux <strong>A</strong>pache <strong>M</strong>ysql <strong>P</strong>hp) 不陌生。<br />LAMP确实是一个非常优秀的架构，秉承着自由，开放，高效，易用的设计理念。<br />但是，本文不打算探讨LAMP，网上有很多介绍LAMP的资料。<br />
这里，想给大家介绍另一个在LAMP上衍生出来的，以提升性能为主要目的的开源网站架构。<br /><br /><strong>1, 选择高性能 OS</strong><br />首先，不难理解，任何一个server最底层的支撑还是OS，而OS的选择，主要包括 Unix, Windows server, Linux, BSD等等。<br />其中，开源的OS，有Linux, BSD及部分unix。从目前使用情况来看，linux还是网站首选OS之一。<br /><br />但是，Linux由于其自由的特点，也给选择产生了一些不便 - 发行版太多。<br />现有的主流版本包括 red hat(RHEL), ubuntu, 红旗, opensuse, debian等。<br /><br />其中，每一个发行版都有自己的特色，比如RHEL的稳定，ubuntu的易用，红旗的中文支持很棒等。<br /><br />但要以性能为主，又兼顾稳定，易用性，以上都不是最佳选择。<br />这里推荐一个发行版，它是一个极限性能，加高度可定制，优化的 Linux - gentoo。<br /><br />gentoo的性能优化是从kernel源码编译就开始入手了，通过选择不同的源码包，可以适应于不同的应用场景。<br />
(不同内核介绍: <a href="../../blog/168906" title="http://imkenwu.javaeye.com/blog/168906" id="ame5">http://imkenwu.javaeye.com/blog/168906</a> )<br />举个经典的例子：国内，douban.com 在定制优化过的 gentoo 上跑的web服务器最高一天支撑了 2500 万pv。<br /><a href="http://www.dbanotes.net/arch/douban_web_server.html" title="http://www.dbanotes.net/arch/douban_web_server.html" id="w_qd">http://www.dbanotes.net/arch/douban_web_server.html</a><br /><br />这种流量，哪怕是提供纯静态的内容，也是很恐怖的。<br />而支持这种大流量的，除了server本身，最关键的就是高度精简的OS了。<br />
所以，综上所述，高性能网站推荐使用可优化，定制的 <span style="color: #800000"><strong style="background-color: #ffffff">gentoo</strong></span> 作为载体。<br /><br /><strong>2, 选择高性能 web server</strong><br />Apache是 LAMP 架构最核心的 web server， 开源，模块丰富，功能强大，稳定是它的绝对优势。<br />在美国前100个网站中，有49%的使用apache。可见其影响力。<br /><br />但是，有利有弊，apache的致命缺陷，就是多于臃肿，强大的功能，一定会带来性能上的损耗。<br />面对这种情形，在市场上，有一支异军突起，那就是更轻量级的 web server - lighty(lighttpd)。<br />官方为它定义的口号是 fly light。<br /><br />它具有非常低的内存开销，cpu占用率低，效能好，以及丰富的模块支持等特点。<br />这让他在短时间内占据了14%以上的市场份额。并且有越来越多的人开始选择使用lighty作为前端 web server。<br /><br />到这里为之，其实高性能 web server 非 <span style="color: #800000"><span style="font-weight: bold">lighty</span></span> 莫属。但更棒的是，依靠 gentoo 的高度定制化，我们还可以<br />进一步提升 lighty 的性能潜力-那就是定制 lighty。<br /><br /><strong>3，选择高性能 database</strong><br />数据库是任何网站走动态化内容展现及业务数据存储的保障。<br />
市面上的开源数据库主要有 mysql , postgresql , berkeley db, sqlite 等。<br />
其中，对比一下，<br />
<br />
mysql ： 多线程，多处理器，高性能，5.0以上支持事务，丰富数据类型和sql语法，跨平台。<br />
postgresql ： 面向对象，集成web，支持事务，使用进程，速度略慢于mysql.<br />
berkeley db ： 嵌入式，数据操作通过接口完成，跨语言。<br />
sqlite ： 与php集成，支持ACID特性，支持大并发量，库锁。<br />
<br />
从上面的对比中，不难看出，<span style="color: #800000"><span style="font-weight: bold">mysql </span></span>应该是性能，稳定性与功能性的综合之选。<br />
<br />
<span style="font-weight: bold">4，选择高性能 script language</span><br />能与 lighty 结合的脚本语言，主要有 ruby, php, python, perl。方式主要是通过 fast-cgi 来访问。<br />
只从性能角度对比几种语言:<br />
<br />
<div id="vt1r" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_24356nvhmfh" alt="" style="width: 574px; height: 435px" /><br />
（ <a href="http://www.timestretch.com/FractalBenchmark.html" title="http://www.timestretch.com/FractalBenchmark.html" id="iqhn">http://www.timestretch.com/FractalBenchmark.html</a> ）<br />
</div><p>不难看出，<span style="color: #800000"><span style="font-weight: bold">python</span> </span>是此次测试中，性能最好的脚本语言。<br />
动态处理方面有绝对优势。对比 php ， 前者，可以更快的渲染输出内容，并由经lighty， 高速flush缓存到浏览器。</p><p>值得一提的是， douban.com 也是使用 python 作为应用服务器。 </p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/174332#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 20 Mar 2008 23:01:52 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/174332</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/174332</guid>
      </item>
      <item>
        <title>有效管理你的 Gentoo USE 标记</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/170654" style="color:red;">http://gentoo.group.javaeye.com/group/blog/170654</a>&nbsp;
          发表时间: 2008年03月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="western" id="o3ca" style="margin-bottom: 0.2in;">前提：<br id="z206" />
在管理你的
USE 标记前，我们先来了解一下，在哪些地方可以定义
USE 标记。。<br id="h4ou" />
所有可以配置
USE
标记的地方：</p>
<pre class="western">/usr/portage/profile/base/make.defaults<br id="b:bf" />
/usr/portage/profile/default-linux/make.defaults<br id="jz5n" />
/usr/portage/profile/default-linux/x86/make.defaults<br id="ei6r" />
/usr/portage/profile/default-linux/x86/2007.0/make.defaults<br id="tiip" />
/etc/make.conf<br id="g-0b" />
/etc/portage/package.use<br id="zg9-0" />
<br id="tfvz" />
作为环境变量设定的USE<br id="orcl" />
了解了标记所在的位置，那么看一下这些 标记 的读取顺序把？<br id="lqtp" />
USE 标记的顺序是从低到高读取的，且读取中只使用第一次碰到的。<br id="fqte1" />
比如 package.use 里定义了 -ssl,那么 make.conf 里再定义 ssl 就会被忽略.</pre>
<ol id="s3.q">
<li id="x9ow">
<p class="western" id="pwuf" align="left">make.defaults里面的USE默认设定
	
	</p>
</li>
<li id="f8_n">
<p class="western" id="rt_o" align="left">用户在/etc/make.conf里面的USE设定
	
	</p>
</li>
<li id="c7i9">
<p class="western" id="r2yx" align="left">用户在/etc/portage/package.use里面的USE设定
	
	</p>
</li>
<li id="oexa">
<p class="western" id="w2-5" style="margin-bottom: 0.2in;">作为环境变量的USE设定
	
	</p>
</li>
</ol>
<p class="western" id="ylg1"><br id="vb-r" />
以上所有配置文件，除了
make.defaults 不建议修改（emerge
--sync 后，你的修改会被覆盖）,
其他均可以自由添加，修改。<br id="vi3o" />
<br id="i2g:" />
管理：<br id="xrp4" />
管理之前，确保你安装了
Gentoolkit 工具，它能为你节约很多时间。<br id="mem2" />
<br id="bsw4" />
在管理
USE 标记之前，我们首先要区分
全局 与 本地
的概念。<br id="kcyy" />
全局标记，顾名思义，就是系统软件包或绝大部分软件包都会依赖的标记。<br id="o52." />
本地标记，是针对安装的软件包不同，可自由定制的标记。</p>
<p class="western" id="ylg1"><br id="mwla0" />
</p>
<p class="western" id="ylg1">官方针对每个包都是遵循了
COC 原则 （convention
over
configuration）.</p>
<p class="western" id="ylg1">大部分包都会有默认推荐启用和屏蔽的标记。</p>
<p class="western" id="ylg1"><br id="man80" />
</p>
<p class="western" id="ylg1">这边，推荐针对启用的标记，通过 euse -i xx 进行观察，看是否真的满足你的需要。</p>
<p class="western" id="ylg1">如果不需要，那么再看这个标记是全局还是本地的。</p>
<p class="western" id="ylg1"><br id="man81" />
</p>
<p class="western" id="ylg1">全局标记，推荐直接在 make.conf 里disable，快捷命令是 euse -D xx</p>
<p class="western" id="ylg1">本地标记，直接在 /etc/portage/package.use 里disbale就行了. ( -xx)<br id="man82" />
<br id="oxrf0" />
</p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/170654#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 12 Mar 2008 22:18:51 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/170654</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/170654</guid>
      </item>
      <item>
        <title>Gentoo Overlay 使用指南（原创）</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/170008" style="color:red;">http://gentoo.group.javaeye.com/group/blog/170008</a>&nbsp;
          发表时间: 2008年03月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>galaxystar翻译:</p><p>&nbsp;</p><p><span style="font-weight: bold">1,什么是 gentoo overlay?<br />
</span>gentoo overlay是非gentoo官方Portage树维护的，由第三方开发人员发布的软件包。<br />
<br />
<span style="font-weight: bold">2, 为什么使用 overlay?</span><br />
&nbsp;&nbsp;&nbsp; a, 当你修改了 /usr/portage 下的软件包，并执行 emerge --sync时，你修改的软件包可能会被冲掉。（官方Portage树有结构变化）<br />
&nbsp;&nbsp;&nbsp; b, 提供一种途径，可以开发及测试自己写的软件包，但不用担心会破坏 Portage 树。<br />
&nbsp;&nbsp;&nbsp; c, 不是所有的软件包都在开发完时就被放入Portage树，Portage树里的部分软件包也是从 overlay 过渡过来的。<br />
<br />
<span style="font-weight: bold">3, 什么是 overlays.gentoo.org?</span><br />
一个第三方开发者，分享，协作 overlays 的社区。所有的 overlays 都是由作者自愿贡献出来的。<br />
<br />
<span style="font-weight: bold">4, 初次使用 overlay</span><br />
第一次使用 overlay 时，建议安装 Gunnar Wrobel 开发维护的 layman 工具。<br />
<br />
&nbsp;&nbsp;&nbsp; a, 安装 layman<br />
</p><blockquote><span style="color: #0b5394">emerge -avt layman<br />
  <span class="code-input">echo &quot;source /usr/portage/local/layman/make.conf&quot; &gt;&gt; /etc/make.conf</span></span><br />
</blockquote>
<pre>&nbsp;&nbsp; b, 列出所有可用的 overlays
</pre>
<blockquote><span style="color: #0b5394">&nbsp;layman -L</span><br />
</blockquote>
<pre>&nbsp;&nbsp; c, 添加一个 overlay
</pre>
<blockquote><span style="color: #0b5394">layman -a &lt;overlay-name&gt;</span><br />
  <span style="color: #0b5394">例如安装 php overlay:<br />
layman a php</span><br />
</blockquote>
<pre>&nbsp;&nbsp; d, 从一个 overlay 中安装软件包
</pre>
<blockquote><span style="color: #0b5394">emerge -av &lt;category&gt;/&lt;package&gt;</span><br />
</blockquote>
<pre>&nbsp;&nbsp; e, 更新一个所有的 overlays
</pre>
<blockquote><span style="color: #0b5394">layman --sync ALL</span><br />
</blockquote>
<pre><span style="font-weight: bold">5, 怎么得到更多支持
<span style="color: #0b5394">介绍</span>
</span>所有的 Gentoo 开发者，在未成为开发者之前，都是 Gentoo 用户。
因为，用户不是 Gentoo 今天存在的原因，而是 Gentoo 发展的未来。

如果，你打算发布一个项目，我们会无偿给你提供项目空间，并指导你正确的发布。
甚至，如果喜欢你做的东西，我们还会邀请你成为一个全职 Gentoo 开发者并拥有一个非常漂亮的email后缀 @gentoo.org。

<span style="color: #0b5394"><span style="font-weight: bold">怎么样开始</span></span>
如果你打算发布一个 overlay , 最好的方式，就是跟某一个 overlay 的 Gentoo 开发者建立工作的关系。
你可以到 <a href="http://overlays.gentoo.org/">overlays.gentoo.org's 首页</a> 点击相关链接，查看你感兴趣的项目。

不同的开发者，喜欢用不同的联系方式，有些人喜欢 IRC，有些人喜欢 email，这个你需要协商好.

<span style="color: #0b5394"><span style="font-weight: bold">用 Subversion 管理 overlays</span></span>
我们使用 svn 来管理 overlays 的源码，如果你没有用过 svn ，你可以到 <a href="http://svnbook.red-bean.com/">online book</a> 阅读相关文档。

<span style="color: #0b5394"><span style="font-weight: bold">补充信息</span></span>
和你一起工作的Gentoo开发者，会很乐意给你提供帮助，如果你需要的话。

参考资料： <a href="http://www.gentoo.org/proj/en/overlays/userguide.xml" title="http://www.gentoo.org/proj/en/overlays/userguide.xml" id="rdq_">http://www.gentoo.org/proj/en/overlays/userguide.xml</a> </pre><pre>&nbsp;</pre><pre>欢迎加入 <a href="http://gentoo.group.javaeye.com">gentoo 圈子</a> 
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/170008#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Mar 2008 23:36:56 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/170008</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/170008</guid>
      </item>
      <item>
        <title>发现一个比 nohup 更好处理后台任务的工具 screen</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/169987" style="color:red;">http://gentoo.group.javaeye.com/group/blog/169987</a>&nbsp;
          发表时间: 2008年03月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>大家在起后台服务，或者长时间执行某个脚本的时候。</p>
<p>&nbsp;</p>
<p>是不是感觉，交互性很差，</p>
<p>有时，想把结果直接在终端上输出，又怕不小心关闭了终端导致进程退出？ （有些sshd服务还会设置连接超时，自动退出终端）</p>
<p>&nbsp;</p>
<p>现在用 <span style="color: #0000ff;"><strong>screen</strong>
 </span>
这个指令可以很好的解决跑后台服务的尴尬。</p>
<p>&nbsp;</p>
<p>命令其实超简单的：</p>
<p>&nbsp;</p>
<p>直接在终端上输入 screen , 这个时候，服务器端会启一个新的终端，但这个终端，与之前的普通终端不一样，它不隶属于 sshd 进程组，这样，当本地终端关闭后，服务器终端不会被 kill。</p>
<p>&nbsp;</p>
<p>当然，优点还不止这么些，在服务器终端里执行任务时，你甚至可以随时地切换到本地终端做些其他事情，然后，要回去时，再恢复到刚才已经打开的服务器终端里，如果刚才的任务没有结束，还可以继续执行任务。</p>
<p>&nbsp;</p>
<p>操作步骤：</p>
<p>首先，进入 <strong><span style="color: #0000ff;">screen </span>
</strong>
-S sessionname终端。(sessionname是为了分辨你的session)</p>
<p>然后按 <strong><span style="color: #0000ff;">ctrl + a</span>
</strong>
 ，再按 <span style="color: #0000ff;"><strong>d</strong>
</span>
 键暂时退出终端。</p>
<p>当要返回时， 先查看刚才的终端进程ID， <strong><span style="color: #0000ff;">screen -list</span>
</strong>
</p>
<p>或直接</p>
<p>&nbsp;<strong><span style="color: #0000ff;">screen -r xx</span>
</strong>
(刚才的sessionname)就可以了 </p>
<p>当然，当你开了很多个session后，打算关闭几个session，可以进入到session后，<strong><span style="color: #0000ff;">exit</span>
</strong>
 一下就可以了.</p>
<p>&nbsp;</p>
<p>总的来说， screen是可以完全替代 nohup 的，并且本身提供了较复杂的功能，但是我认为，刚才那些简单的功能足以应付日常运作。 </p>
<p>如果对该指令感兴趣的朋友，推荐一篇文章：</p>
<p>&nbsp;</p>
<p><a href="http://www.ibm.com/developerworks/cn/linux/l-cn-screen/" target="_blank">http://www.ibm.com/developerworks/cn/linux/l-cn-screen/</a>
</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/169987#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Mar 2008 22:17:15 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/169987</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/169987</guid>
      </item>
      <item>
        <title>无废话 Gentoolkit (原创)</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/169374" style="color:red;">http://gentoo.group.javaeye.com/group/blog/169374</a>&nbsp;
          发表时间: 2008年03月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          

    
    


    
    


    
    


    
    


    
    


    
    


    
    


    
    
<strong>什么是 Gentoolkit ?</strong><br />Gentoolkit 是Gentoo开发者和贡献者们经过长期使用，针对复杂的东西编写的一个管理工具集合。<br /><br /><p class="secthead"><a name="doc_chap1_sect2"></a><strong>如何安装？</strong></p>
<p>
就像其他的Gentoo软件包一样，安装就只是简单地emerge。 </p><pre><span style="color: #0b5394"><span class="code-input"><strong>emerge gentoolkit</strong></span></span>

<strong>实用角度分析 Gentoolkit 核心工具 - equery</strong>
<span class="code">来自官方的解释：equery</span>是一个显示有关于你系统上的软件包的大量有用信息和其他许多东西的工具。

通过 equery -h 查看帮助:
<div id="bqpr" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_229gtrmncdh" alt="" style="width: 661px; height: 299px" /></div>command 参数说明：
</pre><ol><li><span style="color: #0b5394"><strong>belongs (b)<br /></strong></span>查看某个文件属于哪个已安装的软件包。<br />举例：清理系统或重装时，可以用来看某个文件属于哪个软件包（有些时候，从文件名是看不出属于哪个软件包的），然后再决定是否要删除。<br /></li><li><span style="color: #0b5394"><strong>check (k)</strong></span><br />检查某个已安装软件包是否正确。<br /></li><li><span style="color: #0b5394"><strong>depends (d)</strong></span><br />列出某个已安装软件包的所有直接依赖关系。<br />举例：当你在清理系统时，发现有些包是独立的（无任何依赖），这个时候，你可以毫不留情的删除它。<br /></li><li><span style="color: #0b5394"><strong>depgraph (g)<br /></strong></span>树形显示某个已安装的软件包的依赖关系。<br /></li><li><span style="color: #0b5394"><strong>files (f)</strong></span><br />列出某一个已安装的软件包的所有文件.<br />举例： 删除包时，先记录下所有的文件，当删除后，看看是否删除干净。<br /></li><li><span style="color: #0b5394"><strong>hasuse (h)</strong></span><br />列出所有使用了指定 USE 标记的已安装软件包。<br />举例： 要删除某个标记时，先看一下正在使用该标记的软件包。<br /></li><li><span style="color: #0b5394"><strong>use (u)</strong></span><br />列出某一个已安装的包使用到的所有标记及详细信息。<br />对比emerge提示方式：以前通过 emerge -avt xx 时，只提示依赖的标记，但不知道某个标记的详细信息<br />要想知道的话，需要通过这种方式查询：<br /><div id="vk1d" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_232f66q4zfj" alt="" style="width: 567px; height: 30px" /></div>现在不需要了：<br /><div id="h.yf" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_233df93cxsr" alt="" style="width: 740px; height: 392px" /><br /><br />但有个缺点，equery只适用于已安装的软件包，无法在安装新软件包时，提供帮助。<br /></div></li><li><span style="color: #0b5394"><strong>list (l)</strong></span><br />查询某个已安装的软件包，并列出相关信息。<br />标准的查询会搜索符合给定名字的已安装的软件包。如果找到了，下面的信息会被显示出来：<br /><br /><div id="skow" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_234ftmj6qg9" alt="" style="width: 478px; height: 57px" /></div><br />在第一个括号里的是软件包位置（I代表已安装，P代表
Portage，O代表Overlay），在第二个括号里的是可能的mask（~是keyword的禁用，-是主机平台的禁用，M是硬性禁用），然后是分
类和完整的名字，最后是软件包储存的位置。 <br /></li><li><span style="color: #3d85c6"><strong>size (s)</strong></span><br />显示某个已安装软件包的大小。<br /></li><li><span style="color: #0b5394"><strong>which (w)</strong></span><br />显示某个已安装软件包的绝对路径。</li></ol><br />有了以上这些功能支持，可以让管理软件包变得得心应手。<strong>equery负责查询，emerge负责安装，卸载，更新。</strong><br /><br /><pre><strong>管理USE标记的实用工具 - euse
</strong><span class="code">官方解释：euse</span>是一个用来在多个地方查看、设置和取消USE标记的工具。

<span style="color: #000000">1，<span style="color: #0b5394"><strong>查看激活的标记</strong></span></span>
列出已激活的所有标记，指令如下：
<span style="color: #0b5394"><strong>euse -a</strong></span>

<div id="b:gw" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_235hntqw6gb" alt="" style="width: 291px; height: 212px" /></div>
</pre><blockquote><p>格式说明： 中括号共分5列，每列分别表示+/-(激活或取消）、在环境(Environment)变量里设置的、在make.Conf里设置的、在make.Defaults里设置的和在make.Globals里设置的。</p><p>如果以上都有，则输出的信息就像这样[+ECDG]。 </p></blockquote><pre><span style="color: #ff0000">所有可以配置 USE 标记的地方</span>
/usr/portage/profile/base/make.defaults
/usr/portage/profile/<span class="code-comment">default-linux/make.defaults
</span>/usr/portage/profile/<span class="code-comment">default-linux/x86/make.defaults
</span>/usr/portage/profile/<span class="code-comment">default-linux/x86/</span>2007.0/make.defaults
<span class="path">/etc/make.conf</span>
<span class="path">/etc/portage/package.use</span>
作为环境变量的USE设定

顺序，从低到高只使用第一次碰到的。比如 package.use 里定义了 -ssl,那么 make.conf 里再定义 ssl 就会被忽略.

</pre>
<ol><li>
    <span class="path">make.defaults</span>里面的USE默认设定
  </li><li>
    用户在<span class="path">/etc/make.conf</span>里面的USE设定
  </li><li>
    用户在<span class="path">/etc/portage/package.use</span>里面的USE设定
  </li><li>
    作为环境变量的USE设定
  </li></ol>

<br />
<br />
<span style="color: #ff0000">以上所有配置文件，除了 make.defaults 不建议修改（emerge --sync 后，你的修改会被覆盖）, 其他均可以自由添加，修改。</span>

2, 通过命令行直接在make.conf里激活/取消标记<span style="color: #000000">在激活/取消标记前先看下已经存在的 make.conf 文件</span><pre><span style="color: #0b5394"><div id="zkwe" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_236g5tcwgg2" alt="" style="width: 626px; height: 223px" /></div></span>这里，我们使用 midi 作为 例子吧。
执行命令： <span style="color: #0b5394"><strong>euse -D midi
</strong><span style="color: #000000">就可以取消 midi 标记。
当要启用时，也非常简单，执行 <span style="color: #0b5394"><strong>euse -E midi</strong></span> 即可
<div id="lhx-" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_237ft8bwtgg" alt="" style="width: 711px; height: 31px" />

3, <span style="color: #0b5394"><strong>查看 USE 标记的详细信息
</strong><span style="color: #000000">一般情形下，给你一个标记，你能马上从字面上看出它的作用吗？
我想一般人都会比较迷茫。
现在 euse 指令提供了对某个 USE 标记显示详细信息的功能。
<span style="color: #0b5394"><strong>euse -i midi
</strong></span></span><div id="gz-o" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_238c7r9qv94" alt="" style="width: 486px; height: 242px" /></div><span style="color: #000000">4</span>，<strong> 查看某一个 USE 标记的详细信息
</strong><span style="color: #000000">是不是感觉通过 <span style="color: #134f5c"><strong>cat /usr/portage/profile/use.desc|fgrep xx</strong></span> 来查看 USE 标记详细信息的方式太繁琐了？
试试:
<span style="color: #0b5394"><strong>euse -i xx</strong></span>
带你脱离苦海
<div id="ai:3" style="padding: 1em 0pt; text-align: left"><img src="http://docs.google.com/File?id=dfct32t2_240hqt7wdd9" alt="" style="width: 490px; height: 112px" /></div>
</span></span></div></span></span>
<strong>强大的反向依赖清理工具 - </strong><a name="doc_chap4_sect1"></a><strong>revdep-rebuild</strong>
官方解释：这是Gentoo's Reverse Dependency（Gentoo反向依赖关系）的重建工具。

它可以通过扫描你已经安装了的ebuild文件来了解软件包是否因为一次它们依赖的软件包的升级而被破坏。
它可以为你重新emerge这些软件包。但也可能是给定的软件包在当前的依赖环境下无法再工作了，在这种情况下你应该把这些破损的软件包升级到一个较新的版本。

使用场景举例：
主要是升级完 world 后又清除了一些无依赖的包。这个时候，需要重新编译那些曾经与刚刚移除的这些包依赖过的软件包。
步骤演示：
<span style="color: #0b5394"><strong>emerge -avtuDN world
emerge --depclean
revdep-rebuild</strong></span>

参考资料：
<a href="http://www.gentoo.org/doc/zh_cn/gentoolkit.xml" title="http://www.gentoo.org/doc/zh_cn/gentoolkit.xml" id="v-61">http://www.gentoo.org/doc/zh_cn/gentoolkit.xml</a> 




</pre>
<br /><br />

    
    

          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/169374#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 08 Mar 2008 16:33:31 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/169374</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/169374</guid>
      </item>
      <item>
        <title>Gentoo Linux 内核指南（原创翻译）</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/168906" style="color:red;">http://gentoo.group.javaeye.com/group/blog/168906</a>&nbsp;
          发表时间: 2008年03月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>galaxystar 翻译, 转载请注明出处：(欢迎加入 javaeye <a href="http://gentoo.group.javaeye.com/" target="_blank">gentoo圈子</a>)</p><p>&nbsp;</p><p><span class="chapnum"><strong>1.&nbsp; </strong></span><strong>介绍</strong>
</p><p>Gentoo Linux 是一个高度自由的发行版，官方内核团队也遵循了这一理念，提供给用户一个可以自由选择内核的机会。(体现了 gentoo 的高度可定制)</p><p>&nbsp;</p>如果你执行过 <span style="color: #351c75">emerge -s source </span>命令，你会发现，输出结果里会有很多种不同的内核源码包可供选择。这些源码包都是被定制或优化过的。<br /><p style="text-align: justify">在这篇文档中，我们会从设计角度出发，介绍每个定制过的内核的作用及它能达到的目标。</p><p>&nbsp;</p>
<p>首先介绍一下现今主流的内核版本：</p>Linux kernel 2.4 是由 Willy Tarreau， Linux的创始人Linus Torvalds，Marcelo Tosatti(当 Linus 去开发新的2.6内核时，2.4分支就交给他了) 开发的。<br />后来，当 Marcelo 完成了2.4稳定版和一些安全升级后，就移交给了 Willy 在维护。<br /><p>&nbsp;</p>
<p>Linux 2.6 是由 Andrew Morton 和 Linus Torvalds 紧密合作开发的一个快速，健壮，且非常有特色的 Linux 内核。现在这个版本的发展速度非常惊人，并且内核本身已经非常成熟。</p>
<p>不过，一些很罕见的系统架构与 2.6 内核之间可能出现不兼容的情况。因此，这些用户可以尝试使用 2.4 的内核。</p><p>（注意，2.4内核已经很长时间没有更新了。只有bug和安全问题在新版本中还在修复。）</p><br /><p>&nbsp;</p><p><span class="chapnum"><strong>2.&nbsp; </strong></span><strong>Gentoo官方支持的内核源码包</strong></p><p>&nbsp;</p><p class="secthead"><a name="doc_chap2_sect1" title="doc_chap2_sect1"></a><strong>genkernel</strong></p>
<p>Genkernel 是一个内核工具集，它能自动探测你的硬件，帮助你配置内核选项。如果某些用户不太适应手动编译内核(手动比较复杂，选项很多)，推荐使用这个工具。</p><p>&nbsp;</p>
<p>更多信息，请点击&nbsp; <a href="http://www.gentoo.org/doc/en/genkernel.xml">Gentoo
Linux Genkernel 指南</a>.</p><p>&nbsp;</p>
<p class="secthead"><span style="color: #351c75"><a name="doc_chap2_sect2" title="doc_chap2_sect2"></a><strong>通用目的: gentoo-sources</strong></span></p>
<p>对于大多数用户，我们推荐使用 <span style="color: #351c75">gentoo-source</span> 内核。自从 2005.0 发布以来，Gentoo Linux 就一直使用 2.6 作为默认内核。</p><p>&nbsp;</p><p>因为，2.6内核带给我们的是，更高的性能，更棒的硬件兼容，和一些令人振奋的新特性。</p><p>当然，你也可以明确指定要使用 2.4 profile。</p><p>2.4 的 <span style="color: #351c75">gentoo-source</span> 使用的内核补丁跟 2.6 内核里的某些东西非常相似，外加了一些功能和性能补丁。</p><p>&nbsp;</p><p><span style="color: #351c75">gentoo-source</span> 花费了 Gentoo 内核团队的大量心血。</p><p>现在的一切都是由一群非常有才能的开发者带给你的，包括流行内核破解高手 Greg Kroah-Hartman，udev的维护者，正式内核里的USB和PCI子系统的负责人。</p><a name="doc_chap2_sect3" title="doc_chap2_sect3"></a><br /><p class="secthead"><span style="color: #351c75"><a name="doc_chap2_sect3" title="doc_chap2_sect3"></a><strong>服务器用：</strong><a name="doc_chap2_sect3" title="doc_chap2_sect3"></a><strong>hardened-sources and rsbac-sources</strong></span><a name="doc_chap2_sect3" title="doc_chap2_sect3"></a></p>
<p>
<span class="code">hardened-sources</span><span class="code"> 是基于正式的 Linux 内核，目标用户是那些用 Gentoo 跑服务器的人。它为 Gentoo Hardened 下的子项目(比如支持 </span><a href="http://www.nsa.gov/selinux/">LSM/SELinux</a> 和 <a href="http://grsecurity.net/">grsecurity</a><span class="code">)提供了一些补丁， 用于提高稳定性和安全性。你可以到 </span><a href="http://www.gentoo.org/proj/en/hardened/">http://www.gentoo.org/proj/en/hardened/</a><span class="code"> 查看更多信息。<br /></span></p><p><span class="code"><br /></span>
</p>
<p><span class="code">rsbac-sources 包含了一些基于规则访问控制 </span>(<a href="http://www.rsbac.org/">RSBAC</a>) 的补丁。它是由 Gentoo Hardened 的子项目 <a href="http://www.gentoo.org/proj/en/hardened/rsbac/">RSBAC
project</a> 维护的。</p><p>&nbsp;</p><p><strong>重要: </strong>这些内核都提供了非常强大的安全补丁，在你使用它们之前，务必读<strong>&nbsp;</strong>
<a href="http://www.gentoo.org/proj/en/hardened/">documentation</a>。</p><br /><p class="secthead"><span style="color: #351c75"><a name="doc_chap2_sect4" title="doc_chap2_sect4"></a><strong>依赖于某些架构的内核</strong></span></p>
<p>&nbsp;</p><p>
<span class="code">hppa-sources</span>, <span class="code">mips-sources</span>, <span class="code">sh-sources</span>,
<span class="code">sparc-sources</span>, and <span class="code">xbox-sources 这些内核，从他们的名字就可以看出是什么架构。</span></p><p><span class="code">他们也包含了一些对硬件的支持补丁和上下文中提及到的其他功能补丁。</span></p><p>&nbsp;</p><p><span class="chapnum"><strong>3.&nbsp; </strong></span><strong>Gentoo官方不支持的内核源码包
</strong></p><p>现在，我来简单的介绍一些 sys-kernel/* 目录下的内核（你也可以通过 emerge -s source 来查看）</p><p>首先， 我让这些内核按英文首字母排序。</p><p>&nbsp;</p>
<p class="secthead"><a name="doc_chap3_sect2" title="doc_chap3_sect2"></a>git-sources</p><p class="secthead"><a name="doc_chap3_sect2" title="doc_chap3_sect2"></a>git-source 源码包会跟踪内核树的每日构建。如果你对最新内核的开发和测试都比较感兴趣，可以尝试使用这个版本。<a href="http://bugme.osdl.org/">有问题的话，查看 Linux 内核 Bug 跟踪和邮件列表</a></p>
<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap3_sect3" title="doc_chap3_sect3"></a>mm-sources</p><p class="secthead"><a name="doc_chap3_sect3" title="doc_chap3_sect3"></a><a name="doc_chap3_sect3" title="doc_chap3_sect3"></a>mm-sources 是基于 <a name="doc_chap3_sect3" title="doc_chap3_sect3"></a><span class="code">vanilla-sources 的源码包，包含了</span>Andrew Morton的补丁集。</p><p class="secthead"><a name="doc_chap3_sect3" title="doc_chap3_sect3"></a>它拥有一些实验性的和超新的特性。这些特性，<a name="doc_chap3_sect3" title="doc_chap3_sect3"></a>只有稳定后，<a name="doc_chap3_sect3" title="doc_chap3_sect3"></a>才可以在正式版中使用。</p><p>&nbsp;</p>
<p class="secthead"><a name="doc_chap3_sect4" title="doc_chap3_sect4"></a>openvz-sources</p>
<p>
OpenVZ 是一种服务器虚拟化解决方案。它可以在单台物理机器上，创建多个私有虚拟服务器。</p><p>这样做，可以最大程度利用资源，当然，它会确保多个虚拟机之间不会相互冲突。 更多信息，查看 <a href="http://www.openvz.org/">http://www.openvz.org</a>.</p><p>&nbsp;</p>
<p class="secthead"><a name="doc_chap3_sect5" title="doc_chap3_sect5"></a>tuxonice-sources</p><p class="secthead"><a name="doc_chap3_sect5" title="doc_chap3_sect5"></a><span class="code">tuxonice-sources</span> (原来的 <span class="code">suspend2-sources</span>) 是整合了 genpatcher （gentoo-source使用的补丁） 和 <a href="http://www.tuxonice.net/">TuxOnIce</a> （带休眠功能的内核）的版本。</p><p class="secthead"><a name="doc_chap3_sect5" title="doc_chap3_sect5"></a>这个内核推荐给笔记本用户使用，因为它可以很好的支持休眠。<br />  </p><br /><p class="secthead"><a name="doc_chap3_sect6" title="doc_chap3_sect6"></a>usermode-sources</p><p class="secthead"><a name="doc_chap3_sect6" title="doc_chap3_sect6"></a><span class="code">usermode-sources&nbsp; 是用户模式的内核版本。这个内核主要是打算给测试和虚拟机用的。它可以在Linux里跑Linux。</span></p><p class="secthead"><a name="doc_chap3_sect6" title="doc_chap3_sect6"></a><span class="code">更多信息 </span><a href="http://user-mode-linux.sourceforge.net/">http://user-mode-linux.sourceforge.net</a><br /><br /><a name="doc_chap3_sect6" title="doc_chap3_sect6"></a></p>

<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap3_sect7" title="doc_chap3_sect7"></a>vanilla-sources</p><p class="secthead"><a name="doc_chap3_sect7" title="doc_chap3_sect7"></a>这个版本的内核或许是许多人都比较熟悉的版本。因为他是 <a href="http://www.kernel.org/">http://www.kernel.org/</a> 发布的完全没有被修改过的正式版内核。</p><p class="secthead">我们Gentoo内核团队是不会修补这个版本的内核的。所以，还是推荐使用 gentoo-source 来替代它。</p><p>&nbsp;</p><p><strong>以前提供的一些内核源码包
</strong></p><p class="secthead"><a name="doc_chap4_sect1" title="doc_chap4_sect1"></a>aa-sources</p><p class="secthead"><a name="doc_chap4_sect1" title="doc_chap4_sect1"></a>一种大量修改正式版内核源码，并附加各种补丁的版本。已经停止维护。</p>
<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap4_sect2" title="doc_chap4_sect2"></a>alpha-sources</p><p class="secthead" style="text-align: left"><a name="doc_chap4_sect2" title="doc_chap4_sect2"></a>这个内核使用了 2.4 版内核，主要特点是打上了对 Alpha 架构的硬件支持补丁。但这些补丁已经包含在了最终的内核里。所以，Alpha架构的用户可以直接使用最新版。</p>
<p>
<span class="code"><br /></span>
</p>
<p class="secthead"><a name="doc_chap4_sect3" title="doc_chap4_sect3"></a>ck-sources</p><p class="secthead"><a name="doc_chap4_sect3" title="doc_chap4_sect3"></a><span class="code">ck-sources 是 </span>Con Kolivas 的内核补丁集。<a href="http://kernel.kolivas.org/">http://kernel.kolivas.org</a></p>
<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap4_sect4" title="doc_chap4_sect4"></a>development-sources</p>
<p>
<span class="code">development-sources</span>, kernel.org 发布的2.6正式版内核，现在可以使用最新的 <span class="code">vanilla-sources 。</span></p><p>&nbsp;</p>
<p class="secthead"><a name="doc_chap4_sect5" title="doc_chap4_sect5"></a>gentoo-dev-sources</p><p class="secthead"><a name="doc_chap4_sect5" title="doc_chap4_sect5"></a>这是 gentoo-source 的开发版本，修复了一些 安全，稳定性上的bug，但是现在可以使用最新的 gentoo-source 。</p>
<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap4_sect6" title="doc_chap4_sect6"></a>grsec-sources</p><p class="secthead"><a name="doc_chap4_sect6" title="doc_chap4_sect6"></a>添加了最新的grsecurity更新的一个内核版本。很久以前就在 portage 中移除了。</p>
<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap4_sect7" title="doc_chap4_sect7"></a>hardened-dev-sources</p><p class="secthead"><a name="doc_chap4_sect7" title="doc_chap4_sect7"></a>hardened的开发版内核。现在也可以使用 <span class="code">hardened-sources替代。</span></p>
<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap4_sect8" title="doc_chap4_sect8"></a>rsbac-dev-sources</p><p class="secthead"><a name="doc_chap4_sect8" title="doc_chap4_sect8"></a>rsbac的开发板内核，现在可以使用 <span class="code">rsbac-sources 替代。</span></p>
<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap4_sect9" title="doc_chap4_sect9"></a>selinux-sources</p><p class="secthead"><a name="doc_chap4_sect9" title="doc_chap4_sect9"></a>包含了 安全性能提升补丁的2.6内核。如果你真的很想用 SELINUX , 推荐使用 <span class="code">hardened-sources</span></p>
<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap4_sect10" title="doc_chap4_sect10"></a>uclinux-sources</p><p class="secthead"><a name="doc_chap4_sect10" title="doc_chap4_sect10"></a>嵌入式设备使用的内核版本，适用于不支持 MMUs 的 cpu 系统。更多信息，查看 <a href="http://www.uclinux.org/">http://www.uclinux.org</a> 。<a name="doc_chap4_sect6" title="doc_chap4_sect6"></a>很久以前就在 portage 中移除了。<a name="doc_chap4_sect10" title="doc_chap4_sect10"></a></p>
<p>&nbsp;</p>
<p class="secthead"><a name="doc_chap4_sect11" title="doc_chap4_sect11"></a>win4lin-sources</p><p class="secthead"><a name="doc_chap4_sect11" title="doc_chap4_sect11"></a>一个支持 win4lin 工具的内核版本，允许 LINUX 用户在系统里跑 windows。</p><p class="secthead">&nbsp;</p><p class="secthead">&nbsp;</p><p class="secthead">&nbsp;</p><p class="secthead">欢迎加入 javaeye <a href="http://gentoo.group.javaeye.com/" target="_blank">gentoo圈子</a> </p>


          <br/>
          <span style="color:red;">
            <a href="http://gentoo.group.javaeye.com/group/blog/168906#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 06 Mar 2008 23:40:21 +0800</pubDate>
        <link>http://gentoo.group.javaeye.com/group/blog/168906</link>
        <guid>http://gentoo.group.javaeye.com/group/blog/168906</guid>
      </item>
      <item>
        <title>Gentoo emerge 各功能实用参数组合及使用技巧</title>
        <author>galaxystar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://galaxystar.javaeye.com">galaxystar</a>&nbsp;
          链接：<a href="http://gentoo.group.javaeye.com/group/blog/168469" style="color:red;">http://gentoo.group.javaeye.com/group/blog/168469</a>&nbsp;
          发表时间: 2008年03月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="western" id="v0jf" align="left"><span style="font-size: small;"><span id="v0jf0" lang="zxx"><span><strong id="v0jf2">参数组合</strong>
</span>
</span>
</span>
<span style="font-size: small;"><strong id="v0jf4">:<br id="v0jf5" />
1,
</strong>
</span>
<span style="font-size: small;"><span id="v0jf6" lang="zxx"><span><strong id="v0jf8">编译安装包</strong>
</span>
</span>
</span>
<span style="font-size: small;">/</span>
<span style="font-size: small;">
<span id="v0jf178" lang="zxx"><span><strong id="v0jf180">重装</strong>
</span>
</span>
<br id="v0jf10" />
</span>

<span style="font-size: small;">emerge
-avt xx<br id="v0jf11" />
<br id="v0jf12" />
</span>
<span style="font-size: small;"><span id="v0jf13" lang="zxx"><span>带详细信息，树形依赖关系显示，交互确认指示的安装命令。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf16" />
</span>
<span style="font-size: small;"><span id="v0jf17" lang="zxx"><span>其中要注意在确认指示时，输出到屏幕上的包信息后面的</span>
</span>
</span>
<span style="font-size: small;">USE</span>
<span style="font-size: small;">
<span id="v0jf20" lang="zxx"><span>标记，
主要有 红色 与 蓝色
两种</span>
</span>
</span>
<span style="font-size: small;">USE</span>
<span style="font-size: small;">
<span id="v0jf23" lang="zxx"><span>标记。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf26" />
<br id="v0jf27" />
</span>
<span style="font-size: small;"><span id="v0jf28" lang="zxx"><span>红色表示会支持这个功能，蓝色表示去除这个功能，比如安装</span>
</span>
</span>
<span style="font-size: small;">samba</span>
<span style="font-size: small;">
<span id="v0jf31" lang="zxx"><span>时，
默认需要支持 </span>
</span>
</span>
<span style="font-size: small;">cups&nbsp;
</span>
<span style="font-size: small;"><span id="v0jf34" lang="zxx"><span>打印机，并且系统上未安装</span>
</span>
</span>
<span style="font-size: small;">cups</span>
<span style="font-size: small;">
<span id="v0jf37" lang="zxx"><span>，会自动进行编译安装相关包。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf40" />
</span>
<span style="font-size: small;"><span id="v0jf41" lang="zxx"><span>所以，如果你不希望安装打印机支持或者未启用图形桌面的，还是取消为好。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf44" />
<br id="v0jf45" />
</span>
<span style="font-size: small;"><span id="v0jf46" lang="zxx"><span>步骤如下：</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf49" />
</span>
<span style="font-size: small;"><span id="v0jf50" lang="zxx"><span>修改
</span>
</span>
</span>
<span style="font-size: small;">make.conf </span>
<span style="font-size: small;"><span id="v0jf53" lang="zxx"><span>在
</span>
</span>
</span>
<span style="font-size: small;">USE </span>
<span style="font-size: small;"><span id="v0jf56" lang="zxx"><span>标记中添加</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf59" />
USE=&quot;-cups&quot;<br id="v0jf60" />
</span>
<span style="font-size: small;"><span id="v0jf61" lang="zxx"><span>然后执行</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf64" />
emerge
-avt samba<br id="v0jf65" />
<br id="v0jf66" />
<strong id="v0jf67">2, </strong>
</span>
<span style="font-size: small;"><span id="v0jf68" lang="zxx"><span><strong id="v0jf70">搜索查找安装包</strong>
</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf72" />
emerge
-s xxx<br id="v0jf73" />
<br id="v0jf74" />
</span>
<span style="font-size: small;"><span id="v0jf75" lang="zxx"><span>通过标题查找包</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf78" />
emerge
-S xxx<br id="v0jf79" />
<br id="v0jf80" />
</span>
<span style="font-size: small;"><span id="v0jf81" lang="zxx"><span>通过描述信息查找包</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf84" />
<br id="v0jf85" />
<strong id="v0jf86">3,
</strong>
</span>
<span style="font-size: small;"><span id="v0jf87" lang="zxx"><span><strong id="v0jf89">查看包的依赖关系</strong>
</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf91" />
emerge
-vp xxx<br id="v0jf92" />
<br id="v0jf93" />
</span>
<span style="font-size: small;"><span id="v0jf94" lang="zxx"><span>查看带详细信息的依赖关系</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf97" />
<br id="v0jf98" />
<strong id="v0jf99">4,
</strong>
</span>
<span style="font-size: small;"><span id="v0jf100" lang="zxx"><span><strong id="v0jf102">删除安装包</strong>
</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf104" />
emerge
-avC xxx<br id="v0jf105" />
<br id="v0jf106" />
</span>
<span style="font-size: small;"><span id="v0jf107" lang="zxx"><span>删除当前包，并显示详细信息以及删除前询问</span>
</span>
</span>
<span style="font-size: small;">.<br id="v0jf110" />
<br id="v0jf111" />
<strong id="v0jf112">5</strong>
</span>
<span style="font-size: small;"><span id="v0jf113" lang="zxx"><span><strong id="v0jf115">，
下载源代码包</strong>
</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf117" />
emerge
-f xxx<br id="v0jf118" />
<br id="v0jf119" />
</span>
<span style="font-size: small;"><span id="v0jf120" lang="zxx"><span>仅仅在
</span>
</span>
</span>
<span style="font-size: small;">USE
</span>
<span style="font-size: small;"><span id="v0jf123" lang="zxx"><span>标记前提下，有针对性的下载需要安装编译的源码及依赖包源码（不执行安装编译）</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf126" />
</span>
<span style="font-size: small;"><span id="v0jf127" lang="zxx"><span>比如：</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf130" />
<br id="v0jf131" />
</span>
<span style="font-size: small;"><span id="v0jf132" lang="zxx"><span>修改
</span>
</span>
</span>
<span style="font-size: small;">make.conf </span>
<span style="font-size: small;"><span id="v0jf135" lang="zxx"><span>在
</span>
</span>
</span>
<span style="font-size: small;">USE </span>
<span style="font-size: small;"><span id="v0jf138" lang="zxx"><span>标记中添加</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf141" />
USE=&quot;-cups&quot;<br id="v0jf142" />
</span>
<span style="font-size: small;"><span id="v0jf143" lang="zxx"><span>然后执行</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf146" />
emerge
-f samba<br id="v0jf147" />
</span>
<span style="font-size: small;"><span id="v0jf148" lang="zxx"><span>下载的
</span>
</span>
</span>
<span style="font-size: small;">samba </span>
<span style="font-size: small;"><span id="v0jf151" lang="zxx"><span>源码包时，不会下载
</span>
</span>
</span>
<span style="font-size: small;">samba </span>
<span style="font-size: small;"><span id="v0jf154" lang="zxx"><span>所依赖的
</span>
</span>
</span>
<span style="font-size: small;">cups </span>
<span style="font-size: small;"><span id="v0jf157" lang="zxx"><span>源码包。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf160" />
<br id="v0jf161" />
emerge
-F xxx<br id="v0jf162" />
<br id="v0jf163" />
</span>
<span style="font-size: small;"><span id="v0jf164" lang="zxx"><span>不论
</span>
</span>
</span>
<span style="font-size: small;">USE </span>
<span style="font-size: small;"><span id="v0jf167" lang="zxx"><span>标记设了什么，下载所有指定包及依赖包源码。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf188" />
<br id="v0jf189" />
<strong id="v0jf190">6,
</strong>
</span>
<span style="font-size: small;"><span id="v0jf191" lang="zxx"><span><strong id="v0jf193">升级整个系统</strong>
</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf195" />
emerge
-avtuDN world<br id="v0jf196" />
<br id="v0jf197" />
</span>
<span style="font-size: small;"><span id="v0jf198" lang="zxx"><span>系统升级命令，带详细信息，树形依赖关系显示，交互确认指示，依赖包查找更新及根据
</span>
</span>
</span>
<span style="font-size: small;">USE </span>
<span style="font-size: small;"><span id="v0jf201" lang="zxx"><span>标记新增，删除情况，对依赖包进行重新编译安装。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf204" />
<br id="v0jf205" />
N</span>
<span style="font-size: small;">
<span id="v0jf206" lang="zxx"><span>表示
</span>
</span>
</span>
<span style="font-size: small;">--newuse </span>
<span style="font-size: small;"><span id="v0jf209" lang="zxx"><span>，
即用户新增或修改，删除了
</span>
</span>
</span>
<span style="font-size: small;">USE </span>
<span style="font-size: small;"><span id="v0jf212" lang="zxx"><span>标记</span>
</span>
</span>
<span style="font-size: small;">,
</span>
<span style="font-size: small;"><span id="v0jf215" lang="zxx"><span>编译时，需要将使用到该标记的，已安装的软件包进行重新编译安装，这个选项算然是可选的</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf218" />
</span>
<span style="font-size: small;"><span id="v0jf219" lang="zxx"><span>但还是建议每次都选上，因为，谁都无法保证，你之前是否真的新增或修改了
</span>
</span>
</span>
<span style="font-size: small;">USE </span>
<span style="font-size: small;"><span id="v0jf222" lang="zxx"><span>标记，还是交给
</span>
</span>
</span>
<span style="font-size: small;">portage </span>
<span style="font-size: small;"><span id="v0jf225" lang="zxx"><span>自己去判断。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf228" />
<br id="v0jf229" />
<strong id="v0jf230">7</strong>
</span>
<span style="font-size: small;"><span id="v0jf231" lang="zxx"><span><strong id="v0jf233">，清除没有依赖关系的源码包</strong>
</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf235" />
emerge
-avt
--depclean<br id="v0jf236" />
<br id="v0jf237" />
</span>
<span style="font-size: small;"><span id="v0jf238" lang="zxx"><span>带详细信息，树形依赖关系显示，交互确认指示，系统清理命令。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf241" />
</span>
<span style="font-size: small;"><span id="v0jf242" lang="zxx"><span>通常与删除包或升级过整个系统后联用。先删除或升级，后清理。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf245" />
depclean</span>
<span style="font-size: small;">
<span id="v0jf246" lang="zxx"><span>完成之后，运行</span>
</span>
</span>
<span style="font-size: small;">revdep-rebuild</span>
<span style="font-size: small;">
<span id="v0jf249" lang="zxx"><span>来重新构建那些动态链接到由可能已经删除的包提供的公共对象的程序。</span>
</span>
</span>
<span style="font-size: small;"><br id="v0jf252" />
(revdep-rebuild</span>
<span style="font-size: small;">
<span id="v0jf253" lang="zxx"><span>是</span>
</span>
</span>
<span style="font-size: small;">gentoolkit</span>
<span style="font-size: small;">
<span id="v0jf256" lang="zxx"><span>包的一部分，不要忘了先</span>
</span>
</span>
<span style="font-size: small;">emerge</span>
<span style="font-size: small;">
<span id="v0jf259" lang="zxx"><span>它