ubuntuusers.de

Manuell installierte Pakete auflisten

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

lasse_r

Anmeldungsdatum:
11. Dezember 2005

Beiträge: 51

Gibts es eine möglichkeit, sich die manuell istallierten Pakete anzeigen zu lassen, also nicht die Pakete, die automatisch als Abhängigkeiten mitinstalliert werden?

thx

DrScott Team-Icon

Ehemalige
Avatar von DrScott

Anmeldungsdatum:
7. Juli 2005

Beiträge: 6018

Wohnort: Nürnberg

Möglicherweise ist in Synaptic die Status-Ansicht 'Installiert (veraltet oder lokal)' das was Du suchst...

lasse_r

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2005

Beiträge: 51

Ne, es geht darum, die Pakete zu identifizieren, die ich irgendwann mal installiert habe. Pakete die dann als Abhängigkeiten ebenfalls installiert wurden interessieren mich nicht.

Ich möchte einen 2. Rechner mit der den gleichen Paketen bestücken wie den den ersten. Aber vielleicht gibts dafür ja noch einen anderen Weg.

Chrissss Team-Icon

Anmeldungsdatum:
31. August 2005

Beiträge: 37971

Ja, das geht einfacher, schau mal ins Wiki unter "Paketliste, die zur Wiederherstellung verwendet werden kann" in Paketverwaltung_Konsole

Tschuess
Christoph

Kingpin_1

Anmeldungsdatum:
12. Februar 2008

Beiträge: Zähle...

hmm ich möchte auch gerne so einen befehl finden womit ich mir sämtliche installierten pakete auflisten kann weis keiner was dazu?

liebe grüße Jens Beckenbach

lunix

Anmeldungsdatum:
23. Oktober 2007

Beiträge: 549

Wohnort: Berlin

Kingpin_1 schrieb:

hmm ich möchte auch gerne so einen befehl finden womit ich mir sämtliche installierten pakete auflisten kann weis keiner was dazu?

Ja gibt es. Wurde in http://www.freiesmagazin.de vom Juni 08 vorgestellt:

Paketliste erstellen:

 dpkg --get-selections "*" > paketliste

@lasse_r: Früheren Zustand wiederherstellen oder zweiten Rechner identisch bestücken:

dpkg --set-selections < paketliste

installiert die Programme der Paketliste. Hab ich aber noch nicht ausprobiert.

Das_Auge

Avatar von Das_Auge

Anmeldungsdatum:
17. April 2007

Beiträge: 957

Chrissss schrieb:

Ja, das geht einfacher, schau mal ins Wiki unter "Paketliste, die zur Wiederherstellung verwendet werden kann" in Paketverwaltung_Konsole

der Link hat sich inzwischen geändert: apt-get (Abschnitt „Paketlisten“) Allerdings hilft er mir nicht weiter, da die hier vorgeschlagene Lösung:

dpkg --get-selections | awk '!/deinstall|purge|hold/ {print $1}' > packages.list 

alle installierten Programme ausgibt (in meinem Fall 1608, diese Zahl gibt auch Synaptics an) und nicht nur die manuell installierten. Ich brauche aber genau die, weil ich nicht mein System klonen will, sondern die Programme, die ich unter Hardy Ubuntu dazu installiert habe, auch unter Jaunty Kubuntu installieren möchte.

Gibt es für solche Fälle eine Lösung?

ender

Avatar von ender

Anmeldungsdatum:
21. Oktober 2006

Beiträge: 134

Ich suche auch schon lange nach einer Möglichkeit genau so eine Liste zu bekommen. Leider scheint es nicht möglich zu sein, da sich das Debian Paketmanagement System nicht merkt, welche Pakete der User explizit installieren wollte, und welche nur installiert wurden, um Abhängigkeiten zu erfüllen. Oder liege ich da falsch?

Das was man machen kann ist, dass man heraussucht, welche Pakete von keinen anderen installierten Paketen benötigt werden. Diese Pakete müssen ja von Hand installiert worden sein (oder bei der Installation von Ubuntu). Ich habe mal ein Shell-Script geschrieben, welches das macht. Es ist ein bisschen unelegant und ist daher nicht besonders schnell (quadratischer Aufwand), wenn ich etwas Zeit finde, dann schreibe ich ein Python Script, was vielleicht etwas schneller ist und mehr Flexibilität bietet.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash

## Alle Pakete seit dem Erstellungsdatum vom Verzeichnis /srv berücksichtigen:
PACKAGELIST=`find /var/lib/dpkg/info/ \( -newer /srv -name \*.list \) | sed 's#.list$##;s#.*/##'`

for PACKAGE in $PACKAGELIST
do
	if ! dpkg-query -W -f='${Depends}\n' |grep -qE ".*$PACKAGE( \(.*|,|$)"; then
		echo "$PACKAGE"
	fi
done

