]> git.saurik.com Git - apt.git/commitdiff
* merged with apt--mvo--0
authorMichael Vogt <michael.vogt@ubuntu.com>
Mon, 14 Nov 2005 15:14:06 +0000 (15:14 +0000)
committerMichael Vogt <michael.vogt@ubuntu.com>
Mon, 14 Nov 2005 15:14:06 +0000 (15:14 +0000)
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

apt-pkg/init.cc
apt-pkg/sourcelist.cc
apt-pkg/sourcelist.h
configure.in
debian/changelog
po/ChangeLog
po/zh_CN.po

index f4b816c0be468c11b7818a2905e4e8b74ff72c3c..b47378d4a96ad6c87565bc010e7797b65996a375 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // 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
@@ -64,13 +64,14 @@ bool pkgInitConfig(Configuration &Cnf)
    // Configuration
    Cnf.Set("Dir::Etc","etc/apt/");
    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::vendorparts","vendors.list.d");
    Cnf.Set("Dir::Etc::main","apt.conf");
    Cnf.Set("Dir::Etc::parts","apt.conf.d");
    Cnf.Set("Dir::Etc::preferences","preferences");
    Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods");
-             
+   
    bool Res = true;
    
    // Read an alternate config file
index 95aba0cb58d3de643cb4cda4a99c0d8f44c088e2..db895a6c19171d4a59211537ebc875917a0f67b4 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // 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
 #include <apti18n.h>
 
 #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;
@@ -142,23 +149,66 @@ pkgSourceList::~pkgSourceList()
 /* */
 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                                /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 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
    ifstream F(File.c_str(),ios::in /*| ios::nocreate*/);
    if (!F != 0)
       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++)
       delete *I;
    SrcList.erase(SrcList.begin(),SrcList.end());
-   char Buffer[300];
+#endif
+   // CNC:2003-12-10 - 300 is too short.
+   char Buffer[1024];
 
    int CurLine = 0;
    while (F.eof() == false)
@@ -172,7 +222,10 @@ bool pkgSourceList::Read(string File)
 
       
       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;
       
       const char *C = _strstrip(Buffer);
@@ -188,7 +241,7 @@ bool pkgSourceList::Read(string File)
 
       Type *Parse = Type::GetType(LineType.c_str());
       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
       if (C[0] == '[')
@@ -259,3 +312,55 @@ bool pkgSourceList::GetIndexes(pkgAcquire *Owner, bool GetAll) const
    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;
+
+}
+                                                                       /*}}}*/
+
index 5d84270173944fc292cf8571fe0ef16b8cd24ed5..123ae69849fedadbf5781ed57e8e669768d932fe 100644 (file)
@@ -77,6 +77,11 @@ class pkgSourceList
 
    bool ReadMainList();
    bool Read(string File);
+
+   // CNC:2003-03-03
+   void Reset();
+   bool ReadAppend(string File);
+   bool ReadSourceDir(string Dir);
    
    // List accessors
    inline const_iterator begin() const {return SrcList.begin();};
index b08311e7234ebee30c3f9f6552920898e3825170..fb6441f583b80e3fba370407dfe12ee58eda2a36 100644 (file)
@@ -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)
 
 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"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)
index ccf6b8eadb3bc11a543fc25ff4f1ad09eb38e0e6..8f03f2dc7f50f526076cd940364617eb6a547fac 100644 (file)
@@ -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
 
   * synced with debian
index 8f171aa11216183d57baecf1af869752537de7c7..52086113db9521dc28be736476c7e27864ff3232 100644 (file)
@@ -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>
 
        * eu.po: Completed to 510 strings
index 24ccc3ec4e4a9b792753e39947b5ab4cf8706a49..5f2be979dbad61adf2c04f2952023c7cf9519800 100644 (file)
@@ -1,6 +1,6 @@
 # Chinese/Simplified translation of apt.
 # 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.
 # 
 msgid ""
