<!-- Subversion revision of original English document "2864" -->
<!--
   Chinese version: $Revision: 1.1 $
   -->  

<chapt id="ftparchives">Debian 的 FTP

<sect id="dirtree">Debian 的 FTP 上有哪些目录?

<p>可以从 Debian 镜像站点的目录树下获取打了包的软件.

<p><tt>dists</tt> 目录包含"发行版"(distributions), 此处是获得 Debian 发布版本(releases)和已发布版本(pre-releases)的软件包的正规途径. 有些旧软件包及 packages.gz 文件仍在其中.

<p><tt>pool</tt> 目录为软件包的物理地址. 详见<ref id="pools">.

<p>还有一些目录:
<taglist>
  <tag><em>/tools/</em>:
    <item>用于创建启动盘, 磁盘分区, 压缩/解压文件, 启动 Linux 的 DOS 下的小工.
  <tag><em>/doc/</em>:
    <item>基本的 Debian 文档, 如 FAQ, 错误报告系统指导等..
  <tag><em>/indices/</em>:
    <item>维护人员文件和重载文件.
  <tag><em>/project/</em>:
    <item>大部分为开发人员的资源, 如:
    <taglist>
      <tag><em>project/experimental/</em>:
        <item>本目录包含了处于开发中的软件包和工具, 它们均处于 alpha 测试阶段. 用户不应使用这些软件, 因为即使是经验丰富的用户也会被搞得一团糟.
    </taglist>
</taglist>

<sect id="dists">在 <tt>dists</tt> 目录有哪些版本?

<p>通常有三个 Debian 发行版本, 它们是 "stable" 发行版, "testing" 发行版和 "unstable" 发行版. 有时还有一个 "frozen" 发行版, 详见(see <ref id="frozen">).

<sect id="codenames">象 slink, potato, 等等, 是什么意思?

<p>它们只是一些版本代号(codenames). 处于开发阶段的发行版只有版本代号, 没有版本号, 使用版本代号的目的在于简化建立 Debian 发行版镜像的工作(如果真实目录例如 <tt>unstable</tt> 突然改名为 <tt>stable</tt>, 许多文件都没必要再次下载).

<!-- XXX update for new distros -->
<p> 当前, <tt>stable</tt> 是一个指向 <tt>woody</tt>(即&debian; &release;)的符号链接, <tt>testing</tt> 是指向 <tt>sarge</tt> 的符号链接. 也就是说 <tt>woody</tt> 是当前的 <tt>stable</tt> 发行版, <tt>sarge</tt> 是当前的<tt>testing</tt> 发行版
.
<!-- Use this for NEW RELEASE:
<p>Currently, <tt>stable</tt> is a symbolic link to <tt>sarge</tt>
(i.e. &debian; &release;) and <tt>testing</tt> is a symbolic link to
<tt>etch</tt>.
This means that <tt>sarge</tt> is the current stable
distribution and <tt>etch</tt> is the current testing distribution.
-->

<p><tt>unstable</tt> 发行版是指向 <tt>sid</tt> 的永久符号链接, 即 unstable 发行版总称为<tt>sid</tt>(参见 <ref id="sid">).

<sect1 id="oldcodenames">以前用过哪些代号名?

<p>已使用过的发行版代号有: <tt>buzz</tt> for
release 1.1, <tt>rex</tt> for release 1.2, <tt>bo</tt> for releases 1.3.x,
<tt>hamm</tt> for release 2.0, <tt>slink</tt> for release 2.1 和
<tt>potato</tt> for release 2.2.
<!-- Add this for NEW RELEASE:
<tt>woody</tt> for release 3.0
-->

<sect1 id="sourceforcodenames">它们源自何处?

