Explorar el Código

merged from david

Michael Vogt hace 17 años
padre
commit
b69e142488
Se han modificado 11 ficheros con 1270 adiciones y 715 borrados
  1. 17 2
      apt-pkg/deb/dpkgpm.cc
  2. 34 9
      cmdline/apt-get.cc
  3. 16 0
      debian/NEWS
  4. 11 4
      debian/changelog
  5. 5 2
      doc/apt-cache.8.xml
  6. 32 4
      doc/apt.conf.5.xml
  7. 11 0
      doc/pl/makefile
  8. 252 0
      doc/pl/offline.pl.sgml
  9. 285 229
      doc/po/apt-doc.pot
  10. 303 232
      doc/po/fr.po
  11. 304 233
      doc/po/ja.po

+ 17 - 2
apt-pkg/deb/dpkgpm.cc

@@ -641,6 +641,7 @@ bool pkgDPkgPM::Go(int OutStatusFd)
    // support subpressing of triggers processing for special
    // cases like d-i that runs the triggers handling manually
    bool const SmartConf = (_config->Find("PackageManager::Configure", "all") != "all");
+   bool const TriggersPending = _config->FindB("DPkg::TriggersPending", false);
    if (_config->FindB("DPkg::ConfigurePending", SmartConf) == true)
       List.push_back(Item(Item::ConfigurePending, PkgIterator()));
 