@@ -8,9 +8,9 @@ msgstr ""
 "Project-Id-Version: apt 0.5.23\n"
 "Report-Msgid-Bugs-To: \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"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -206,11 +206,11 @@ msgstr ""
 "   showsrc - 显示源文件的各项记录\n"
 "   stats - 显示一些基本的统计信息\n"
 "   dump - 简要显示整个缓存文件的内容\n"
-"   dumpavail - 把所有有效的包文件列表打印到 stdout\n"
+"   dumpavail - 把所有有效的包文件列表打印到标准输出\n"
 "   unmet - 显示所有未满足的依赖关系\n"
 "   search - 根据正则表达式搜索软件包列表\n"
-"   show - 显示关于该软件包的便于阅读的一个报告\n"
-"   depends - 原原本本的显示该软件包的依赖关系的信息\n"
+"   show - 以便于阅读的格式介绍该软件包\n"
+"   depends - 原原本本地显示该软件包的依赖信息\n"
 "   rdepends - 显示所有依赖于该软件包的软件包名字\n"
 "   pkgnames - 列出所有软件包的名字\n"
 "   dotty - 生成可用 GraphVis 处理的软件包关系图\n"
@@ -234,10 +234,7 @@ msgstr ""
 #: cmdline/apt-cdrom.cc:93
 #, fuzzy
 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
 msgid "Repeat this process for the rest of the CDs in your set."
@@ -300,7 +297,7 @@ msgstr ""
 "\n"
 "选项:\n"
 "  -h   本帮助文本\n"
-"  -t   设置temp目录\n"
+"  -t   设置 temp 目录\n"
 "  -c=? 读指定的配置文件\n"
 "  -o=? 设置任意指定的配置选项,例如 -o dir::cache=/tmp\n"
 
@@ -338,7 +335,6 @@ msgid "Error processing contents %s"
 msgstr "处理 Contents %s 时出错"
 
 #: ftparchive/apt-ftparchive.cc:556
-#, fuzzy
 msgid ""
 "Usage: apt-ftparchive [options] command\n"
 "Commands: packages binarypath [overridefile [pathprefix]]\n"
@@ -388,8 +384,8 @@ msgstr ""
 "       clean 配置文件\n"
 "\n"
 "apt-ftparchive 被用来为 Debian 软件包生成索引文件。它能支持\n"
-"å¤\9aç§\8dç\94\9fæ\88\90ç´¢å¼\95ç\9a\84æ\96¹å¼\8fï¼\8cä»\8eå\85¨è\87ªå\8a¨ç\9a\84ç\94\9fæ\88\90å\88°å\9c¨å\8a\9fè\83½ä¸\8a对 dpkg-scanpackages \n"
-"和 dpkg-scansources 的替代,都能游刃有余\n"
+"å¤\9aç§\8dç\94\9fæ\88\90ç´¢å¼\95ç\9a\84æ\96¹å¼\8fï¼\8cä»\8eå\85¨è\87ªå\8a¨ç\9a\84ç´¢å¼\95ç\94\9fæ\88\90å\88°å\9c¨å\8a\9fè\83½ä¸\8aå\8f\96代 dpkg-scanpackages \n"
+"和 dpkg-scansources,都能游刃有余\n"
 "\n"
 "apt-ftparchive 能依据一个由 .deb 文件构成的文件树生成 Package 文件。\n"
 "Package 文件里不仅注有每个软件包的 MD5 校验码和文件大小,\n"
@@ -410,7 +406,8 @@ msgstr ""
 "  -h    本帮助文档\n"
 "  --md5 使之生成 MD5 校验和\n"
 "  -s=?  源代码包 override 文件\n"
-"  -q    输出精简信息  -d=?  指定可选的缓存数据库\n"
+"  -q    输出精简信息\n"
+"  -d=?  指定可选的缓存数据库\n"
 "  -d=?  使用另一个可选的缓存数据库\n"
 "  --no-delink 开启delink的调试模式\n"
 "  --contents  使之生成控制内容文件\n"
@@ -703,13 +700,12 @@ msgid "%s (due to %s) "
 msgstr "%s (是由于 %s) "
 
 #: cmdline/apt-get.cc:544