<p>到目前为止它们均出自 Pixar 的电影"玩具总动员(Toy Story)" .
<list>
  <item><em>buzz</em> (Buzz Lightyear) 是个宇航员,
  <item><em>rex</em> 是只暴龙,
  <item><em>bo</em> (Bo Peep) 是个放羊的女孩,
  <item><em>hamm</em> 是个小猪攒钱罐,
  <item><em>slink</em> (Slinky Dog) 是只玩具狗,
  <item><em>potato</em> 当然就是 Potato Head 先生,
  <item><em>woody</em> was the cowboy.
  <item><em>sarge</em> 是位绿色塑料玩具士兵首领.
  <item><em>etch</em> 是玩具黑板.

<!-- SID should be the last line always -->
  <item><em>sid</em> 是隔壁的男孩, 那个玩具终结者.
</list>

<!-- Q: Should we add the trademark info here? Maybe as a footnote
  Mr. Potato is a Registered Trademark of Playskool, Inc.,
    Pawtucket, R.I., a division of Hasbro Inc.
  Slinky Dog is a trademark of Poof Products of Plymouth, Mich.,
  Etch-a-Sketch is a trademark of The Ohio Art Company,
  other characters might also be registered trademarks...
  (jfs)
-->
<!--
  more info in http://www.pixar.com/featurefilms/ts/
  and  http://www.pixar.com/featurefilms/ts2/
  or better yet http://us.imdb.com/M/title-exact?Toy%20Story%20(1995)
  or actually:
    http://us.imdb.com/Title?0114709 for TS1
    http://us.imdb.com/Title?0120363 for TS2
  we shouldn't put the links in, Pixar needs no additional propaganda
