{{Navigation|Grundsatzfragen}}
[[Kategorie:Software Verwalten]]
{{Getestet|Jessie}}
Es gibt immer wieder Situationen und Programme, die entgegen der üblichen Taktik von Debian, eine aktuelle Version eines Programmes erfordern. Um das zu erreichen muss nicht immer die neuste Version des Upstream Projekts am Paketsystem vorbei installiert werden. Oft reicht es, sich statt dessen in den neueren Zweigen von Debian, also [[Testing]], [[Unstable]] und [[Experimental]], umzusehen.

__TOC__

{{Warnung|Bitte den Artikel vollständig lesen, da es sonst zu unerwünschten Systeminkonsistenzen kommen kann.}}

== Globales Pinning von Softwarequellen am Beispiel von clementine ==

Möchte man als [[stable]]-Nutzer ein Programm, in diesem Beispiel {{Deb|clementine}}, in der aktuelleren Version aus [[testing]] installieren, so muss man auf AptPinning zurückgreifen..

=== Zusätzliche Quellen aufnehmen ===

Als erstes muss natürlich [[testing]] in die Quellenliste aufgenommen werden. Dazu kann man den folgenden Eintrag entweder komplett in die Datei ''/etc/apt/[[sources.list]]'' aufnehmen, oder wie beschrieben in dem Ordner ''/etc/apt/sources.list.d'' jeweils eine Datei anlegen (empfohlen).

/etc/apt/sources.list.d/testing.list
<pre>
# Testing
deb ftp://ftp.de.debian.org/debian/ testing main
</pre>

=== Pinning setzen ===
{{Warnung|Bitte vorher {{man|apt_preferences}} oder via {{UserShell|man apt_preferences}} lesen.}}

Nun wird die Datei /etc/apt/preferences mit folgendem Inhalt angelegt bzw. bearbeitet.

 Package: *
 Pin: release n=wheezy
 Pin-Priority: 900
 
 Package: *
 Pin: release a=testing
 Pin-Priority: 800
 
Abschließend ist ein Update der Paketlisten erforderlich.
{{RootShell|aptitude update}}

=== Überprüfen ===

Mit dem Befehl apt-cache kann man nun überprüfen, welche Versionen verfügbar sind.

{{UserShell
|apt-cache policy clementine
clementine:
  Installiert:           1.0.1+dfsg-2+b1
  Installationskandidat: 1.0.1+dfsg-2+b1
  Versionstabelle:
     1.1.1+dfsg-2+b1 0
        800 http://ftp.debian.org/debian/ testing/main amd64 Packages
 *** 1.0.1+dfsg-2+b1 0
        900 http://ftp.debian.org/debian/ wheezy/main amd64 Packages
        100 /var/lib/dpkg/status
}}

=== Installieren ===

Die Installation erfolgt dann mittels des Befehls:
{{RootShell|aptitude install -t testing clementine}}

== Explizites Pinning von Softwarequellen am Beispiel von iceweasel ==

Debian liefert in [[stable]] die ESR-Version von [[Iceweasel]] aus. Möchte man die aktuelle Version von [[Iceweasel]] nutzen, muss man die Fremdquelle ''http://mozilla.debian.net/'' einbinden.

=== Zusätzliche Quellen aufnehmen ===

Als erstes müssen natürlich die Quelle in die Quellenliste aufgenommen werden. Dazu kann man die folgenden Einträge entweder komplett in die Datei ''/etc/apt/[[sources.list]]'' aufnehmen, oder wie beschrieben in dem Ordner ''/etc/apt/sources.list.d'' jeweils eine Datei anlegen (empfohlen).

/etc/apt/sources.list.d/backports.list
<pre>
# Backports
deb http://mozilla.debian.net/ wheezy-backports iceweasel-release
</pre>

=== Pinning setzen ===
{{Warnung|Bitte vorher {{man|apt_preferences}} oder via {{UserShell|man apt_preferences}} lesen.}}

Nun wird die Datei /etc/apt/preferences mit folgendem Inhalt angelegt bzw. bearbeitet.
<pre>
 Package: iceweasel
 Pin: release n=wheezy-backports
 Pin-Priority: 900
 
</pre>
 
Abschließend ist ein Update der Paketlisten erforderlich.
{{RootShell|aptitude update}}

=== Überprüfen ===

Mit dem Befehl apt-cache kann man nun überprüfen, welche Versionen verfügbar sind.

{{UserShell
|apt-cache policy iceweasel
iceweasel:
  Installiert:           17.0.9esr-1~deb7u1
  Installationskandidat: 24.0-1~bpo70+1
  Versionstabelle:
     24.0-1~bpo70+1 0
        500 http://mozilla.debian.net/ wheezy-backports/iceweasel-release amd64 Packages
 *** 17.0.9esr-1~deb7u1 0
        500 http://ftp.debian.org/debian/ wheezy/main amd64 Packages
        100 /var/lib/dpkg/status
}}