-#, fuzzy
 msgid ""
 "WARNING: The following essential packages will be removed.\n"
 "This should NOT be done unless you know exactly what you are doing!"
 msgstr ""
 "【警告】:下列的重要软件包将被卸载 \n"
-"请勿尝试,除非您确实清楚您正在执行的操作!"
+"请勿尝试,除非您确实知道您在做什么!"
 
 #: cmdline/apt-get.cc:575
 #, c-format
@@ -750,7 +746,7 @@ msgstr "无法更正依赖关系"
 
 #: cmdline/apt-get.cc:656
 msgid "Unable to minimize the upgrade set"
-msgstr "无法使升级的软件包集最小化"
+msgstr "无法最小化要升级的软件包集合"
 
 #: cmdline/apt-get.cc:658
 msgid " Done"
@@ -766,11 +762,11 @@ msgstr "不能满足依赖关系。不妨试一下 -f 选项。"
 
 #: cmdline/apt-get.cc:687
 msgid "WARNING: The following packages cannot be authenticated!"
-msgstr "【警告】:下列的软件包不能通过证!"
+msgstr "【警告】:下列的软件包不能通过证!"
 
 #: cmdline/apt-get.cc:691
 msgid "Authentication warning overridden.\n"
-msgstr ""
+msgstr "忽略了认证警告。\n"
 
 #: cmdline/apt-get.cc:698
 msgid "Install these packages without verification [y/N]? "
@@ -782,20 +778,19 @@ msgstr "有些软件包不能通过验证"
 
 #: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856
 msgid "There are problems and -y was used without --force-yes"
-msgstr "碰到了一些问题,您使用了 -y 选项,但是没有用 --force-yes"
+msgstr "碰到了一些问题,您使用了 -y 选项,但是没有用 --force-yes"
 
 #: cmdline/apt-get.cc:753
 msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr ""
+msgstr "内部错误,InstallPackages 被用在了无法安装的软件包上!"
 
 #: cmdline/apt-get.cc:762
 msgid "Packages need to be removed but remove is disabled."
 msgstr "有软件包需要被卸载,但是卸载动作被程序设置所禁止。"
 
 #: cmdline/apt-get.cc:773
-#, fuzzy
 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
 msgid "Unable to lock the download directory"
@@ -808,7 +803,7 @@ msgstr "无法读取安装源列表。"
 
 #: cmdline/apt-get.cc:814
 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
-msgstr ""
+msgstr "怪了……文件大小不符,发信给 apt@packages.debian.org 吧"
 
 #: cmdline/apt-get.cc:819
 #, c-format
@@ -831,9 +826,9 @@ msgid "After unpacking %sB disk space will be freed.\n"
 msgstr "解压缩后将会空出 %sB 的空间。\n"
 
 #: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1958
-#, fuzzy, c-format
+#, c-format
 msgid "Couldn't determine free space in %s"
-msgstr "æ\82¨å\9c¨ %s ä¸\8a没æ\9c\89è¶³å¤\9f的空余空间"
+msgstr "æ\97 æ³\95è\8e·ç\9f¥æ\82¨å\9c¨ %s ä¸\8a的空余空间"
 
 #: cmdline/apt-get.cc:847
 #, c-format
@@ -849,13 +844,13 @@ msgid "Yes, do as I say!"
 msgstr "Yes, do as I say!"
 
 #: cmdline/apt-get.cc:866
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "You are about to do something potentially harmful.\n"
 "To continue type in the phrase '%s'\n"
 " ?] "
 msgstr ""
-"您的操作会导致潜在的危害\n"
+"您的操作会导致潜在的危害\n"
 "若还想继续的话,就输入下面的短句“%s”\n"
 " ?] "
 
@@ -1040,7 +1035,7 @@ msgstr "下列的信息可能会对问题的解决有所帮助:"
 
 #: cmdline/apt-get.cc:1588
 msgid "Broken packages"
