Просмотр исходного кода

* merged with apt--mvo--0

Patches applied:

 * apt@packages.debian.org/apt--sources-list-d--0--base-0
   tag of apt@packages.debian.org/apt--main--0--patch-30

 * apt@packages.debian.org/apt--sources-list-d--0--patch-1
   Patch from apt-rpm via Michael Vogt to implement /etc/apt/sources.list.d

 * bubulle@debian.org--2005/apt--main--0--patch-130
   Galician translation completed

 * bubulle@debian.org--2005/apt--main--0--patch-131
   Simplified Chinese translation update

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-90
   * merged the sources.list.d patch

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-91
   * merged with bubulle

 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-92
   * changelog update
Michael Vogt лет назад: 20
Родитель
Сommit
818d4818b7
7 измененных файлов с 200 добавлено и 81 удалено
  1. 3 2
      apt-pkg/init.cc
  2. 110 5
      apt-pkg/sourcelist.cc
  3. 5 0
      apt-pkg/sourcelist.h
  4. 1 1
      configure.in
  5. 10 0
      debian/changelog
  6. 10 0
      po/ChangeLog
  7. 61 73
      po/zh_CN.po

+ 3 - 2
apt-pkg/init.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: init.cc,v 1.21 2004/02/27 00:46:44 mdz Exp $
+// $Id: init.cc,v 1.20 2003/02/09 20:31:05 doogie Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    Init - Initialize the package library
    Init - Initialize the package library
@@ -64,13 +64,14 @@ bool pkgInitConfig(Configuration &Cnf)
    // Configuration
    // Configuration
    Cnf.Set("Dir::Etc","etc/apt/");
    Cnf.Set("Dir::Etc","etc/apt/");
    Cnf.Set("Dir::Etc::sourcelist","sources.list");
    Cnf.Set("Dir::Etc::sourcelist","sources.list");
+   Cnf.Set("Dir::Etc::sourceparts","sources.list.d");
    Cnf.Set("Dir::Etc::vendorlist","vendors.list");
    Cnf.Set("Dir::Etc::vendorlist","vendors.list");
    Cnf.Set("Dir::Etc::vendorparts","vendors.list.d");
    Cnf.Set("Dir::Etc::vendorparts","vendors.list.d");
    Cnf.Set("Dir::Etc::main","apt.conf");
    Cnf.Set("Dir::Etc::main","apt.conf");
    Cnf.Set("Dir::Etc::parts","apt.conf.d");
    Cnf.Set("Dir::Etc::parts","apt.conf.d");
    Cnf.Set("Dir::Etc::preferences","preferences");
    Cnf.Set("Dir::Etc::preferences","preferences");
    Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods");
    Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods");
-	      
+   
    bool Res = true;
    bool Res = true;
    
    
    // Read an alternate config file
    // Read an alternate config file

+ 110 - 5
apt-pkg/sourcelist.cc

@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // -*- mode: cpp; mode: fold -*-
 // Description								/*{{{*/
 // Description								/*{{{*/
-// $Id: sourcelist.cc,v 1.25 2004/06/07 23:08:00 mdz Exp $
+// $Id: sourcelist.cc,v 1.3 2002/08/15 20:51:37 niemeyer Exp $
 /* ######################################################################
 /* ######################################################################
 
 
    List of Sources
    List of Sources
@@ -21,6 +21,13 @@
 #include <apti18n.h>
 #include <apti18n.h>
 
 
 #include <fstream>
 #include <fstream>
+
+// CNC:2003-03-03 - This is needed for ReadDir stuff.
+#include <algorithm>
+#include <stdio.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <unistd.h>
 									/*}}}*/
 									/*}}}*/
 
 
 using namespace std;
 using namespace std;
@@ -142,23 +149,66 @@ pkgSourceList::~pkgSourceList()
 /* */
 /* */
 bool pkgSourceList::ReadMainList()
 bool pkgSourceList::ReadMainList()
 {
 {
-   return Read(_config->FindFile("Dir::Etc::sourcelist"));
+   // CNC:2003-03-03 - Multiple sources list support.
+   bool Res = true;
+#if 0
+   Res = ReadVendors();
+   if (Res == false)
+      return false;
+#endif
+
+   Reset();
+   // CNC:2003-11-28 - Entries in sources.list have priority over
+   //                  entries in sources.list.d.
+   string Main = _config->FindFile("Dir::Etc::sourcelist");
+   if (FileExists(Main) == true)
+      Res &= ReadAppend(Main);   
+
+   string Parts = _config->FindDir("Dir::Etc::sourceparts");
+   if (FileExists(Parts) == true)
+      Res &= ReadSourceDir(Parts);
+   
+   return Res;
 }
 }
 									/*}}}*/
 									/*}}}*/
