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

<chapt id="uptodate">更新系统

<p>Debian 的设计目标之一就是提供一致的升级途径和安全的升级过程. 我们一直尽力于平滑升级过程的实现. 如果升级过程中软件包将会对重要的注意事项警告用户, 并提供一个可能的解决方法.

<p>你也应该阅读 Debian CD 上的发行记录, 该文档对升级作了详细描述,也可从<url id="http://www.debian.org/releases/stable/releasenotes">处获得该文档.

<sect id="libc5to6upgrade">把基于 libc5 的 Debian1.3.1(或更低)升级到基于 libc6 的2.0版(或更高)?

<p>有几种升级的方法:
<list>
  <item>使用一个叫做 <tt>autoup.sh</tt> 的简单的 shell 脚本进行大部分重要软件包的升级, <tt>autoup.sh</tt> 升级完成后, 再使用 dselect 进行其他软件包的安装. 这是推荐使用的,但不是唯一的方法.

    <p>最新版的 <tt>autoup.sh</tt> 可以在一下地址找到:
    <list>
      <item><url id="http://www.debian.org/releases/2.0/autoup/">
      <item><url id="http://www.taz.net.au/autoup/">
      <item><url id="http://debian.vicnet.net.au/autoup/">
    </list>
  <item>下边的方法与 <url name="Debian libc5 to libc6 Mini-HOWTO"
    id="http://debian.vicnet.net.au/autoup/HOWTO/libc5-libc6-Mini-HOWTO.html"> 方法很接近, 手动升级大部分的重要软件包. <tt>autoup.sh</tt> 就是基于 Mini-HOWTO 的, 因此这种方法和使用 <tt>autoup.sh</tt> 差不多.

  <item>使用基于 libc5 的 <tt>apt</tt>. APT 是一个有可能替代 dselect 的软件包工具. 现在的 APT 与 dselec 不同, 是命令行界面你可以在 Debian 的 <tt>dists/slink/main/upgrade-older-i386</tt> 目录下找到基于 libc5 的版本.

  <item>在没有手动升级任何软件包的情况下, 使用 dselect. 如果可以不使用, 建议用户尽量不要使用这种方法 .因为 dselect 并不是使用优化的顺序来安装软件包, APT 要安全的多.
    <!-- This should probably work if dpkg's max-error-before-stop internal
    variable is increased. Question: Will it be increased some day? -->
</list>

<!--
This paragraph is obsolete, but I will keep it here as a reminder in
case libc6-based dpkg happen to be some better than the one in Debian
1.3.1: Note that the version of <tt>dpkg</tt> in this directory has the
a.out binary format.  The versions of <tt>dpkg</tt> in the development and
stable trees have the ELF format.
-->

<sect id="howtocurrent">更新我的系统?

<p>可以简单的匿名登录到 Debian 的 FTP, 找到自己想要的文件包, 把它下载下来,然后用 <tt>dpkg</tt> 安装. 注意, <tt>dpkg</tt> 会进行升级安装, 即使这个软件正在运行. 有时候安装修正包需要另一个包的修正版本. 这样的话, 安装就会停止, 直到另一个包被安装.

<p>很多人认为这种方法过于浪费时间. 因为 Debian 升级太快, 每周都有很多新软件上载. 在一个新版本发行前会更多. 因此, 许多用户希望使用更加自动的方法. 有几个软件包可以实现这种目的:

<sect1 id="apt">APT

<p>APT 是 Debian 文件系统的高级界面. apt-get 是处理软件包的命令行工具, APT dselect 是 <prgn/dselect/ 的 APT 接口, 提供了一个简单的, 安全的安装和升级软件包的方法.

<p>APT 的特性包括: 定制式安装, 多安装源支持, 还有其它一些特点. 见用户指南 <tt>/usr/share/doc/apt/guide.html/index.html</tt>.

<p>首先安装 <package/apt/ 软件包, 编辑 <tt>/etc/apt/sources.list</tt> 并使之生效, 如果你想升级到 Debian 最新稳定版, 可以使用类似这样的安装源:

<example>http://http.us.debian.org/debian stable main contrib non-free</example>

<p>可以用其它你附近较快的 Debian 镜像来替换 http.us.debian.org 更多信息见
<url id="http://www.debian.org/misc/README.mirrors">.