=== Installieren ===

Die Installation erfolgt dann mittels des Befehls:
{{RootShell|aptitude install iceweasel}}

Durch die Erhöhung der Priorität von mozilla.debian.net für das Paket [[Iceweasel]], wird nun automatisch die [[Iceweasel]]-Version aus mozilla.debian.net installiert.

== Prioritäten ==

Das Verhalten von apt lässt sich beim AptPinning durch Prioritäten steuern. Hier ein Überblick über die Bedeutung der verschiedenen Werte:
           
{| class="wikitable"
|-
! Priorität !! Beschreibung
|-
| >= 1000 || veranlasst, dass eine Version installiert wird, auch wenn dies ein Downgrade des Pakets durchführt
|-
| 990 <= P < 1000 || veranlasst, dass eine Version installiert wird, auch wenn diese nicht vom Ziel-Release kommt, außer wenn die installierte Version aktueller ist
|-
| 500 <= P < 990 ||  veranlasst, dass eine Version installiert wird, außer wenn eine Version verfügbar ist, die zum Ziel-Release gehört oder die installierte Version neuer ist
|-
| 100 <= P < 500 || veranlasst, dass eine Version installiert wird, außer wenn eine Version verfügbar ist, die zu einer anderen Distribution gehört oder die installierte Version neuer ist
|-
|  0 < P < 100 || veranlasst, dass eine Version nur dann installiert wird, wenn es keine installierte Version des Pakets gibt
|-
|  P < 0 || verhindert das ein Paket installiert wird
|}

== Pins ==
{| class="wikitable"
|-
! Pin !! Beschreibung
|-
| - a || Wählt das Archiv, z.B. stable, testing, unstable
|-
| - n || Wählt den Codenamen, z.B. wheezy, jessie
|-
| - v || Wählt die Version, z.B. 7.0
|-
| - c || Wählt die Lizensierungskomponente, z.B. main, contrib, non-free
|-
| - o || Wählt den Ursprung eines Pakets, z.B. debian.org, deb-multimedia.org
|-
| - l || Wählt das Label, z.B. debian, wheezy-backports
|}

== Globbing und reguläre Ausdrücke == 

Apt-Pinning unterstützt auch Globbing bzw. [http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck reguläre Ausdrücke], d.h. man muss nicht jedes Paket einzeln angeben, sondern kann mehreren Paketen mit einem Ausdruck die entsprechende Priorität zuweisen.

Fasst man den Begriff in zwei {{Taste|/}}, so wird die Priorität allen Paketen, die diese Zeichenkette enthalten zugewiesen. Hängt man ein {{Taste|*}} an einen Begriff, werden alle Pakete, die mit diesem Begriff beginnen erfasst.
<pre>
Package: gnome* /kde/
Pin: release n=experimental
Pin-Priority: 500
</pre>
Obiges Beispiel würde also allen Paketen aus [[experimental]], die ''kde'' im Namen enthalten oder mit ''gnome'' beginnen die Priorität 500 zuweisen.

== Überblick über installierte Versionen ==
Um den Überblick zu behalten, welches Paket man in welcher Version aus welchem Release installiert hat, kann man das Programm {{Deb|apt-show-versions}} installieren.

Ein einfacher Aufruf ohne Parameter listet alle installierten Pakete auf (Ausgabe gekürzt):
{{UserShell|apt-show-versions
accountsservice:amd64/testing 0.6.34-2 uptodate
acl:amd64/testing 2.2.52-1 uptodate
acpi:amd64/testing 1.6-1 uptodate
acpi-fakekey:amd64/testing 0.141-2 uptodate
acpi-support:all/testing 0.141-2 uptodate
acpi-support-base:all/testing 0.141-2 uptodate
acpid:amd64/testing 1:2.0.20-1 uptodate
adduser:all/testing 3.113+nmu3 uptodate
aisleriot:amd64/testing 1:3.8.0-2 uptodate
alacarte:all/testing 3.10.0-1 uptodate
anacron:amd64/testing 2.3-19 uptodate
apache2-bin:amd64/testing 2.4.6-3 uptodate
apg:amd64/testing 2.2.3.dfsg.1-2 uptodate
apt:amd64/testing 0.9.11.4 uptodate
apt-show-versions:all/testing 0.22.3 uptodate
}}

Um die installierte Version eines konkreten Paketes einzusehen, muss der Paketname als Parameter übergeben werden:
{{UserShell|apt-show-versions clementine
clementine:amd64/testing 1.1.1+dfsg-2+b1 uptodate
}}
==Quellenverzeichnis==
===Manpages===
{{man|apt_preferences}}