+// CNC:2003-03-03 - Needed to preserve backwards compatibility.
+// SourceList::Reset - Clear the sourcelist contents			/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgSourceList::Reset()
+{
+   for (const_iterator I = SrcList.begin(); I != SrcList.end(); I++)
+      delete *I;
+   SrcList.erase(SrcList.begin(),SrcList.end());
+}
+									/*}}}*/
+// CNC:2003-03-03 - Function moved to ReadAppend() and Reset().
 // SourceList::Read - Parse the sourcelist file				/*{{{*/
 // SourceList::Read - Parse the sourcelist file				/*{{{*/
 // ---------------------------------------------------------------------
 // ---------------------------------------------------------------------
 /* */
 /* */
 bool pkgSourceList::Read(string File)
 bool pkgSourceList::Read(string File)
+{
+   Reset();
+   return ReadAppend(File);
+}
+									/*}}}*/
+// SourceList::ReadAppend - Parse a sourcelist file			/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::ReadAppend(string File)
 {
 {
    // Open the stream for reading
    // Open the stream for reading
    ifstream F(File.c_str(),ios::in /*| ios::nocreate*/);
    ifstream F(File.c_str(),ios::in /*| ios::nocreate*/);
    if (!F != 0)
    if (!F != 0)
       return _error->Errno("ifstream::ifstream",_("Opening %s"),File.c_str());
       return _error->Errno("ifstream::ifstream",_("Opening %s"),File.c_str());
    
    
+#if 0 // Now Reset() does this.
    for (const_iterator I = SrcList.begin(); I != SrcList.end(); I++)
    for (const_iterator I = SrcList.begin(); I != SrcList.end(); I++)
       delete *I;
       delete *I;
    SrcList.erase(SrcList.begin(),SrcList.end());
    SrcList.erase(SrcList.begin(),SrcList.end());
-   char Buffer[300];
+#endif
+   // CNC:2003-12-10 - 300 is too short.
+   char Buffer[1024];
 
 
    int CurLine = 0;
    int CurLine = 0;
    while (F.eof() == false)
    while (F.eof() == false)
@@ -172,7 +222,10 @@ bool pkgSourceList::Read(string File)
 
 
       
       
       char *I;
       char *I;
-      for (I = Buffer; *I != 0 && *I != '#'; I++);
+      // CNC:2003-02-20 - Do not break if '#' is inside [].
+      for (I = Buffer; *I != 0 && *I != '#'; I++)
+         if (*I == '[')
+	    for (I++; *I != 0 && *I != ']'; I++);
       *I = 0;
       *I = 0;
       
       
       const char *C = _strstrip(Buffer);
       const char *C = _strstrip(Buffer);
@@ -188,7 +241,7 @@ bool pkgSourceList::Read(string File)
 
 
       Type *Parse = Type::GetType(LineType.c_str());
       Type *Parse = Type::GetType(LineType.c_str());
       if (Parse == 0)
       if (Parse == 0)
-	 return _error->Error(_("Type '%s' is not known on line %u in source list %s"),LineType.c_str(),CurLine,File.c_str());
+	 return _error->Error(_("Type '%s' is not known in on line %u in source list %s"),LineType.c_str(),CurLine,File.c_str());
       
       
       // Vendor name specified
       // Vendor name specified
       if (C[0] == '[')
       if (C[0] == '[')
@@ -259,3 +312,55 @@ bool pkgSourceList::GetIndexes(pkgAcquire *Owner, bool GetAll) const
    return true;
    return true;
 }
 }
 									/*}}}*/
 									/*}}}*/
+// CNC:2003-03-03 - By Anton V. Denisov <avd@altlinux.org>.
+// SourceList::ReadSourceDir - Read a directory with sources files
+// Based on ReadConfigDir()						/*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgSourceList::ReadSourceDir(string Dir)
+{
+   DIR *D = opendir(Dir.c_str());
+   if (D == 0)
+      return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
+
+   vector<string> List;
+   
+   for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D))
+   {
+      if (Ent->d_name[0] == '.')
+	 continue;
+
+      // CNC:2003-12-02 Only accept .list files as valid sourceparts
+      if (flExtension(Ent->d_name) != "list")
+	 continue;
+      
+      // Skip bad file names ala run-parts
+      const char *C = Ent->d_name;
+      for (; *C != 0; C++)
+	 if (isalpha(*C) == 0 && isdigit(*C) == 0
+             && *C != '_' && *C != '-' && *C != '.')
+	    break;
+      if (*C != 0)
+	 continue;
+      
+      // Make sure it is a file and not something else
+      string File = flCombine(Dir,Ent->d_name);
+      struct stat St;
+      if (stat(File.c_str(),&St) != 0 || S_ISREG(St.st_mode) == 0)
+	 continue;
+      
+      List.push_back(File);      
+   }   
+   closedir(D);
+   
+   sort(List.begin(),List.end());
+
+   // Read the files
+   for (vector<string>::const_iterator I = List.begin(); I != List.end(); I++)
+      if (ReadAppend(*I) == false)
+	 return false;
+   return true;
+
+}
+									/*}}}*/
+