<p>更多细节参见 <manref name="apt-get" section="8"> 和 <manref name="sources.list" section="8"> 联机手册, 以及前边提到的<tt>/usr/share/doc/apt/guide.html/index.html</tt>处的用户指南.

<p>然后运行
      <example>apt-get update</example>
接着
      <example>apt-get dist-upgrade</example>
回答每一个可能出现的问题, 完成系统升级.

<p>在 <prgn/dselect/中使用APT, 在 <prgn/dselect/ 的方法选择屏幕选择APT存取方法. 然后指定要用的安装源, 配置文件是 <file>/etc/apt/sources.list</file>, 其格式在 <manref name="sources.list" section="5"> 联机手册有详细描述.

<p>果你要从 CD 安装软件包, 可以使用 <prgn/apt-cdrom/. 更多细节见发行备忘录的"本地镜像升级的设定"章节.

<p>注意安装完成后, 你下载用于安装的包仍然在你的 /var 目录下, 要释放空间, 记得用<tt>apt-get clean</tt> 和 <tt>apt-get autoclean</tt> 将它们删除或移到别的地方(提示:使用 <package/apt-move/).

<sect1 id="dpkg-ftp">dpkg-ftp

<p>这是 <prgn/dselect/ 中较老的一个方法. 可以从 <prgn/dselect/ 中调用, 因此允许用户使用它直接下载安装软件, 在<prgn/dselect/ 选择 <tt>ftp</tt> 存取模式指定远程主机名和目录, 那么 <prgn/dpkg-ftp/ 就会自动下载选中的软件包.

<p>注意, 和 <prgn/mirror/ 程序不同, <prgn/dpkg-ftp/ 不会抓取镜像站点的所有东西, 而是仅仅下载你(启动时)选择的软件包, 然后将它们升级.

<p><prgn/dpkg-ftp/ is somewhat obsolete. You should use the APT access
method with ftp:// URLs in <file>sources.list</file> instead.

<sect1 id="mirror">mirror

<p>一个 Perl 脚本, 和其称作 <prgn/mirror-master/ 的管理程序, 用来<em>通过</em>匿名 FTP 从指定的主机上下载目录树中用户指定的部分.

<p><prgn/mirror/ 对于下载大量软件包非常有用. 从站点上下载的软件被保存成一个称作 <tt>.mirrorinfo</tt> 的文件, 存在本地. <prgn/mirror/ 自动跟踪远端文件系统的变化, 并与这个文件比较, 并下载不同部分.

<p><prgn/mirror/ 程序对于升级远端目录树在本地的拷贝非常有用, 下载的文件不一定是 Debian 格式文件. (<prgn/mirror/是一个 Perl 脚本, 因此也可以在非 UNIX 系统上运行). 尽管 <prgn/mirror/ 程序提供了排除文件名中和用户指定字符串匹配的机制, 这个程序相对于选择性下载, 对于下载整个目录树更有用.

<!-- Should we recommend GNU wget here, too? -->

<sect1 id="dpkg-mountable">dpkg-mountable

<p>dpkg-mountable 为 dselect 增加了一个称作 `mountable' 的存取方法. 允许你从任何一个在 /etc/fstab 指定的文件系统安装, 例如, 文档系统可以是普通的硬盘分区或 NFS 服务器, 可以必要时自动挂接或卸掉.

<p>还有一些特性并不能在标准 dselect 方法中找到, 比如提供本地文件树(可以同主发行版并行或者分开), 和仅下载需要的软件包, 而不是费时的对整个目录反复扫描, 和记录所有安装软件包的作用.

<sect id="upgradesingle">升级软件必须是单用户模式吗?

<p>不. 即使在运行状态的软件包也可以升级. Debian 有一个 <tt>start-stop-daemon</tt> 程序, 升级过程中必要时, 用于停止, 启动运行的进程.

<sect id="savedebs">需要在硬盘上保留所有的 .deb 吗?

<p>不. 如果你把文件下载到了你的硬盘上(不是必须的,详见 dpkg-ftp 的描述), 安装完成后, 可以把它们删除.

<sect id="keepingalog">添加软件日志?

<p><prgn/dpkg/ 保留一个已经解包, 设置, 删除 和/或 完全删除的包的记录, 但当一个包被处理时不保存当前终端的记录.

<p>最简单的办法就是让它记录 <prgn>dpkg</prgn>/<prgn>dselect</prgn>/<prgn>apt-get</prgn>/ 的在 <manref name="script" section="1"> 里的所有会话.