-->
<!--
  characters not used from Toy Story (yet):
    - Andy (the kid)
    - Snake
    - Robot
    - Scud (Sid's dog)
    - Lenny the Binoculars
    - Three Eyed Alien
    - Rocky (the wrestling figure)
    - Roller Bob (the remote control car)
    - Legs (one of sid's mutant toys)
    - Hand-in-the-box (one of sid's mutant toys)
    - Duckie (one of sid's mutant toys)
  and additional characters from Toy Story 2, also not yet used:
    - Al (the propietor of Al's Toy Farm)
    - Jessie (the Yodelling Cowgirl)
    - Bullseye (Woody's toy horse)
    - Zurg (the Evil Emperor)
    - Wheezy (the penguin)
    - Hannah (owner of Jessie)
    - Stinky Pete the Prospector (the old fat guy)
    - Mrs. Davis (Andy's Mom)
    - Barbie (the Tour Guide, probably under (c))
    - Mrs. Potato Head
    - Heimlich the Caterpillar
-->
<!-- (jfs) Just in case somebody misses the "What do we do when we finish
with Toy Story characters" thread see:
http://lists.debian.org/debian-devel/2002/debian-devel-200207/msg01133.html
I, suggested we followed with either Monster's Inc or "A Bug's life" :)
-->

<sect id="sid">"sid" 是什么?

<p><em>sid</em> 或 <em>unstable</em> 是大多数软件最初上载的地方, 这些软件首先要进入 <em>testing</em>, 然后在 <em>stable</em> 里发行. sid 里的软件可能被发行, 也可能不被发行.

<p>"sid" 来自于电影 "玩具总动员(Toy Story)" 里的动画形象: Sid 是隔壁的男孩，那个玩具终结者 :-)

<p><footnote>
<p>过去 sid 并不存在, FTP 站点结构有个缺点: 假设当前 unstable 发行版中创建了某个软件开发项目, 当 unstable 成为新的 stable 版之时, 便是它的发布之日. 由于软件包一但发布就需要移动到新的 stable 目录, 当众多软件开发项目移动目录时大量带宽会被吞噬掉, 这个流程就显得很不切实际, 因而许多软件开发项目并没有按这个方法行事.

<p>经过几年的研究摸索, 文档管理员提出一个方案, 将未获准发布的二进制文档存入名为 sid 的特定目录. 由于这些软件尚未发布, 从那时起, 它们就被加入到 unstable 目录树. 当它们首次发布时, 将会建立一个从当前 stable 指向 sid 的链接. 这个方案用户听起来的确有些晕头.

<p>有了软件包储藏池(pool)(详见<ref id="pools">), 二进制软件包均按一定规范存放于 pool 目录, 而与发行版无直接关系, 当发布新版本时, 就不会再出现大量带宽被消耗的问题. (不过, 大量带宽还是被开发进程消耗了).
</footnote>

<sect id="stable">stable 目录的内容?

<p><list>
  <item>stable/main/:
  目录包含的软件包均是最新 &debian; 系统发布版的正式组成部分.

  <p>这些软件包均遵循<url name="Debian 自由软件指南" id="http://www.debian.org/social_contract#guidelines">.

  <item>stable/non-free/:  本目录包含的软件包受到一定限制, 发行者需遵循特殊版权要求.

  <p>例如, 有些软件包的许可证禁止其用于商业发行的. 有些虽可以再发行, 但本身是共享软件而非自由软件. 以任何方式再发行这些软件包时(例如写入光盘), 必须认真阅读有关的许可证或与所有者协商.

  <item>stable/contrib/: 本目录包含的软件包均遵循 DFSG-free 原则，本身也是<em>自由发布</em>的, 但这些软件包的关联包不具有自由发行的属性, 它们位于 non-free 目录.
</list>

<sect id="testing">testing 目录的内容?

<p>处于 <qref id="unstable">unstable</qref> 版本的 testing 通过级别测试后登记到 'testing' 目录.
<p>这些软件包必须可同时运行于所有架构, 并且没有关联性问题影响到其卸载; 比起在 unstable 中的相应版本, 它们有更少的 release-critical 错误. 我们将 'testing' 作为更佳发布候选版本.

<p>有关 "testing" 版本的更多信息见于 <url id="http://www.debian.org/devel/testing">

<sect1 id="frozen">"frozen" 是什么?

<p>当 "testing" 发行版足够成熟了, 它就会被 '冻结'(freezing), 通常不再作宣传, 确保尽可能少的新 "unstable" bug 进入 "testing".

<p>一段时间以后这个 "testing" 发行版就成为真正的 'frozen' 了, 表示这个版本不再加入新代码, 只进行除错工作. "testing" 发行版还要经过称之为 "循环测试" 的深度冻结.

<p>我们将 "testing" 发行版中可能延迟软件包或整个版本发布的错误都记录在案.
详见 <url name="current testing release information"
id="http://www.debian.org/releases/testing/">.

<p>一但错误总数低于可接受的最大值, 冻结的 "testing" 发行版就晋升成 "stable" 并分派一个版本号.

<p> 新版本发布了, 先前发布的版本成为过期版(obsolete). 详见 <url name="Debian archive" id="http://www.debian.org/distrib/archive">.

<sect id="unstable">unstable 目录的内容?

<p>`unstable' 发行版反映了系统的最新开发进展. 欢迎广大用户使用并测试这些软件包, 同时也提醒你们这些软件包还不完善. 使用 unstable 发行版的好处就是你可以获得 Debian 项目的最新更新——不过新东西也会出新问题, 你得好坏兼收 :-)

<p>在 `unstable' 下同样有 main, contrib 和 non-free 子目录, 它们的作用与 `stable' 中的一样.

<sect id="archsections"><tt>dists/stable/main</tt>的内容?

<p>在每个主目录树下<footnote>
  <tt>dists/stable/main</tt>, <tt>dists/stable/contrib</tt>,
  <tt>dists/stable/non-free</tt>, 和 <tt>dists/unstable/main/</tt>, 等.
</footnote> 包含三个包含索引文件的三个子目录.

<p>包含一组型如 <tt>binary-<var>something</var></tt> 的子目录, 其包含各种计算机平台下, 二进制软件包的索引文件, 例如, <tt/binary-i386/ 为运行于 Intel x386 PC 机上的软件包, <tt/binary-sparc/ 则是运行于 Sun SPARCStations 上的软件包. 

<p>每个发行版的完整的平台列表参阅 <url name="the release's web page" id="http://www.debian.org/releases/">.
当前发行版, 参阅 <ref id="arches">.

<p>binary-* 下的索引文件称做 Packages(.gz), 其包括这个发行版中所有二进制软件包的列表. 软件包的物理位置则为上一级 <qref id="pools"><tt/pool/ 目录</qref>.

<p>另外, 还有一个称为 source/ 的子目录, 其包含本发行版的所有源代码包的索引文件. 索引文件称做 Sources(.gz).

<p>最后, 但不是全部, 还有一组用于安装系统索引文件的子目录. 在 <em>woody</em> 中, 称做 <tt>disks-<var>architecture</var></tt>; 在 <em>sarge</em> 中, 称做 <tt>debian-installer/binary-<var>architecture</var></tt>.

<sect id="source">在哪里可以获取源代码?

<p>Debian 系统中的一切程序都有源代码. 不仅如此, 许可证条款规定系统中所有的程序<em>必须</em>和其源代码一起发行, 或向商家索取源代码.

<p>通常源代码分散于 <tt>pool</tt> 目录，同时处于多个架构目录(详见<ref id="pools">). 用户不必非常熟悉 FTP 目录结构, 想获得源代码可以试试 <tt>apt-get source mypackagename</tt> 命令.

<p> 有些软件包, 如著名的<tt>pine</tt>, 由于许可证限制, 只提供源码包. 详见 <ref id="pine">.

<p>"contrib" 和 "non-free" 目录中的软件包可能不提供源代码, 因为它们没有正式加入 Debian 系统S.

<sect id="pools"><tt>pool</tt> 目录下是什么 ?

<p>软件包均放进一个巨大的 "池子(pool)", 按照源码包名称分类存放. 为了方便管理, pool 目录下按属性再分类("main", "contrib" 和 "non-free"), 分类下面再按源码包名称的首字母归档. 这些目录包含的文件有: 运行于各种系统架构的二进制软件包, 生成这些二进制软件包的源码包.

<p>你可以执行命令 <tt>apt-cache showsrc mypackagename</tt>, 查看 'Directory:' 行获知每个软件包的存放位置. 例如: <tt>apache</tt> 软件包存放在 <tt>pool/main/a/apache/</tt> 目录中. 

<p>另外, 由于<tt>lib*</tt>软件包数量巨大, 它们以特殊的方式归档: 例如, libpaper 软件包存放在 <tt>pool/main/libp/libpaper/</tt>.

<!-- joeyh doesn't want to maintain it so it's dead; need to integrate it
     If you want more information, see the
     <url id="http://people.debian.org/~joeyh/poolfaq"
     name="Debian Package Pools FAQ">.
-->

<p><footnote>
<p>过去, 软件包均放在 <tt>dists</tt> 目录下, 相应发行版的子目录中. 这种做法产生了许多问题, 例如当镜像站点进行新版本发布时大量带宽被消耗. 这个问题通过引入软件包 pool 得到了解决.

<p><tt>dists</tt> 诸如apt等命令访问的索引文件仍位于dists目录中，直到本文写作之时，旧发行版的软件包还没转到pool目录，所以你将看到路径的 "Filename" 域中包含有发行版名称如 <tt>dists/potato</tt> 或 <tt>dists/woody</tt>.
</footnote>

<sect id="incoming">什么是 "incoming"?

<p>上载的软件包在检查它的真实性和容许进入 FTP 以前首先存放于 "incoming" 目录.

<p>通常没有人需要从这个目录安装软件. 然而, 在某些在紧急情况下, 你可以直接从 incoming 目录(<url id="http://incoming.debian.org/">)手工下载软件, 检查 GPG 签名, .changes 和 .dsc 文件中的校检码 MD5sums, 然后安装.
