dpkg --set-selections und Abhängigkeiten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
linuxlooser
Beiträge: 141
Registriert: 27.12.2012 17:17:37
Wohnort: Karlsruhe

dpkg --set-selections und Abhängigkeiten

Beitrag von linuxlooser » 26.05.2014 21:41:59

Hallo zusammen,

konnte keine wirkliche Aussagen dazu finden in den Dokus:
Wenn ich mit

Code: Alles auswählen

dpkg --get-selections > /home/userverzeichnis/installed-software.log
eine Liste der installierten Software erstelle, dann kann ich danach diese Liste als Gedankenstütze verwenden händisch eine Auswahl davon via Synaptic installieren - Abhängigkeiten werden dann korrekt mitinstalliert.

Was passiert, wenn ich diese Liste im Editor "zurechtstutze" auf die mir wichtigen Anwendungen und die so entstandene Teilmenge der Anwendungen mit

Code: Alles auswählen

dpkg --set-selections < /home/userverzeichnis/installed-software.log
apt-get dselect-upgrade
wieder importiere - z. B. auf einem anderen Rechner oder nach Neuinstallation => werden dann die ggf. fehlenden Abhängigkeiten auch mitinstalliert oder nur die Pakete nach dieser Liste?

Dann müßte ich wohl eine Liste der Art

Code: Alles auswählen

apt-get install -y paket1
apt-get install -y paket2
apt-get install -y paket3
apt-get install -y paket4
......
in ein Shell-Script packen und starten ...
Grüße
LL

Benutzeravatar
joahlen
Beiträge: 1725
Registriert: 22.10.2010 03:02:41

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von joahlen » 26.05.2014 23:40:05

linuxlooser hat geschrieben:

Code: Alles auswählen

apt-get install -y paket1
apt-get install -y paket2
apt-get install -y paket3
apt-get install -y paket4
......
in ein Shell-Script packen und starten ...

Ja, das geht sehr gut so.
Das mache ich immer so wenn ich einen neuen Rechner aufsetze.
Wenn nun Paket 1 von Paket 4 abhängt, dann installiert die erste Zeile Paket 4 mit. Bei Paket 4 gibt es dann die Meldung, dass das betreffende Paket bereits installiert ist. Also durchaus möglich so.

Einfacher ist es natürlich es so zu machen.

Code: Alles auswählen

apt-get install -y paket1 paket2 paket3 paket4
......
Weil dann aber - wenn nur ein Paket falsch geschrieben wurde, das ganze nicht funktioniert (Fehlermeldung "Paket dummeszeugs nicht installierbar oder so") teile ich immer die ganze Liste zusammen in "sinnvolle" Kapitel auf. Erst mc, dann die Libs, dann X-Zeug, dann fonts, dann XFCE und dann diverser anderer Kram und schließlich alles noch einmal in Einzelzeilen so wie Du es gemacht hast falls eine Gruppe nicht funktioniert.

Wiederholte Pakete werden einfach ignoriert. Meldung: Paket foo schon installiert.

JO
Es ist alles schon gesagt, nur nicht von allen.... Karl Valentin

Debian Jessie, XFCE auf älteren Think_pads (ab T21 bis T60/X60) und IBM/M55 SFF (C2D, 8 GB)
Any customer can have a car painted any colour that he wants so long as it is black. Henry Ford
Gilt auch für Laptops

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von smutbert » 27.05.2014 09:10:43

Die Ausgabe von dpkg --get-selections enthält bei mir immer nur die installierten Pakete in der Form

Code: Alles auswählen

acl                                             install
acpi                                            install
adduser                                         install
[…]
(meinem Verständnis der manpage nach sollte eigentlich der Status eines jeden Pakets ausgegeben werden, weil in der vorliegenden Form ja die komplette 2. Spalte überflüssig ist - sie enthält sowieso immer nur install)

Wenn man die zweite Spalte entfernt könnte man so eine Textdatei direkt an apt-get install übergeben, das könnte so aussehen:

Code: Alles auswählen

$ dpkg --get-selections | awk '{ print $1 }' >/home/userverzeichnis/installed-software.log
# apt-get update && apt-get install $(cat /home/userverzeichnis/installed-software.log)
_____


Noch etwas sinnvoller erscheint mir aber die Variante nur die manuell installierten Pakete wieder zu installieren, die automatisch (Abhängigkeiten) installierten werden wegen der Abhängigkeiten sowieso wieder mitinstalliert. Dann geht das ganze auch noch etwas einfacher

Code: Alles auswählen

$ apt-mark showmanual >/home/userverzeichnis/manually-installed.txt
# apt-get update && apt-get install $(cat /home/userverzeichnis/manually-installed.txt)
Auf die Art sind bei einer neuen Debianversion auch weniger oder gar keine Anpassungen notwendig, libreoffice, gnumeric,… werden wohl auch weiterhin ihre Paketnamen behalten und um die Anhängigkeiten kümmert sich apt-get. Damit das zuverlässig funktiioniert muss man halt vielleicht vorher ein bißchen „aufräumen“, also zB sicherstellen, dass Bibliotheken oder …-common-Pakete und dergleichen nicht etwa als manuell installiert markiert sind.
Das kann man auf der Kommandozeile mit apt-mark oder auch recht bequem mit synaptic erledigen.