-msgstr "受损安装包"
+msgstr "无法安装的软件包"
 
 #: cmdline/apt-get.cc:1614
 msgid "The following extra packages will be installed:"
@@ -1067,9 +1062,8 @@ msgid "Done"
 msgstr "完成"
 
 #: cmdline/apt-get.cc:1779 cmdline/apt-get.cc:1787
-#, fuzzy
 msgid "Internal error, problem resolver broke stuff"
-msgstr "内部错误,AllUpgrade 造成某些故障"
+msgstr "内部错误,problem resolver 坏事了"
 
 #: cmdline/apt-get.cc:1887
 msgid "Must specify at least one package to fetch source for"
@@ -1117,7 +1111,7 @@ msgstr "运行解包的命令“%s”出错。\n"
 #: cmdline/apt-get.cc:2047
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr ""
+msgstr "请检查是否安装了“dpkg-dev”软件包。\n"
 
 #: cmdline/apt-get.cc:2064
 #, c-format
@@ -1427,7 +1421,7 @@ msgid "Duplicate conf file %s/%s"
 msgstr "重复的配置文件 %s/%s"
 
 #: 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"
 msgstr "无法写入文件 %s"
 
@@ -1642,12 +1636,11 @@ msgstr "错误的光盘"
 #: methods/cdrom.cc:164
 #, c-format
 msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
-msgstr "æ\97 æ³\95å\8d¸è½½ç\8e°å\9c¨æ\8c\82è½½äº\8e %s ç\9a\84 CD-ROMï¼\8cå\8f¯è\83½å®\83正在使用中。"
+msgstr "æ\97 æ³\95å\8d¸è½½ç\8e°å\9c¨æ\8c\82è½½äº\8e %s ç\9a\84 CD-ROMï¼\8cå®\83å\8f¯è\83½正在使用中。"
 
 #: methods/cdrom.cc:169
-#, fuzzy
 msgid "Disk not found."
-msgstr "æ\97 æ³\95æ\89¾å\88°è¯¥æ\96\87ä»¶"
+msgstr "æ\89¾ä¸\8då\88°å\85\89ç\9b\98ã\80\82"
 
 #: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
 msgid "File not found"
@@ -1871,41 +1864,39 @@ msgstr "不能连接上 %s %s:"
 
 #: methods/gpgv.cc:92
 msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-msgstr ""
+msgstr "错误:Acquire::gpgv::Options 的参数列表超长。结束运行。"
 
 #: methods/gpgv.cc:191
 msgid ""
 "Internal error: Good signature, but could not determine key fingerprint?!"
-msgstr ""
+msgstr "内部错误:签名正确无误,但是无法确认密钥的指纹(key fingerprint)?!"
 
 #: methods/gpgv.cc:196
 msgid "At least one invalid signature was encountered."
-msgstr ""
+msgstr "至少发现一个无效的签名。"
 
 #. FIXME String concatenation considered harmful.
 #: methods/gpgv.cc:201
-#, fuzzy
 msgid "Could not execute "
-msgstr "æ\97 æ³\95è\8e·å¾\97é\94\81 %s"
+msgstr "æ\9cªè\83½æ\89§è¡\8c "
 
 #: methods/gpgv.cc:202
 msgid " to verify signature (is gnupg installed?)"
-msgstr ""
+msgstr "用于验证签名(您安装了 gnupg 么?)"
 
 #: methods/gpgv.cc:206
 msgid "Unknown error executing gpgv"
-msgstr ""
+msgstr "运行 gpgv 时发生未知错误"
 
 #: methods/gpgv.cc:237
-#, fuzzy
 msgid "The following signatures were invalid:\n"
-msgstr "将会安装下列的额外的软件包:"
+msgstr "下列签名无效:\n"
 
 #: methods/gpgv.cc:244
 msgid ""
 "The following signatures couldn't be verified because the public key is not "
 "available:\n"
-msgstr ""
+msgstr "由于没有公钥,下列签名无法进行验证:\n"
 
 #: methods/gzip.cc:57
 #, c-format