@@ -701,9 +702,23 @@ bool pkgDPkgPM::Go(int OutStatusFd)
    // this loop is runs once per operation
    for (vector<Item>::const_iterator I = List.begin(); I != List.end();)
    {
+      // Do all actions with the same Op in one run
       vector<Item>::const_iterator J = I;
-      for (; J != List.end() && J->Op == I->Op; J++)
-	 /* nothing */;
+      if (TriggersPending == true)
+	 for (; J != List.end(); J++)
+	 {
+	    if (J->Op == I->Op)
+	       continue;
+	    if (J->Op != Item::TriggersPending)
+	       break;
+	    vector<Item>::const_iterator T = J + 1;
+	    if (T != List.end() && T->Op == I->Op)
+	       continue;
+	    break;
+	 }
+      else
+	 for (; J != List.end() && J->Op == I->Op; J++)
+	    /* nothing */;
 
       // Generate the argument list
       const char *Args[MaxArgs + 50];

+ 34 - 9
cmdline/apt-get.cc

@@ -1049,17 +1049,42 @@ bool TryToInstall(pkgCache::PkgIterator Pkg,pkgDepCache &Cache,
 		  pkgProblemResolver &Fix,bool Remove,bool BrokenFix,
 		  unsigned int &ExpectedInst,bool AllowFail = true)
 {
-   /* This is a pure virtual package and there is a single available 
-      provides */
-   if (Cache[Pkg].CandidateVer == 0 && Pkg->ProvidesList != 0 &&
-       Pkg.ProvidesList()->NextProvides == 0)
+   /* This is a pure virtual package and there is a single available
+      candidate providing it. */
+   if (Cache[Pkg].CandidateVer == 0 && Pkg->ProvidesList != 0)
    {
-      pkgCache::PkgIterator Tmp = Pkg.ProvidesList().OwnerPkg();
-      ioprintf(c1out,_("Note, selecting %s instead of %s\n"),
-	       Tmp.Name(),Pkg.Name());
-      Pkg = Tmp;
+      pkgCache::PkgIterator Prov;
+      bool found_one = false;
+
+      for (pkgCache::PrvIterator P = Pkg.ProvidesList(); P; P++)
+      {
+	 pkgCache::VerIterator const PVer = P.OwnerVer();
+	 pkgCache::PkgIterator const PPkg = PVer.ParentPkg();
+
+	 /* Ignore versions that are not a candidate. */
+	 if (Cache[PPkg].CandidateVer != PVer)
+	     continue;
+
+	 if (found_one == false)
+	 {
+	    Prov = PPkg;
+	    found_one = true;
+	 }
+	 else if (PPkg != Prov)
+	 {
+	    found_one = false; // we found at least two
+	    break;
+	 }
+      }
+
+      if (found_one == true)
+      {
+	 ioprintf(c1out,_("Note, selecting %s instead of %s\n"),
+		  Prov.Name(),Pkg.Name());
+	 Pkg = Prov;
+      }
    }
-   
+
    // Handle the no-upgrade case
    if (_config->FindB("APT::Get::upgrade",true) == false &&
        Pkg->CurrentVer != 0)

+ 16 - 0
debian/NEWS

@@ -1,3 +1,19 @@
+apt (0.7.24) unstable; urgency=low
+
+  * Allready included in the last version but now with better documentation
+    is the possibility to add/prefer different compression types while
+    downloading archive informations, which can decrease the time needed for
+    update on slow machines. See apt.conf (5) manpage for details.
+  * APT manages his manpage translations now with po4a, thanks to Nicolas
+    François and Kurasawa Nozomu, who also provide the ja translation.
+    Thanks to Christian Perrier we have already a fr translation and
+    a few more are hopefully added in the near future.
+  * This version also introduces some _experimental_ configuration options
+    to make more aggressive use of dpkg's triggers. If you want to help
+    testing these _experimental_ options see apt.conf (5) manpage.
+
+ -- David Kalnischkies <kalnischkies@gmail.com>  Thu, 24 Sep 2009 15:13:16 +0200
+
 apt (0.7.23) unstable; urgency=low
 
   * Code that determines which proxy to use was changed. Now

+ 11 - 4
debian/changelog

@@ -30,10 +30,15 @@ apt (0.7.24) UNRELEASED; urgency=low
   * apt-pkg/contrib/strutl.cc:
     - replace unknown multibytes with ? in UTF8ToCharset (Closes: #545208)
   * doc/apt-get.8.xml:
-    - fix two little typos in the --simulate description.
+    - fix two little typos in the --simulate description. (Closes: #545059)
   * apt-pkg/aptconfiguration.cc, doc/apt.conf.5.xml:
     - add an order subgroup to the compression types to simplify reordering
       a bit and improve the documentation for this option group.
+  * doc/apt.conf.5.xml:
+    - document the Acquire::http::Dl-Limit option
+    - try to be cristal clear about the usage of :: and {} (Closes: #503481)
+  * doc/apt-cache.8.xml:
+    - clarify the note for the pkgnames command (Closes: #547599)
   * doc/apt.ent, all man pages:
     - move the description of files to globally usable entities
   * doc/apt_preferences.5.xml:
@@ -49,14 +54,16 @@ apt (0.7.24) UNRELEASED; urgency=low
   * apt-pkg/deb/dpkgpm.cc, apt-pkg/packagemanager.cc, apt-pkg/orderlist.cc:
     - add and document _experimental_ options to make (aggressive)
       use of dpkg's trigger and configuration handling (Closes: #473461)
+  * cmdline/apt-get.cc:
+    - ignore versions that are not candidates when selecting a package
+      instead of a virtual one (by Marius Vollmer, Closes: #547788)
 
   [ Christian Perrier ]
   * doc/fr/*, doc/po/fr.po:
     - remove the old fr man page translation and replace it with
       the new po4a-powered translation
-  * doc/pl, doc/de: dropped (pl translation is useless as the translated
-    document is not provideed anymore and the de translation is too
-    incomplete to be used)
+  * doc/de: dropped (translation is too incomplete to be useful in
+      the transition to the po4a-powered translations)
 
  -- David Kalnischkies <kalnischkies@gmail.com>  Fri, 28 Aug 2009 09:40:08 +0200
 

+ 5 - 2
doc/apt-cache.8.xml

@@ -226,11 +226,14 @@ Reverse Provides:
      </varlistentry>
 
      <varlistentry><term>pkgnames <replaceable>[ prefix ]</replaceable></term>
-     <listitem><para>This command prints the name of each package in the system. The optional
+     <listitem><para>This command prints the name of each package APT knows. The optional
      argument is a prefix match to filter the name list. The output is suitable
      for use in a shell tab complete function and the output is generated 
      extremely quickly. This command is best used with the 
-     <option>--generate</option> option.</para></listitem>
+     <option>--generate</option> option.</para>
+     <para>Note that a package which APT knows of is not nessasarily available to download,
+     installable or installed, e.g. virtual packages are also listed in the generated list.
+     </para></listitem>
      </varlistentry>
      
      <varlistentry><term>dotty <replaceable>pkg(s)</replaceable></term>

+ 32 - 4
doc/apt.conf.5.xml

@@ -86,17 +86,40 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
    <para>The names of the configuration items are not case-sensitive. So in the previous example
    you could use <literal>dpkg::pre-install-pkgs</literal>.</para>
 
-   <para>Two specials are allowed, <literal>#include</literal> and <literal>#clear</literal> 
+   <para>Names for the configuration items are optional if a list is defined as it can be see in
+   the <literal>DPkg::Pre-Install-Pkgs</literal> example above. If you don't specify a name a
+   new entry will simply add a new option to the list. If you specify a name you can override
+   the option as every other option by reassigning a new value to the option.</para>
+
+   <para>Two specials are allowed, <literal>#include</literal> and <literal>#clear</literal>:
    <literal>#include</literal> will include the given file, unless the filename
    ends in a slash, then the whole directory is included.  
    <literal>#clear</literal> is used to erase a part of the configuration tree. The
-   specified element and all its descendants are erased.</para>
+   specified element and all its descendants are erased.
+   (Note that these lines also need to end with a semicolon.)</para>
+
+   <para>The #clear command is the only way to delete a list or a complete scope.
+   Reopening a scope or the ::-style described below will <emphasis>not</emphasis>
+   override previewsly written entries. Only options can be overridden by adressing a new
+   value to it - lists and scopes can't be overridden, only cleared.</para>
 
    <para>All of the APT tools take a -o option which allows an arbitrary configuration 
    directive to be specified on the command line. The syntax is a full option
    name (<literal>APT::Get::Assume-Yes</literal> for instance) followed by an equals
    sign then the new value of the option. Lists can be appended too by adding 
-   a trailing :: to the list name.</para>
+   a trailing :: to the list name. (As you might suspect: The scope syntax can't be used
+   on the commandline.)</para>
+
+   <para>Note that you can use :: only for appending one item per line to a list and
+   that you should not use it in combination with the scope syntax.
+   (The scope syntax implicit insert ::) Using both syntaxes together will trigger a bug
+   which some users unfortunately relay on: An option with the unusual name "<literal>::</literal>"
+   which acts like every other option with a name. These introduces many problems
+   including that a user who writes multiple lines in this <emphasis>wrong</emphasis> syntax in
+   the hope to append to a list will gain the opposite as only the last assignment for this option
+   "<literal>::</literal>" will be used. Upcoming APT versions will raise errors and
+   will stop working if they encounter this misuse, so please correct such statements now
+   as long as APT doesn't complain explicit about them.</para>
  </refsect1>
 
  <refsect1><title>The APT Group</title>
@@ -227,7 +250,12 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      indicating how many outstanding requests APT should send. A value of
      zero MUST be specified if the remote host does not properly linger
      on TCP connections - otherwise data corruption will occur. Hosts which
-     require this are in violation of RFC 2068.</para></listitem>
+     require this are in violation of RFC 2068.</para>
+
+     <para>The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</literal>
+     which accepts integer values in kilobyte. The default value is 0 which deactivates
+     the limit and tries uses as much as possible of the bandwith (Note that this option implicit
+     deactivates the download from multiple servers at the same time.)</para></listitem>
      </varlistentry>
 
      <varlistentry><term>https</term>

+ 11 - 0
doc/pl/makefile

@@ -0,0 +1,11 @@
+# -*- make -*-
+BASE=../..
+SUBDIR=doc/pl
+
+# Bring in the default rules
+include ../../buildlib/defaults.mak
+
+# Debian Doc SGML Documents
+SOURCE = offline.pl.sgml
+DEBIANDOC_HTML_OPTIONS=-l pl
+include $(DEBIANDOC_H)

+ 252 - 0
doc/pl/offline.pl.sgml

@@ -0,0 +1,252 @@
+<!doctype debiandoc  PUBLIC  "-//DebianDoc//DTD DebianDoc//EN">
+<!-- -*- mode: sgml; mode: fold -*- -->
+<book>
+<title>Używanie APT w trybie offline</title>
+
+<author>Jason Gunthorpe <email>jgg@debian.org</email></author>
+<author>Polskie tłumaczenie Krzysztof Fiertek <email>akfedux@megapolis.pl</email></author>
+<version>$Id: offline.sgml,v 1.8 2003/02/12 15:06:41 doogie Exp $</version>
+
+<abstract>
+Dokument ten opisuje używanie programu APT w środowiskach pozbawionych dostępu,
+do sieci, a w szczególności metodę pozwalającą na robienie aktualizacji systemu.
+</abstract>
+
+<copyright>
+Copyright &copy; Jason Gunthorpe, 1999.
+<p>
+Copyright &copy; polskiego tłumaczenia Krzysztof Fiertek, 2004.
+<p>
+"APT" i ten dokument są oprogramowaniem wolnodostępnym; możesz
+rozpowszechniać je i/lub zmieniać w zgodzie z postanowieniami
+"Ogólnej Licencji Publicznej GNU" (GNU General Public License)
+takiej, jak została opublikowana przez "Fundacje Wolnego
+Oprogramowania (Free Software Foundation); albo w wersji 2 tejże
+licencji, albo (twój wybór) w dowolnej późniejszej.
+
+<p>
+Więcej szczegółów można uzyskać, przeglądając plik zawierający pełny tekst
+licencji (w systemach Debian jest to plik /usr/share/common-licenses/GPL).
+</copyright>
+
+<toc sect>
+
+<chapt>Wstęp
+<!-- Overview                                                         {{{ -->
+<!-- ===================================================================== -->
+<sect>Wprowadzenie
+
+<p>
+Normalnie APT wymaga bezpośredniego dostępu do archiwów Debiana przez
+sieć lokalną albo przez sieć internetową. Kolejną niedogodnością może być
+fakt, że nasz komputer, który pracuje na powolnym łączu takim jak modem,
+jest znacznie oddalony od innego komputera z szybkim łączem.
+
+<p>
+Rozwiązaniem tego problemu jest użycie pojemnych przenośnych nośników
+takich jak dyskietka Zip lub dysk SuperDisk. Nośniki te nie są
+wystarczająco pojemne, by zgromadzić kompletne archiwum Debiana, ale można
+śmiało dopasować podzbiór dużego archiwum wystarczający dla większości
+użytkowników. Pomysł polega na tym, by użyć programu APT do wygenerowania
+listy pakietów, które są wymagane, a następnie pobraniu ich na dysk, używając
+innego komputera z właściwą zwartością. Jest nawet możliwe, by użyć innego
+komputera z Debianem z zainstalowanym programem APT lub zupełnie innym
+systemem operacyjnym i programem narzędziowym do pobierania plików takim
+jak wget.
+
+<p>
+Osiągane jest to przez twórcze manipulowanie plikiem konfiguracyjnym
+programu APT. Rzeczą niezbędną jest poinformowanie programu APT, aby wskazywał
+na dysk z plikami archiwum. Należy zauważyć, że dysk powinien być
+sformatowany do obsługi systemu plików pozwalającego posługiwać się długimi 
+nazwami plików (np. ext2, fat32 albo vfat).
+
+
+</sect>
+                                                                  <!-- }}} -->
+
+<chapt>Używanie programu APT na obu komputerach
+<!-- Overview                                                         {{{ -->
+<!-- ===================================================================== -->
+<sect>Wprowadzenie
+
+<p>
+APT będący do dyspozycji na obu komputerach daje najprostszą kombinację.
+Zasadniczym pomysłem tej metody jest umieszczenie kopii pliku status na dysku
+i użycie odległego komputera, aby uzyskać najnowsze pliki pakietów
+i zdecydować, które pakiety trzeba pobrać. Struktura katalogów na dysku
+powinna wyglądać następująco:
+
+<example>
+  /disc/
+    archives/
+       partial/
+    lists/
+       partial/
+    status
+    sources.list
+    apt.conf
+</example>
+
+</sect>
+                                                                  <!-- }}} -->
+<!-- The configuration file                                            {{{ -->
+<!-- ===================================================================== -->
+<sect>Plik konfiguracyjny
+
+<p>
+Plik konfiguracyjny powinien informować program APT, aby przechowywał swoje
+pliki na dysku, a także używał plików konfiguracyjnych z dysku. Plik
+sources.list powinien zawierać prawidłowe odnośniki, których należy 
+użyć na zdalnym komputerze, a plik status powinien być kopią 
+<em>/var/lib/dpkg/status</em>. Zauważ, że jeśli używasz lokalnego archiwum 
+musisz użyć tych samych odnośników o identycznej składni.
+
+<p>
+<em>apt.conf</em> musi zawierać niezbędne wpisy, by APT korzystał z dysku:
+
+<example>
+ APT
+ {
+   /* Ten wpis nie jest wymagany, jeśli oba komputery mają tę samą
+      architekturę; mówi on programowi APT na komputerze pobierającym 
+      pakiety, jaka jest architektura naszego komputera */
+   Architecture "i386";
+   
+   Get::Download-Only "true";
+ };
+ 
+ Dir
+ {
+   /* Użyj katalogu disc na informacje stanu i przekieruj plik status
+      z domyślnego /var/lib/dpkg */
+   State "/disc/";
+   State::status "status";
+
+   // Katalog lokalnie przechowywanych pakietów binarnych
+   Cache::archives "/disc/archives/";
+
+   Cache "/tmp/";
+
+   // Lokalizacja pliku sources.list.
+   Etc "/disc";
+ }; 
+</example>
+
+Więcej szczegółów można zobaczyć w stronie podręcznika apt.conf i w przykładowym 
+pliku konfiguracyjnym <em>/usr/share/doc/apt/examples/apt.conf</em>.
+
+<p>
+Pierwszą rzeczą, jaką należy zrobić na oddalonym komputerze z Debianem to
+zamontować dysk i przekopiować na niego plik <em>/var/lib/dpkg/status</em>.
+Trzeba także utworzyć stukturę katalogów przedstawioną we "Wprowadzeniu":
+<em>archives/partial/</em> i <em>lists/partial/</em>. Następnie niesiemy
+dysk do oddalonego komputera z szybkim łączem i konfigurujemy plik
+sources.list. Na oddalonym komputerze wykonujemy kolejno:
+
+<example>
+ # export APT_CONFIG="/disc/apt.conf"
+ # apt-get update
+ [ APT aktualizuje ustawienia ]
+ # apt-get dist-upgrade
+ [ APT pobiera wszystkie pakiety potrzebne do aktualizacji Twojego systemu ]
+
+</example>
+
+Polecenie dist-upgrade można zastąpić każdym innym podstawowym poleceniem
+APT, w szczególności dselect-upgrade. Można nawet użyć APT jako metody
+dostępu dla <em>dselect</em>. Jednak stworzy to problem w przeniesieniu
+Twoich operacji wyborów z powrotem na lokalny komputer.
+
+<p>
+W tej chwili katalog disc zawiera wszystkie pliki indeksowe oraz archiwa
+niezbędne do aktualizacji maszyny z Debianem. Bierzemy dysk z powrotem do
+siebie i wpisujemy:
+
+<example>
+  # export APT_CONFIG="/disc/apt.conf"
+  # apt-get check
+  [ APT tworzy lokalną kopię plików cache ]
+  # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade
+  [ Może też być inne polecenie programu APT ]
+</example>
+
+<p> 
+Do prawidłowego działania koniecznie należy podać plik status z lokalnej
+maszyny. To jest bardzo ważne!
+
+<p>
+Jeśli używasz dselect, możesz wykonać bardzo ryzykowną operację skopiowania
+disc/status do /var/lib/dpkg/status, tak że  wszystkie zmiany, których
+dokonałeś na odległym komputerze, będą przeniesione. Mocno zalecam, aby
+dokonywać doboru pakietów tylko na lokalnym komputerze, ale nie zawsze
+jest to możliwe. NIE podmieniaj pliku status, jeśli dpkg lub APT były
+uruchamiane w międzyczasie!!
+
+</sect>
+                                                                  <!-- }}} -->
+
+<chapt>Używanie programów APT i wget
+<!-- Overview                                                         {{{ -->
+<!-- ===================================================================== -->
+<sect>Wprowadzenie
+
+<p>
+<em>wget</em> jest popularnym i przenośnym programem narzędziowym
+pobierania plików, który działa prawie na każdym komputerze.
+W przeciwieństwie do metody opisanej powyżej ta wymaga, aby na lokalnym komputerze
+była aktualna lista dostępnych pakietów.
+
+<p>
+Należy stworzyć katalog disc tylko na pakiety do pobrania z innego
+komputera. Użyta zostanie do tego opcja --print-uris programu apt-get,
+a następnie przygotujemy skrypt dla programu wget, który pobierze właściwe
+pakiety.
+
+</sect>
+                                                                  <!-- }}} -->
+<!-- Operation                                                         {{{ -->
+<!-- ===================================================================== -->
+<sect>Kolejne kroki
+
+<p>
+W odróżnieniu od poprzedniej metody działania ta nie wymaga specjalnych
+plików konfiguracyjnych. Używamy jedynie podstawowych poleceń APT, by
+wygenerować listę plików.
+
+<example>
+ # apt-get dist-upgrade 
+ [ Wybierz "no" po znaku zachęty, upewnij się, czy to właściwy wybór ]
+ # apt-get -qq --print-uris dist-upgrade > uris
+ # awk '{print "wget -O " $2 " " $1}' < uris > /disc/wget-script
+</example>
+
+Także inne opcje niż dist-upgrade mogą tu być użyte, włączając
+dselect-upgrade.
+
+<p>
+Plik skryptu /disc/wget-script będzie teraz zawierać listę wywołań programu 
+wget, niezbędnych do pobrania potrzebnych archiwów.
+Skrypt ten należy uruchomić w bieżącym katalogu o punkcie montowania disc,
+tak aby tu zapisywał dane na dysku.
+
+<p>
+Na oddalonym komputerze należy wykonać coś takiego
+
+<example>
+  # cd /disc
+  # sh -x ./wget-script
+  [ czekaj.. ]
+</example>
+
+Gdy archiwa zostaną pobrane i dysk wróci do komputera z Debianem,
+instalowanie można prowadzić dalej poleceniem:
+
+<example>
+  # apt-get -o dir::cache::archives="/disc/" dist-upgrade
+</example>
+
+które użyje pobranych uprzednio archiwów z dysku.
+</sect>
+                                                                  <!-- }}} -->
+</book>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 285 - 229
doc/po/apt-doc.pot


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 303 - 232
doc/po/fr.po


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 304 - 233
doc/po/ja.po