Benutzeravatar
towo
Beiträge: 4408
Registriert: 27.02.2007 19:49:44
Lizenz eigener Beiträge: GNU Free Documentation License

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von towo » 27.05.2014 09:49:23

Ich erstelle die Liste installierter Pakete lieber so:

Code: Alles auswählen

dpkg -l | awk '/^ii/{ print $2}' | grep -v -e ^lib -e -dev -e linux-image -e linux-headers > /path/to/paketliste.txt
Allerdings kann es auch hier vorkommen, daß man da Pakete drin hat, die es in keinem Repo gibt (soll ja vorkommen, daß man sowas macht ;)).
Deshalb sollte man die Liste vielleicht beim Erzeugen schon bereinigen:

Code: Alles auswählen

apt-show-versions $(dpkg -l | awk '/^ii/{ print $2}' | grep -v -e ^lib -e -dev -e linux-image -e linux-headers) | grep -v "No avail" | awk '{ print $1 }' | cut -d: -f1 > /path/to/paketliste.txt
Damit hat man zumindest nur Pakete in der Liste, die es in den aktuelle aktiven Repos gibt.
Einspielen geht dann eben einfach per

Code: Alles auswählen

apt-get update && apt-get install $(< /path/to/paketliste.txt)

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von uname » 27.05.2014 15:00:37

Ich habe das früher auch alles versucht. Irgendwann habe ich es aufgegeben. Meine Installationsbasis ist ein Netinstall-System ohne zusätzliche Anwendungen. Sämtliche für mich notwendigen Pakete (Debianopenbox mit meinen Anwendungen) habe ich in eine Paketliste mit aktuell ca. 60 Paketen zusammengefasst. Die Installation erfolgt dann ähnlich wie oben beschrieben aus Kombination von "apt-get" und "cat". Vorteil ist, dass ich die Liste bei Installationen für Bekannte einfach vorher bereinige. Das ist sehr einfach, da ich ja jedes Paket selbst hinzugefügt habe und somit auch kenne. Zusätzlich habe ich noch ganze Verzeichnisstrukturen mit Konfigurationsdateien (Openbox-Konfigurationen wie autostart,rc.xml,menu.xml, Debiantint2, Debianterminator, Debianscreen, Iceweasel, Schriften, ...). Ich sichere zwar auch ganze /home-Verzeichnisse ... nutze sie aber nicht bei Neuinstallationen und kaum für Wiederherstellungen. Wenn alles läuft kann ich sehr schnell mein Debian GNU/Linux installieren.

Radfahrer

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von Radfahrer » 27.05.2014 15:53:16

Was meinst du mit Netinstall-System?

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von cronoik » 27.05.2014 16:01:55

Das er Debiantasksel nicht benutzt.
Hilf mit unser Wiki zu verbessern!

Radfahrer

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von Radfahrer » 27.05.2014 16:26:58

Und was soll das bringen? Und wie soll das gehen?
Tasksel wird auch bei der Netinstall ausgeführt. Ohne könnte man ja nicht wählen, was installiert werden soll und was nicht.
Das hat aber nichts mit dem Installationsmedium zu tun. Das geht bei der Netinstall genau so wie bei der normalen CD oder der DVD.

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von cronoik » 27.05.2014 16:43:17

Ich denke ich habe mich schlecht ausgedrückt. uname wählt im tasksel-Auswahlbildschirm wahrscheinlich alles ab, es macht folglich auch keinen Sinn sich vorher ein DVD-iso zu ziehen.
Hilf mit unser Wiki zu verbessern!

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von uname » 27.05.2014 16:46:05

Genau. Ich wähle alles ab. Betrachte ich Debiantasksel so sehe ich bei Xfce z.B. Debiantask-xfce-desktop und dort vor allem die Abhängigkeiten laut "control", die mir nicht gefallen. Ok bei Gnome wäre es schlimmer ;-) So baue ich mein System lieber gleich selbst und ohne Debiantasksel zusammen. Daher meine Liste, die dann natürlich Teile der unten aufgeführten Liste enthält wie z.B. Debianiceweasel und das zugehörige Länderpaket Debianiceweasel-l10n-de. Mit der Installation von Debiantasksel kann man darauf natürlich verzichten. Schlimm ist im übrigen nicht das Paket Debianxfce4 (eigentlich gute Auswahl) sondern viele der aufgeführten Recommends. Wobei auch auf Debianxfce4 könnte man noch verzichten ;-)

Datei "control" in Debiantask-xfce-desktop:

Code: Alles auswählen