Dieses Script berücksichtigt nur Pakete, die installiert wurden, nachdem das Verzeichnis /srv angelegt wurde (bei mir wurde dieses Verzeichnis am Ende der Ubuntu Installation angelegt und danach nicht mehr verändert, ich schließe dadurch also Pakete aus, die während der Installation von Ubuntu installiert wurden.

Möchte man alle Pakete durchsuchen, kann man Zeile 4 durch folgende ersetzen:

1
PACKAGELIST=`dpkg-query -W -f='${Package}\n'`

Pakete der letzten drei Tage durchsuchen:

1
PACKAGELIST=`find /var/lib/dpkg/info/ -daystart \( -name \*.list -a -mtime -3 \) | sed 's#.list$##;s#.*/##'`

❗ Es kann sein, dass man mit diesem Script Pakete übersieht: Wenn man z.B. Paket A von Hand installiert hat und später Paket B installiert, welches A benötigt, dann findet man später nur noch B als Paket, welches von keinen anderen benötigt wird. Das ist nicht besonders schlimm, da bei der Installation von Paket B ja auch A installiert wird. Wenn man sich beim Anschauen seiner Liste aber überlegt, dass man B auf dem neuen System gar nicht installieren will, dann vergisst man unter Umständen Paket A, weil es nicht in der Liste steht.

ch1ffr3

Anmeldungsdatum:
24. April 2009

Beiträge: 49

Das Auge schrieb:

Allerdings hilft er mir nicht weiter, da die hier vorgeschlagene Lösung:

dpkg --get-selections | awk '!/deinstall|purge|hold/ {print $1}' > packages.list 

alle installierten Programme ausgibt (in meinem Fall 1608, diese Zahl gibt auch Synaptics an) und nicht nur die manuell installierten.

Bitte verbessere mich wenn ich mich täusche, aber sollte das denn ein Problem sein? Denn apt-get solle IMO doch die bereits installierten bzw. neueren Pakete überspringen... ...somit könntest du die Liste nehmen und das abhänigkeiten prüfen etc. dürfte halt kurz dauern mehr aber nicht oder?

ender

Avatar von ender

Anmeldungsdatum:
21. Oktober 2006

Beiträge: 134

Achso, wenn man das in meinem letzten Post gezeigte Script in einer Datei toppackagelist.sh speichert und dann

chmod +x toppackagelist.sh

eingibt, dann kann man mit

./toppackagelist.sh | sort > toppackages.list

eine sortierte Paketliste in der Datei toppackages.list erstellen

Das_Auge

Avatar von Das_Auge

Anmeldungsdatum:
17. April 2007

Beiträge: 957

ch1ffr3 schrieb:

Das Auge schrieb:

Allerdings hilft er mir nicht weiter, da die hier vorgeschlagene Lösung:

dpkg --get-selections | awk '!/deinstall|purge|hold/ {print $1}' > packages.list 

alle installierten Programme ausgibt (in meinem Fall 1608, diese Zahl gibt auch Synaptics an) und nicht nur die manuell installierten.

Bitte verbessere mich wenn ich mich täusche, aber sollte das denn ein Problem sein? Denn apt-get solle IMO doch die bereits installierten bzw. neueren Pakete überspringen... ...somit könntest du die Liste nehmen und das abhänigkeiten prüfen etc. dürfte halt kurz dauern mehr aber nicht oder?

Das Problem dabei ist, dass ich damit nicht die Meine Programme aus einer Distribution auf eine andere installieren kann. Zum einen, wenn ich z.B. die Programme, die ich unter Hardy hatte, in Jaunty installieren will, zum andren - und das wiegt noch schwerer - habe ich auf den Systemen nicht die gleiche Desktop-Umgebung (Gnome → KDE4 bzw KDE3 → KDE4)

ender, du bist ein Fuchs! Danke vielmals für dieses Script, das ist genau das, was ich brauche. Es hat bei mir keine halbe Minute gebraucht. Die Liste scheint zwar noch einige Enträge zu beinhalten die ich nicht selbst installiert habe, aber sicher bin ich mir nicht. Vielleicht wurden auch empfohlene Pakete mit installiert.

ender

Avatar von ender

Anmeldungsdatum:
21. Oktober 2006

Beiträge: 134

hmm ja, um den regulären Ausdruck in Zeile 8 müsste man sich nochmal ein bisschen Gedanken machen. dadurch könnten evtl noch ein paar Pakete zu viel in der Liste landen. Also ich meine das hier:

".*$PACKAGE( \(.*|,|$)"

Das matcht auf die Paketabhängigkeitslisten, die dpkg-query ausgibt.

mRiesbeck

Anmeldungsdatum:
28. Juli 2008

Beiträge: 307

@ender: Jo, danke für dein Skript. Funzt. Werden zwar noch weit mehr Pakete aufgelistet als ich selbst (ohne Abhängigkeiten) installiert habe, aber mit 2 1/2 Bildschirmseiten klein genug um die Pakete wiederzufinden ☺

stancil

Anmeldungsdatum:
28. April 2009

Beiträge: 77

orphaner -a zeigt in einer netten ncurses Optik alle installierten Pakete an.

dpkg -S which orphaner deborphan: /usr/sbin/orphaner

Oder klassisch auf dem Terminal

deborphan -a | awk '{print $2}' | sort

EDIT: Die oben genannten Befehle zeigen nur die Pakete an, die von keinem anderen Paket benötigt werden. Sollte man also bspw. gimp installiert haben taucht gimp solange in dieser Liste auf, bis ein gimp plugin installiert wird, welches als Abhängigkeit natürlich gimp besitzt. Ab diesem Zeitpunkt wird nur noch der Name des plugins angezeigt.

lunix

Anmeldungsdatum:
23. Oktober 2007

Beiträge: 549

Wohnort: Berlin

In Synaptic kann man eine Chronik aufrufen, die sämtliche Installationsaktivitäten aufzeichnet. Wenn man die Datei findet, in der das aufgezeichnet wird, müsste es doch möglich sein, durch eine Auswertung per Skript zu der von lasse_r gesuchten Liste zu kommen.

Antworten |