+ 5 - 0
apt-pkg/sourcelist.h

@@ -77,6 +77,11 @@ class pkgSourceList
 
 
    bool ReadMainList();
    bool ReadMainList();
    bool Read(string File);
    bool Read(string File);
+
+   // CNC:2003-03-03
+   void Reset();
+   bool ReadAppend(string File);
+   bool ReadSourceDir(string Dir);
    
    
    // List accessors
    // List accessors
    inline const_iterator begin() const {return SrcList.begin();};
    inline const_iterator begin() const {return SrcList.begin();};

+ 1 - 1
configure.in

@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 
 
 dnl -- SET THIS TO THE RELEASE VERSION --
 dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.6.42.3ubuntu1")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.42.3ubuntu2")
 PACKAGE="apt"
 PACKAGE="apt"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)
 AC_SUBST(PACKAGE)

+ 10 - 0
debian/changelog

@@ -1,3 +1,13 @@
+apt (0.6.42.3ubuntu2) dapper; urgency=low
+
+  * Merge bubulle@debian.org--2005/apt--main--0 up to patch-131:  
+    * zh_CN.po: Completed to 507 strings(Closes: #338267)
+    * gl.po: Completed to 510 strings (Closes: #338356)
+  * added support for "/etc/apt/sources.list.d" directory 
+    (closes: #66325)
+  
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Mon, 14 Nov 2005 15:30:12 +0100
+
 apt (0.6.42.3ubuntu1) dapper; urgency=low
 apt (0.6.42.3ubuntu1) dapper; urgency=low
 
 
   * synced with debian
   * synced with debian

+ 10 - 0
po/ChangeLog

@@ -1,3 +1,13 @@
+2005-11-13   Kov Tchai  <tchaikov@sjtu.edu.cn>
+
+	* zh_CN.po: Completed to 507 strings
+	         Closes: #338267
+
+2005-11-09  Jacobo Tarrio  <jacobo@tarrio.org>
+
+	* gl.po: Completed to 510 strings
+	         Closes: #338356
+
 2005-11-08  Piarres Beobide  <pi@beobide.net>
 2005-11-08  Piarres Beobide  <pi@beobide.net>
 
 
 	* eu.po: Completed to 510 strings
 	* eu.po: Completed to 510 strings

+ 61 - 73
po/zh_CN.po

@@ -1,6 +1,6 @@
 # Chinese/Simplified translation of apt.
 # Chinese/Simplified translation of apt.
 # This file is put in the public domain.
 # This file is put in the public domain.
-# Tchaikov <chaisave@263.net>, 2004.
+# Tchaikov <tchaikov@sjtu.edu.cn>, 2005.
 # Carlos Z.F. Liu <carlosliu@users.sourceforge.net>, 2004.
 # Carlos Z.F. Liu <carlosliu@users.sourceforge.net>, 2004.
 # 
 # 
 msgid ""
 msgid ""
@@ -8,9 +8,9 @@ msgstr ""
 "Project-Id-Version: apt 0.5.23\n"
 "Project-Id-Version: apt 0.5.23\n"
 "Report-Msgid-Bugs-To: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2005-10-25 18:41+0200\n"
 "POT-Creation-Date: 2005-10-25 18:41+0200\n"
-"PO-Revision-Date: 2005-02-09 17:34+0800\n"
-"Last-Translator: Tchaikov <chaisave@263.net>\n"
-"Language-Team: Chinese (simplified) <i18n-translation@lists.linux.net.cn>\n"
+"PO-Revision-Date: 2005-10-29 10:08+0800\n"
+"Last-Translator: Tchaikov <tchaikov@sjtu.edu.cn>\n"
+"Language-Team: Debian Chinese [GB] <debian-chinese-gb@lists.debian.org>\n"
 "MIME-Version: 1.0\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -206,11 +206,11 @@ msgstr ""
 "   showsrc - 显示源文件的各项记录\n"
 "   showsrc - 显示源文件的各项记录\n"
 "   stats - 显示一些基本的统计信息\n"
 "   stats - 显示一些基本的统计信息\n"
 "   dump - 简要显示整个缓存文件的内容\n"
 "   dump - 简要显示整个缓存文件的内容\n"
-"   dumpavail - 把所有有效的包文件列表打印到 stdout\n"
+"   dumpavail - 把所有有效的包文件列表打印到标准输出\n"
 "   unmet - 显示所有未满足的依赖关系\n"
 "   unmet - 显示所有未满足的依赖关系\n"
 "   search - 根据正则表达式搜索软件包列表\n"
 "   search - 根据正则表达式搜索软件包列表\n"
-"   show - 显示关于该软件包的便于阅读的一个报告\n"
-"   depends - 原原本本的显示该软件包的依赖关系的信息\n"
+"   show - 以便于阅读的格式介绍该软件包\n"
+"   depends - 原原本本地显示该软件包的依赖信息\n"
 "   rdepends - 显示所有依赖于该软件包的软件包名字\n"
 "   rdepends - 显示所有依赖于该软件包的软件包名字\n"
 "   pkgnames - 列出所有软件包的名字\n"
 "   pkgnames - 列出所有软件包的名字\n"
 "   dotty - 生成可用 GraphVis 处理的软件包关系图\n"
 "   dotty - 生成可用 GraphVis 处理的软件包关系图\n"
@@ -234,10 +234,7 @@ msgstr ""
 #: cmdline/apt-cdrom.cc:93
 #: cmdline/apt-cdrom.cc:93
 #, fuzzy
 #, fuzzy
 msgid "Please insert a Disc in the drive and press enter"
 msgid "Please insert a Disc in the drive and press enter"
-msgstr ""
-"更换介质:请把标有\n"
-"“%s”\n"
-"的碟片插入驱动器“%s”再按回车键\n"
+msgstr "请把标有 “%s” 的碟片插入驱动器“%s”再按回车键。"
 
 
 #: cmdline/apt-cdrom.cc:117
 #: cmdline/apt-cdrom.cc:117
 msgid "Repeat this process for the rest of the CDs in your set."
 msgid "Repeat this process for the rest of the CDs in your set."
@@ -300,7 +297,7 @@ msgstr ""
 "\n"
 "\n"
 "选项:\n"
 "选项:\n"
 "  -h   本帮助文本\n"
 "  -h   本帮助文本\n"
-"  -t   设置temp目录\n"
+"  -t   设置 temp 目录\n"
 "  -c=? 读指定的配置文件\n"
 "  -c=? 读指定的配置文件\n"
 "  -o=? 设置任意指定的配置选项,例如 -o dir::cache=/tmp\n"
 "  -o=? 设置任意指定的配置选项,例如 -o dir::cache=/tmp\n"
 
 
@@ -338,7 +335,6 @@ msgid "Error processing contents %s"
 msgstr "处理 Contents %s 时出错"
 msgstr "处理 Contents %s 时出错"
 
 
 #: ftparchive/apt-ftparchive.cc:556
 #: ftparchive/apt-ftparchive.cc:556
-#, fuzzy
 msgid ""
 msgid ""
 "Usage: apt-ftparchive [options] command\n"
 "Usage: apt-ftparchive [options] command\n"
 "Commands: packages binarypath [overridefile [pathprefix]]\n"
 "Commands: packages binarypath [overridefile [pathprefix]]\n"
@@ -388,8 +384,8 @@ msgstr ""
 "       clean 配置文件\n"
 "       clean 配置文件\n"
 "\n"
 "\n"
 "apt-ftparchive 被用来为 Debian 软件包生成索引文件。它能支持\n"
 "apt-ftparchive 被用来为 Debian 软件包生成索引文件。它能支持\n"
-"多种生成索引的方式,从全自动的生成到在功能上对 dpkg-scanpackages \n"
-"和 dpkg-scansources 的替代,都能游刃有余\n"
+"多种生成索引的方式,从全自动的索引生成到在功能上取代 dpkg-scanpackages \n"
+"和 dpkg-scansources,都能游刃有余\n"
 "\n"
 "\n"
 "apt-ftparchive 能依据一个由 .deb 文件构成的文件树生成 Package 文件。\n"
 "apt-ftparchive 能依据一个由 .deb 文件构成的文件树生成 Package 文件。\n"
 "Package 文件里不仅注有每个软件包的 MD5 校验码和文件大小,\n"
 "Package 文件里不仅注有每个软件包的 MD5 校验码和文件大小,\n"
@@ -410,7 +406,8 @@ msgstr ""
 "  -h    本帮助文档\n"
 "  -h    本帮助文档\n"
 "  --md5 使之生成 MD5 校验和\n"
 "  --md5 使之生成 MD5 校验和\n"
 "  -s=?  源代码包 override 文件\n"
 "  -s=?  源代码包 override 文件\n"
-"  -q    输出精简信息  -d=?  指定可选的缓存数据库\n"
+"  -q    输出精简信息\n"
+"  -d=?  指定可选的缓存数据库\n"
 "  -d=?  使用另一个可选的缓存数据库\n"
 "  -d=?  使用另一个可选的缓存数据库\n"
 "  --no-delink 开启delink的调试模式\n"
 "  --no-delink 开启delink的调试模式\n"
 "  --contents  使之生成控制内容文件\n"
 "  --contents  使之生成控制内容文件\n"
@@ -703,13 +700,12 @@ msgid "%s (due to %s) "
 msgstr "%s (是由于 %s) "
 msgstr "%s (是由于 %s) "
 
 
 #: cmdline/apt-get.cc:544
 #: cmdline/apt-get.cc:544
-#, fuzzy
 msgid ""
 msgid ""
 "WARNING: The following essential packages will be removed.\n"
 "WARNING: The following essential packages will be removed.\n"
 "This should NOT be done unless you know exactly what you are doing!"
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
 msgstr ""
 "【警告】:下列的重要软件包将被卸载 \n"
 "【警告】:下列的重要软件包将被卸载 \n"
-"请勿尝试,除非您确实清楚您正在执行的操作!"
+"请勿尝试,除非您确实知道您在做什么!"
 
 
 #: cmdline/apt-get.cc:575
 #: cmdline/apt-get.cc:575
 #, c-format
 #, c-format
@@ -750,7 +746,7 @@ msgstr "无法更正依赖关系"
 
 
 #: cmdline/apt-get.cc:656
 #: cmdline/apt-get.cc:656
 msgid "Unable to minimize the upgrade set"
 msgid "Unable to minimize the upgrade set"
-msgstr "无法使升级的软件包集最小化"
+msgstr "无法最小化要升级的软件包集合"
 
 
 #: cmdline/apt-get.cc:658
 #: cmdline/apt-get.cc:658
 msgid " Done"
 msgid " Done"
@@ -766,11 +762,11 @@ msgstr "不能满足依赖关系。不妨试一下 -f 选项。"
 
 
 #: cmdline/apt-get.cc:687
 #: cmdline/apt-get.cc:687
 msgid "WARNING: The following packages cannot be authenticated!"
 msgid "WARNING: The following packages cannot be authenticated!"
-msgstr "【警告】:下列的软件包不能通过证!"
+msgstr "【警告】:下列的软件包不能通过证!"
 
 
 #: cmdline/apt-get.cc:691
 #: cmdline/apt-get.cc:691
 msgid "Authentication warning overridden.\n"
 msgid "Authentication warning overridden.\n"
-msgstr ""
+msgstr "忽略了认证警告。\n"
 
 
 #: cmdline/apt-get.cc:698
 #: cmdline/apt-get.cc:698
 msgid "Install these packages without verification [y/N]? "
 msgid "Install these packages without verification [y/N]? "
@@ -782,20 +778,19 @@ msgstr "有些软件包不能通过验证"
 
 
 #: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856
 #: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856
 msgid "There are problems and -y was used without --force-yes"
 msgid "There are problems and -y was used without --force-yes"
-msgstr "碰到了一些问题,您使用了 -y 选项,但是没有用 --force-yes"
+msgstr "碰到了一些问题,您使用了 -y 选项,但是没有用 --force-yes"
 
 
 #: cmdline/apt-get.cc:753
 #: cmdline/apt-get.cc:753
 msgid "Internal error, InstallPackages was called with broken packages!"
 msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr ""
+msgstr "内部错误,InstallPackages 被用在了无法安装的软件包上!"
 
 
 #: cmdline/apt-get.cc:762
 #: cmdline/apt-get.cc:762
 msgid "Packages need to be removed but remove is disabled."
 msgid "Packages need to be removed but remove is disabled."
 msgstr "有软件包需要被卸载,但是卸载动作被程序设置所禁止。"
 msgstr "有软件包需要被卸载,但是卸载动作被程序设置所禁止。"
 
 
 #: cmdline/apt-get.cc:773
 #: cmdline/apt-get.cc:773
-#, fuzzy
 msgid "Internal error, Ordering didn't finish"
 msgid "Internal error, Ordering didn't finish"
-msgstr "添加 diversion 时出现内部错误"
+msgstr "内部错误,Ordering 没有完成"
 
 
 #: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1811 cmdline/apt-get.cc:1844
 #: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1811 cmdline/apt-get.cc:1844
 msgid "Unable to lock the download directory"
 msgid "Unable to lock the download directory"
@@ -808,7 +803,7 @@ msgstr "无法读取安装源列表。"
 
 
 #: cmdline/apt-get.cc:814
 #: cmdline/apt-get.cc:814
 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
-msgstr ""
+msgstr "怪了……文件大小不符,发信给 apt@packages.debian.org 吧"
 
 
 #: cmdline/apt-get.cc:819
 #: cmdline/apt-get.cc:819
 #, c-format
 #, c-format
@@ -831,9 +826,9 @@ msgid "After unpacking %sB disk space will be freed.\n"
 msgstr "解压缩后将会空出 %sB 的空间。\n"
 msgstr "解压缩后将会空出 %sB 的空间。\n"
 
 
 #: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1958
 #: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1958
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't determine free space in %s"
 msgid "Couldn't determine free space in %s"
-msgstr "您在 %s 上没有足够的空余空间"
+msgstr "无法获知您在 %s 上的空余空间"
 
 
 #: cmdline/apt-get.cc:847
 #: cmdline/apt-get.cc:847
 #, c-format
 #, c-format
@@ -849,13 +844,13 @@ msgid "Yes, do as I say!"
 msgstr "Yes, do as I say!"
 msgstr "Yes, do as I say!"
 
 
 #: cmdline/apt-get.cc:866
 #: cmdline/apt-get.cc:866
-#, fuzzy, c-format
+#, c-format
 msgid ""
 msgid ""
 "You are about to do something potentially harmful.\n"
 "You are about to do something potentially harmful.\n"
 "To continue type in the phrase '%s'\n"
 "To continue type in the phrase '%s'\n"
 " ?] "
 " ?] "
 msgstr ""
 msgstr ""
-"您的操作会导致潜在的危害\n"
+"您的操作会导致潜在的危害\n"
 "若还想继续的话,就输入下面的短句“%s”\n"
 "若还想继续的话,就输入下面的短句“%s”\n"
 " ?] "
 " ?] "
 
 
@@ -1040,7 +1035,7 @@ msgstr "下列的信息可能会对问题的解决有所帮助:"
 
 
 #: cmdline/apt-get.cc:1588
 #: cmdline/apt-get.cc:1588
 msgid "Broken packages"
 msgid "Broken packages"
-msgstr "受损安装包"
+msgstr "无法安装的软件包"
 
 
 #: cmdline/apt-get.cc:1614
 #: cmdline/apt-get.cc:1614
 msgid "The following extra packages will be installed:"
 msgid "The following extra packages will be installed:"
@@ -1067,9 +1062,8 @@ msgid "Done"
 msgstr "完成"
 msgstr "完成"
 
 
 #: cmdline/apt-get.cc:1779 cmdline/apt-get.cc:1787
 #: cmdline/apt-get.cc:1779 cmdline/apt-get.cc:1787
-#, fuzzy
 msgid "Internal error, problem resolver broke stuff"
 msgid "Internal error, problem resolver broke stuff"
-msgstr "内部错误,AllUpgrade 造成某些故障"
+msgstr "内部错误,problem resolver 坏事了"
 
 
 #: cmdline/apt-get.cc:1887
 #: cmdline/apt-get.cc:1887
 msgid "Must specify at least one package to fetch source for"
 msgid "Must specify at least one package to fetch source for"
@@ -1117,7 +1111,7 @@ msgstr "运行解包的命令“%s”出错。\n"
 #: cmdline/apt-get.cc:2047
 #: cmdline/apt-get.cc:2047
 #, c-format
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
 msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr ""
+msgstr "请检查是否安装了“dpkg-dev”软件包。\n"
 
 
 #: cmdline/apt-get.cc:2064
 #: cmdline/apt-get.cc:2064
 #, c-format
 #, c-format
@@ -1427,7 +1421,7 @@ msgid "Duplicate conf file %s/%s"
 msgstr "重复的配置文件 %s/%s"
 msgstr "重复的配置文件 %s/%s"
 
 
 #: apt-inst/dirstream.cc:45 apt-inst/dirstream.cc:50 apt-inst/dirstream.cc:53
 #: apt-inst/dirstream.cc:45 apt-inst/dirstream.cc:50 apt-inst/dirstream.cc:53
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to write file %s"
 msgid "Failed to write file %s"
 msgstr "无法写入文件 %s"
 msgstr "无法写入文件 %s"
 
 
@@ -1642,12 +1636,11 @@ msgstr "错误的光盘"
 #: methods/cdrom.cc:164
 #: methods/cdrom.cc:164
 #, c-format
 #, c-format
 msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
 msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
-msgstr "无法卸载现在挂载于 %s 的 CD-ROM,可能正在使用中。"
+msgstr "无法卸载现在挂载于 %s 的 CD-ROM,可能正在使用中。"
 
 
 #: methods/cdrom.cc:169
 #: methods/cdrom.cc:169
-#, fuzzy
 msgid "Disk not found."
 msgid "Disk not found."
-msgstr "无法找到该文件"
+msgstr "找不到光盘。"
 
 
 #: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
 #: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
 msgid "File not found"
 msgid "File not found"
@@ -1871,41 +1864,39 @@ msgstr "不能连接上 %s %s:"
 
 
 #: methods/gpgv.cc:92
 #: methods/gpgv.cc:92
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-msgstr ""
+msgstr "错误:Acquire::gpgv::Options 的参数列表超长。结束运行。"
 
 
 #: methods/gpgv.cc:191
 #: methods/gpgv.cc:191
 msgid ""
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
 "Internal error: Good signature, but could not determine key fingerprint?!"
-msgstr ""
+msgstr "内部错误:签名正确无误,但是无法确认密钥的指纹(key fingerprint)?!"
 
 
 #: methods/gpgv.cc:196
 #: methods/gpgv.cc:196
 msgid "At least one invalid signature was encountered."
 msgid "At least one invalid signature was encountered."
-msgstr ""
+msgstr "至少发现一个无效的签名。"
 
 
 #. FIXME String concatenation considered harmful.
 #. FIXME String concatenation considered harmful.
 #: methods/gpgv.cc:201
 #: methods/gpgv.cc:201
-#, fuzzy
 msgid "Could not execute "
 msgid "Could not execute "
-msgstr "无法获得锁 %s"
+msgstr "未能执行 "
 
 
 #: methods/gpgv.cc:202
 #: methods/gpgv.cc:202
 msgid " to verify signature (is gnupg installed?)"
 msgid " to verify signature (is gnupg installed?)"
-msgstr ""
+msgstr "用于验证签名(您安装了 gnupg 么?)"
 
 
 #: methods/gpgv.cc:206
 #: methods/gpgv.cc:206
 msgid "Unknown error executing gpgv"
 msgid "Unknown error executing gpgv"
-msgstr ""
+msgstr "运行 gpgv 时发生未知错误"
 
 
 #: methods/gpgv.cc:237
 #: methods/gpgv.cc:237
-#, fuzzy
 msgid "The following signatures were invalid:\n"
 msgid "The following signatures were invalid:\n"
-msgstr "将会安装下列的额外的软件包:"
+msgstr "下列签名无效:\n"
 
 
 #: methods/gpgv.cc:244
 #: methods/gpgv.cc:244
 msgid ""
 msgid ""
 "The following signatures couldn't be verified because the public key is not "
 "The following signatures couldn't be verified because the public key is not "
 "available:\n"
 "available:\n"
-msgstr ""
+msgstr "由于没有公钥,下列签名无法进行验证:\n"
 
 
 #: methods/gzip.cc:57
 #: methods/gzip.cc:57
 #, c-format
 #, c-format
@@ -2386,7 +2377,7 @@ msgstr "找不到“%spartial”这个目录。"
 #: apt-pkg/acquire.cc:817
 #: apt-pkg/acquire.cc:817
 #, c-format
 #, c-format
 msgid "Downloading file %li of %li (%s remaining)"
 msgid "Downloading file %li of %li (%s remaining)"
-msgstr ""
+msgstr "正在下载第 %li 个文件(共 %li 个,尚需 %s)"
 
 
 #: apt-pkg/acquire-worker.cc:113
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
 #, c-format
@@ -2399,12 +2390,9 @@ msgid "Method %s did not start correctly"
 msgstr "获取软件包的渠道 %s 所需的驱动程序没有正常启动。"
 msgstr "获取软件包的渠道 %s 所需的驱动程序没有正常启动。"
 
 
 #: apt-pkg/acquire-worker.cc:377
 #: apt-pkg/acquire-worker.cc:377
-#, fuzzy, c-format
+#, c-format
 msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
 msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
-msgstr ""
-"更换介质:请把标有\n"
-"“%s”\n"
-"的碟片插入驱动器“%s”再按回车键\n"
+msgstr "请把标有 “%s” 的碟片插入驱动器“%s”再按回车键。"
 
 
 #: apt-pkg/init.cc:119
 #: apt-pkg/init.cc:119
 #, c-format
 #, c-format
@@ -2422,7 +2410,7 @@ msgstr "无法读取 %s 的状态。"
 
 
 #: apt-pkg/srcrecords.cc:48
 #: apt-pkg/srcrecords.cc:48
 msgid "You must put some 'source' URIs in your sources.list"
 msgid "You must put some 'source' URIs in your sources.list"
-msgstr "您必须在您的 sources.list 输入一些“软件包源”的 URL"
+msgstr "您必须在您的 sources.list 写入一些“软件包源”的 URI"
 
 
 #: apt-pkg/cachefile.cc:73
 #: apt-pkg/cachefile.cc:73
 msgid "The package lists or status file could not be parsed or opened."
 msgid "The package lists or status file could not be parsed or opened."
@@ -2554,7 +2542,7 @@ msgstr ""
 #, c-format
 #, c-format
 msgid ""
 msgid ""
 "The package index files are corrupted. No Filename: field for package %s."
 "The package index files are corrupted. No Filename: field for package %s."
-msgstr "软件包的索引文件已损坏。找不到对应软件包 %s 的 Filename: 字段"
+msgstr "软件包的索引文件已损坏。找不到对应软件包 %s 的 Filename: 字段"
 
 
 #: apt-pkg/acquire-item.cc:898
 #: apt-pkg/acquire-item.cc:898
 msgid "Size mismatch"
 msgid "Size mismatch"
@@ -2660,54 +2648,54 @@ msgid "Wrote %i records with %i missing files and %i mismatched files\n"
 msgstr "已写入 %i 条记录,并有 %i 个缺失,以及 %i 个文件不吻合\n"
 msgstr "已写入 %i 条记录,并有 %i 个缺失,以及 %i 个文件不吻合\n"
 
 
 #: apt-pkg/deb/dpkgpm.cc:358
 #: apt-pkg/deb/dpkgpm.cc:358
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing %s"
 msgid "Preparing %s"
-msgstr "正在打开 %s"
+msgstr "正在准备 %s"
 
 
 #: apt-pkg/deb/dpkgpm.cc:359
 #: apt-pkg/deb/dpkgpm.cc:359
-#, fuzzy, c-format
+#, c-format
 msgid "Unpacking %s"
 msgid "Unpacking %s"
-msgstr "正在打开 %s"
+msgstr "正在解压缩 %s"
 
 
 #: apt-pkg/deb/dpkgpm.cc:364
 #: apt-pkg/deb/dpkgpm.cc:364
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing to configure %s"
 msgid "Preparing to configure %s"
-msgstr "正在打开配置文件 %s"
+msgstr "正在准备配置 %s"
 
 
 #: apt-pkg/deb/dpkgpm.cc:365
 #: apt-pkg/deb/dpkgpm.cc:365
-#, fuzzy, c-format
+#, c-format
 msgid "Configuring %s"
 msgid "Configuring %s"
-msgstr "正在连接 %s"
+msgstr "正在配置 %s"
 
 
 #: apt-pkg/deb/dpkgpm.cc:366
 #: apt-pkg/deb/dpkgpm.cc:366
-#, fuzzy, c-format
+#, c-format
 msgid "Installed %s"
 msgid "Installed %s"
-msgstr "  已安装:"
+msgstr "已安装 %s"
 
 
 #: apt-pkg/deb/dpkgpm.cc:371
 #: apt-pkg/deb/dpkgpm.cc:371
 #, c-format
 #, c-format
 msgid "Preparing for removal of %s"
 msgid "Preparing for removal of %s"
-msgstr ""
+msgstr "正在准备 %s 的删除操作"
 
 
 #: apt-pkg/deb/dpkgpm.cc:372
 #: apt-pkg/deb/dpkgpm.cc:372
-#, fuzzy, c-format
+#, c-format
 msgid "Removing %s"
 msgid "Removing %s"
-msgstr "正在打开 %s"
+msgstr "正在删除 %s"
 
 
 #: apt-pkg/deb/dpkgpm.cc:373
 #: apt-pkg/deb/dpkgpm.cc:373
-#, fuzzy, c-format
+#, c-format
 msgid "Removed %s"
 msgid "Removed %s"
-msgstr "推荐"
+msgstr "已删除 %s"
 
 
 #: apt-pkg/deb/dpkgpm.cc:378
 #: apt-pkg/deb/dpkgpm.cc:378
 #, c-format
 #, c-format
 msgid "Preparing for remove with config %s"
 msgid "Preparing for remove with config %s"
-msgstr ""
+msgstr "正在准备连同配置文件的删除 %s"
 
 
 #: apt-pkg/deb/dpkgpm.cc:379
 #: apt-pkg/deb/dpkgpm.cc:379
 #, c-format
 #, c-format
 msgid "Removed with config %s"
 msgid "Removed with config %s"
-msgstr ""
+msgstr "连同配置文件一同删除 %s "
 
 
 #: methods/rsh.cc:330
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"
 msgid "Connection closed prematurely"