@@ -2386,7 +2377,7 @@ msgstr "找不到“%spartial”这个目录。"
 #: apt-pkg/acquire.cc:817
 #, c-format
 msgid "Downloading file %li of %li (%s remaining)"
-msgstr ""
+msgstr "正在下载第 %li 个文件(共 %li 个,尚需 %s)"
 
 #: apt-pkg/acquire-worker.cc:113
 #, c-format
@@ -2399,12 +2390,9 @@ msgid "Method %s did not start correctly"
 msgstr "获取软件包的渠道 %s 所需的驱动程序没有正常启动。"
 
 #: 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."
-msgstr ""
-"更换介质:请把标有\n"
-"“%s”\n"
-"的碟片插入驱动器“%s”再按回车键\n"
+msgstr "请把标有 “%s” 的碟片插入驱动器“%s”再按回车键。"
 
 #: apt-pkg/init.cc:119
 #, c-format
@@ -2422,7 +2410,7 @@ msgstr "无法读取 %s 的状态。"
 
 #: apt-pkg/srcrecords.cc:48
 msgid "You must put some 'source' URIs in your sources.list"
-msgstr "您必须在您的 sources.list 输入一些“软件包源”的 URL"
+msgstr "您必须在您的 sources.list 写入一些“软件包源”的 URI"
 
 #: apt-pkg/cachefile.cc:73
 msgid "The package lists or status file could not be parsed or opened."
@@ -2554,7 +2542,7 @@ msgstr ""
 #, c-format
 msgid ""
 "The package index files are corrupted. No Filename: field for package %s."
-msgstr "软件包的索引文件已损坏。找不到对应软件包 %s 的 Filename: 字段"
+msgstr "软件包的索引文件已损坏。找不到对应软件包 %s 的 Filename: 字段"
 
 #: apt-pkg/acquire-item.cc:898
 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"
 
 #: apt-pkg/deb/dpkgpm.cc:358
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing %s"
-msgstr "正在打开 %s"
+msgstr "正在准备 %s"
 
 #: apt-pkg/deb/dpkgpm.cc:359
-#, fuzzy, c-format
+#, c-format
 msgid "Unpacking %s"
-msgstr "正在打开 %s"
+msgstr "正在解压缩 %s"
 
 #: apt-pkg/deb/dpkgpm.cc:364
-#, fuzzy, c-format
+#, c-format
 msgid "Preparing to configure %s"
-msgstr "正在打开配置文件 %s"
+msgstr "正在准备配置 %s"
 
 #: apt-pkg/deb/dpkgpm.cc:365
-#, fuzzy, c-format
+#, c-format
 msgid "Configuring %s"
-msgstr "正在连接 %s"
+msgstr "正在配置 %s"
 
 #: apt-pkg/deb/dpkgpm.cc:366
-#, fuzzy, c-format
+#, c-format
 msgid "Installed %s"
-msgstr "  已安装:"
+msgstr "已安装 %s"
 
 #: apt-pkg/deb/dpkgpm.cc:371
 #, c-format
 msgid "Preparing for removal of %s"
-msgstr ""
+msgstr "正在准备 %s 的删除操作"
 
 #: apt-pkg/deb/dpkgpm.cc:372
-#, fuzzy, c-format
+#, c-format
 msgid "Removing %s"
-msgstr "正在打开 %s"
+msgstr "正在删除 %s"
 
 #: apt-pkg/deb/dpkgpm.cc:373
-#, fuzzy, c-format
+#, c-format
 msgid "Removed %s"
-msgstr "推荐"
+msgstr "已删除 %s"
 
 #: apt-pkg/deb/dpkgpm.cc:378
 #, c-format
 msgid "Preparing for remove with config %s"
-msgstr ""
+msgstr "正在准备连同配置文件的删除 %s"
 
 #: apt-pkg/deb/dpkgpm.cc:379
 #, c-format
 msgid "Removed with config %s"
-msgstr ""
+msgstr "连同配置文件一同删除 %s "
 
 #: methods/rsh.cc:330
 msgid "Connection closed prematurely"