Package: task-xfce-desktop
Source: tasksel
Version: 3.14.1
Architecture: all
Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
Installed-Size: 21
Depends: tasksel, task-desktop, xfce4, lightdm
Recommends: xfce4-goodies, xfce4-power-manager, xfce4-mixer, xfprint4, xfce4-terminal, mousepad, orage, libreoffice-gtk, dbus-x11, xsane, vlc, quodlibet, epdfview, tango-icon-theme, network-manager-gnome, synaptic, iceweasel, libreoffice, libreoffice-gcj, libreoffice-help-en-us, mythes-en-us, hunspell-en-us, hyphen-en-us, system-config-printer, gstreamer0.10-alsa
Section: tasks
Priority: optional
Description: Xfce desktop environment
 This task package is used to install the Debian desktop, featuring
 the Xfce desktop environment, and with other packages that Debian users
 expect to have available on the desktop.
Nur am Rand. Wenn mal jemand Bluetooth loswerden will oder sich fragt wo das herkommt: Das fängt man sich mit Debiantask-laptop ein, wobei es dort auch interessante Abhängigkeiten gibt, die wenn nicht über andere Abhängigkeiten vorhanden evtl. nachinstalliert werden sollten (Energieversorgung, WLAN, ...).

Radfahrer

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von Radfahrer » 27.05.2014 17:25:04

Ah OK, ich war nur verwirrt durch das "Netinstall", denn das geht natürlich mit jedem Installationsmedium.

Benutzeravatar
linuxlooser
Beiträge: 141
Registriert: 27.12.2012 17:17:37
Wohnort: Karlsruhe

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von linuxlooser » 27.05.2014 22:18:47

danke, Leute!

hab jetzt mal ganz einfach mit dpkg --get-selections eine Liste erzeugt, die zweite Spalte entsorgt und dann daraus so ein script erzeugt:
#Banking, Buchführung
apt-get install -y aqbanking-tools gnucash gnucash-docs

#Foto und Farbe
apt-get install -y argyll dispcalgui gpick hugin luminance-hdr photoprint rapid-photo-downloader

#Multimedia
apt-get install -y audacity mp3splt mp3splt-gtk openshot openshot-doc easytag soundconverter photofilmstrip

#Grafik und Design
apt-get install -y blender inkscape scribus scribus-doc scribus-template
das läuft gerade - mal sehen.
Wenn das durch ist - dann werde ich mal den Terminalinhalt kopieren und abspeichern und mal anschauen, was da alles so passiert ist.

Und dann mache ich mich mal an Eure regex-Befehle ...
Grüße
LL

Benutzeravatar
joahlen
Beiträge: 1725
Registriert: 22.10.2010 03:02:41

Re: dpkg --set-selections und Abhängigkeiten

Beitrag von joahlen » 28.05.2014 00:01:24

Bei mir sähe es so aus:

Code: Alles auswählen

#erst mal runterladen:

#Banking, Buchführung
apt-get install -y -d aqbanking-tools gnucash gnucash-docs

#Foto und Farbe
apt-get install -y -d argyll dispcalgui gpick hugin luminance-hdr photoprint rapid-photo-downloader

#Multimedia
apt-get install -y -d audacity mp3splt mp3splt-gtk openshot openshot-doc easytag soundconverter photofilmstrip

#Grafik und Design
apt-get install -y -d  blender inkscape scribus scribus-doc scribus-template

Und nu installieren:

#Banking, Buchführung
apt-get install  aqbanking-tools gnucash gnucash-docs

#Foto und Farbe
apt-get install argyll dispcalgui gpick hugin luminance-hdr photoprint rapid-photo-downloader

#Multimedia
apt-get install audacity mp3splt mp3splt-gtk openshot openshot-doc easytag soundconverter photofilmstrip

#Grafik und Design
apt-get install blender inkscape scribus scribus-doc scribus-template
Im ersten Akt werden nur die Pakete geladen, man muss nur warten. Wenn das Internet langsam (bei mir IMMER :( ) ist es viel zu laden gibt wird Kaffee aufgesetzt.

Im zweiten Akt muss man die Installation bestätigen. Man sieht so genau was passiert. und kann gegeben falls eingreifen.

Die bereits behandelten Scripte gehen bei mir immer mit

Code: Alles auswählen

apt-get install -d -y --no-install-recommend foo
apt-get install -d -y --no-install-recommend zeugs
apt-get install -d -y --no-install-recommend nochwas
...
apt-get install --no-install-recommend foo zeugs nochwas
Runterfahren geht bei mir (u.a.) immer mit

Code: Alles auswählen

apt-get update
apt-get dist-upgrade -d -y
sync
init 0
Ist im Prinzip dieselbe Überlegung. Am morgen in synaptic nachschaun was passiert ist und dann upgraden manuell mit apt in der Konsole. Oder auch nicht. (testing)

JO
Es ist alles schon gesagt, nur nicht von allen.... Karl Valentin

Debian Jessie, XFCE auf älteren Think_pads (ab T21 bis T60/X60) und IBM/M55 SFF (C2D, 8 GB)
Any customer can have a car painted any colour that he wants so long as it is black. Henry Ford
Gilt auch für Laptops

Antworten