Abhängigkeitspfade zu systemd und mögliche Alternativen

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Abhängigkeitspfade zu systemd und mögliche Alternativen

Beitrag von fischig » 11.08.2021 21:43:33

Es sieht so aus, als hinge Debiangeeqie ab bullseye von systemd ab. Kann man das umgehen?

hikaru: Threadtitel korrigiert
Zuletzt geändert von fischig am 04.10.2021 21:02:46, insgesamt 3-mal geändert.

DeletedUserReAsG

Re: qeeqie und systemd

Beitrag von DeletedUserReAsG » 11.08.2021 22:15:37

Zumindest wird nix mit systemd in den direkten Abhängigkeiten angezeigt. Worauf beziehst du dich?

Benutzeravatar
hikaru
Moderator
Beiträge: 13588
Registriert: 09.04.2008 12:48:59

Re: qeeqie und systemd

Beitrag von hikaru » 11.08.2021 22:33:40

In Bullseye gibt es diesen Abhängigkeitspfad*: DebiangeeqieDebianlibgtk-3-0Debianlibatk-bridge2.0-0Debianlibdbus-1-3Debianlibsystemd0.
Den ersten Schritt dieser Kette gab es in Buster noch nicht. Da hing geeqie noch von Debianlibgtk2.0-0 ab.

Soweit ich mich aus eigenen geeqie-Backport-Versuchen vor geraumer Zeit erinnern kann, lässt sich die libgtk-Version in neueren geeqie-Versionen nicht einfach austauschen.

libsystemd0 ist zwar aus dem Code von Debiansystemd gebaut, hängt aber von keinen weiteren Systemd-Paketen ab. Nur diese Lib auf dem System zu haben bedeutet also nicht, dass Systemd läuft.
Die "reine Lehre" ist das natürlich trotzdem nicht. Ich könnte mir vorstellen, dass man dieser Liste irgendwo einen Dummy unterschieben könnte. Wo man das aber machen sollte um möglichst wenige Nebeneffekte zu kriegen, und wie diese Nebeneffekte aussähen, kann ich aber nicht abschätzen.


*) Falls jemand einen netten (einfachen, automatischen und robusten) Weg kennt, solch einen Abhängigkeitspfad zu erzeugen, fände ich das Klasse. Ich habe es zu Fuß mit Debianapt-rdepends und grep gemacht.

Benutzeravatar
Livingston
Beiträge: 1454
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: qeeqie und systemd

Beitrag von Livingston » 11.08.2021 23:19:56

hikaru hat geschrieben: ↑ zum Beitrag ↑
11.08.2021 22:33:40
libsystemd0 ist zwar aus dem Code von Debiansystemd gebaut, hängt aber von keinen weiteren Systemd-Paketen ab. Nur diese Lib auf dem System zu haben bedeutet also nicht, dass Systemd läuft.
Die "reine Lehre" ist das natürlich trotzdem nicht. Ich könnte mir vorstellen, dass man dieser Liste irgendwo einen Dummy unterschieben könnte. Wo man das aber machen sollte um möglichst wenige Nebeneffekte zu kriegen, und wie diese Nebeneffekte aussähen, kann ich aber nicht abschätzen.
Selbst die Macher von https://devuan.org werden libsystemd0 nicht immer vollständig los, und es kann in bestimmten Konstellationen als Abhängigkeit auftauchen. Aber wenn die damit leben können, dann wird's wohl nicht allzu dramatisch sein.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

Benutzeravatar
bensmac
Beiträge: 378
Registriert: 18.09.2004 23:00:21

Re: geeqie und systemd

Beitrag von bensmac » 11.08.2021 23:29:27

@hikaru: Debiandebtree

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: qeeqie und systemd

Beitrag von JTH » 11.08.2021 23:41:52

hikaru hat geschrieben: ↑ zum Beitrag ↑
11.08.2021 22:33:40
In Bullseye gibt es diesen Abhängigkeitspfad*: DebiangeeqieDebianlibgtk-3-0Debianlibatk-bridge2.0-0Debianlibdbus-1-3Debianlibsystemd0.
Meine Bastelei hat wohl zu lang gebraucht :)

hikaru hat geschrieben: ↑ zum Beitrag ↑
11.08.2021 22:33:40
*) Falls jemand einen netten (einfachen, automatischen und robusten) Weg kennt, solch einen Abhängigkeitspfad zu erzeugen, fände ich das Klasse. Ich habe es zu Fuß mit Debianapt-rdepends und grep gemacht.
Ich bin auf Debiandebtree gestoßen, das macht allerdings eine grafische Baumdarstellung der Abhängigkeiten. Finden könnte man sowas damit aber ja auch. Mich würd auch interessieren, wenns da etwas nicht grafisches, fertiges für gibt.

Ansonsten hats mich natürlich in den Fingern gejuckt, dafür was zu basteln. Auf die Schnelle, mit einer guten alten Rekursion:

Code: Alles auswählen

$ cat find_trans_dep 
#!/bin/sh
set -eu

: ${SKIPS:=}

lvl=$1
next_lvl=$(($lvl - 1))
pkg=$2
trans_dep=$3

[ "$lvl" -lt 0 ] && exit 0

for dep in $(apt-cache depends "$pkg" 2>/dev/null | awk '$1=="Depends:" { print $2; }'); do
	if [ "$dep" = "$trans_dep" ]; then
		echo "$pkg -> $trans_dep"
		exit 0
	fi

	case " $SKIPS " in
		*" $dep "*)
			continue
	esac

	output=$("$0" $next_lvl "$dep" "$trans_dep")
	if [ -n "$output" ]; then
		echo "$pkg -> $output"
		exit 0
	fi
done
Das geht sicher besser, es ist höllisch langsam:

Code: Alles auswählen

$ time SKIPS="libc6 libgcc1 libstdc++6 libx11-6 zlib1g" ./find_trans_dep 4 geeqie libsystemd0
geeqie -> libchamplain-0.12-0 -> libgtk-3-0 -> libatk-bridge2.0-0 -> libdbus-1-3 -> libsystemd0

real	2m27,555s
user	2m21,474s
sys	0m6,956s
(Nachtrag: Ok, auf schnellerem Rechner gehts natürlich auch schneller :) :

Code: Alles auswählen

time SKIPS="libc6 libgcc1 libstdc++6 libx11-6 zlib1g" ./find_trans_dep_sh 4 geeqie libsystemd0
geeqie -> libchamplain-0.12-0 -> libgtk-3-0 -> libatk-bridge2.0-0 -> libdbus-1-3 -> libsystemd0

real	0m40,307s
user	0m38,004s
sys	0m2,590s
)


hikaru hat geschrieben: ↑ zum Beitrag ↑
11.08.2021 22:33:40
libsystemd0 ist zwar aus dem Code von Debiansystemd gebaut
Ich seh nach 13 Jahren zum ersten Mal, dass es einen [deb-src]-BBCode gibt, ha. Der wird wohl nicht oft benutzt.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
hikaru
Moderator
Beiträge: 13588
Registriert: 09.04.2008 12:48:59

Re: geeqie und systemd

Beitrag von hikaru » 11.08.2021 23:43:29

bensmac hat geschrieben: ↑ zum Beitrag ↑
11.08.2021 23:29:27
@hikaru: Debiandebtree
Ein vollständiger Graph ist mir eigentlich zu viel (Edit: @JTH: u.A. wegen der Geschwindigkeit. ;) ). Was ich gern gehabt hätte wäre ein Programm, in das ich zwei Paketnamen stecke, und als Ergebnis erhalte ich entweder den kürzesten, oder alle Pfade zwischen diesen beiden Paketen, aber eben nur zwischen diesen beiden Paketen - idealerweise ohne Grafik, sondern als reine CLI-Ausgabe.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: geeqie und systemd

Beitrag von Meillo » 11.08.2021 23:57:16

debtree erzeugt die Grafik doch via graphviz/dot, folglich sollte man dort den dot-Code ausgeben lassen koennen, den man dann, statt in eine Grafik umzuwandeln, mit awk *hihi* nachbearbeitet und nur den Pfad ausgibt, der vom Start- zum Endpaket fuehrt. -- Hoert sich ganz einfach an. ;-)
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: geeqie und systemd

Beitrag von fischig » 12.08.2021 08:13:11

@niemand:
Worauf beziehst du dich?
Ganz schlicht auf apt-get (-s) install geeqie:

Code: Alles auswählen

Die folgenden NEUEN Pakete werden installiert:
  dbus dbus-user-session dconf-gsettings-backend dconf-service geeqie geeqie-common glib-networking glib-networking-common
  glib-networking-services gsettings-desktop-schemas libaom0 libapparmor1 libargon2-1 libass9 libatk-bridge2.0-0 libatspi2.0-0
  libavcodec58 libavfilter7 libavformat58 libavutil56 libblas3 libbluray2 libbs2b0 libchamplain-0.12-0 libchamplain-gtk-0.12-0
  libchromaprint1 libclutter-1.0-0 libclutter-gtk-1.0-0 libcodec2-0.9 libcogl-pango20 libcogl-path20 libcogl20 libcolord2
  libcryptsetup12 libdav1d4 libdconf1 libde265-0 libdjvulibre-text libdjvulibre21 libffmpegthumbnailer4v5 libfftw3-double3
  libflite1 libgfortran5 libgme0 libgsm1 libgtk-3-0 libgtk-3-common libheif1 libjson-c5 libjson-glib-1.0-0
  libjson-glib-1.0-common liblapack3 liblcms2-2 liblilv-0-0 liblirc-client0 liblua5.1-0 libmp3lame0 libmpg123-0 libmysofa1
  libnorm1 libnspr4 libnss3 libnuma1 libopenjp2-7 libopenmpt0 libpam-systemd libpgm-5.3-0 libpocketsphinx3 libpoppler-glib8
  libpoppler102 libpostproc55 libproxy1v5 libpsl5 librabbitmq4 librest-0.7-0 librubberband2 libsamplerate0 libserd-0-0
  libshine3 libsnappy1v5 libsodium23 libsord-0-0 libsoup-gnome2.4-1 libsoup2.4-1 libsoxr0 libspeex1 libsphinxbase3
  libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4 libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libva-drm2
  libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvorbisfile3 libvpx6 libwavpack1 libwayland-cursor0 libwayland-egl1 libwebpmux3
  libx264-160 libx265-192 libxvidcore4 libzmq5 libzvbi-common libzvbi0 ocl-icd-libopencl1 systemd systemd-sysv
  systemd-timesyncd
hikaru hat geschrieben:In Bullseye gibt es diesen Abhängigkeitspfad*: Debiangeeqie → Debianlibgtk-3-0 → Debianlibatk-bridge2.0-0 → Debianlibdbus-1-3 → Debianlibsystemd0.
An etwas in dieser Art dachte ich. smutbert hat mir sowas mal bei einem anderen Programm¹ gezeigt. Insofern hätte auch ich diesen Wunsch:
einen netten (einfachen, automatischen und robusten) Weg kennt, solch einen Abhängigkeitspfad zu erzeugen
Es wäre schön, wenn dabei meine Frage nicht unter die Räder geriete.
Bei smutberts Tipp konnte man ein Glied der Pfadkette durch ein anderes, das nicht von systemd abhing, ersetzen.
hikarus³ Pfad landet nicht bei systemd. Dass libsystemd0 nicht systemd ist und man ( auch devuan!² :wink: ) ersteres auch ohne systemd nicht los wird ist bekannt und die lib ist dementsprechend auch installiert. Wo also die Abhängigkeit zu letzterem entsteht, macht dein Pfad noch nicht klar, mir jedenfalls (noch) nicht.
libgtk3.0 scheint ein solcher Kandidat zu sein. Wenn ich das apt-get-install-Spielchen damit wiederhole lande ich wieder (u.a.) bei systemd.


¹ an welchem erinnere ich z.Z. nicht sicher, muss aber wohl was mit sound gewesen sein :P
² nur interessehalber, neugierig: ist es das, was dich dazu bringt, die Macher als „Radikalinskis“ einzustufen?
³ Danke für die rechtschreibliche Korrektur dieses vermaledeiten Programmnamens!

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: geeqie und systemd

Beitrag von Meillo » 12.08.2021 10:00:28

Danke fuer die Terminalausgabe. Jetzt ist auch klar, was du mit Systemd meinst ... eben nicht diese Lib von der mir bislang ausgegangen sind.

Will er Systemd auch installieren wenn du die Recommends deaktivierst: `--no-install-recommends'?
Use ed once in a while!

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: geeqie und systemd

Beitrag von JTH » 12.08.2021 10:09:44

fischig hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 08:13:11
Es wäre schön, wenn dabei meine Frage nicht unter die Räder geriete.
Ich weiß nicht, was du meinst :P Da kommen bestimmt noch mehr Basteleien ;)

Die Kette wäre hier folgende:
geeqie -> libgtk-3-0 -> libgtk-3-common -> dconf-gsettings-backend -> dconf-service -> dbus-user-session -> systemd.

Alles harte Abhängigkeiten, keine Recommends. Bei Debiandconf-service zeigt die Abhängigkeit allerdings eigentlich auf die virtuellen Paketnamen default-dbus-session-bus (= Debiandbus-user-session) ODER dbus-session-bus (= dbus-user-session ODER Debiandbus-x11) – hoffentlich verständlich. dbus-x11 hängt nicht von systemd ab.

Du könntest dbus-user-session und damit systemd also mit Vorab- oder expliziter zusätzlicher Installation von dbus-x11 vermeiden, fischig.
Manchmal bekannt als Just (another) Terminal Hacker.

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: geeqie und systemd

Beitrag von fischig » 12.08.2021 12:19:47

Meillo hat geschrieben:Will er Systemd auch installieren wenn du die Recommends deaktivierst
Deaktivierung der Recommends ist bei mir Standard.
JTH hat geschrieben:Ich weiß nicht, was du meinst :P
Die Frage war:
fischig hat geschrieben:Es sieht so aus, als hinge geeqie ab bullseye von systemd ab. Kann man das umgehen?
Kann man die Frage anders verstehen als: „Kann man bei der Installation von geeqie die Installation von systemd umgehen?“ :wink:

Und so in der Art war die Antwort, auf die ich spekuliert hatte:
JTH hat geschrieben:Du könntest dbus-user-session und damit systemd also mit Vorab- oder expliziter zusätzlicher Installation von dbus-x11 vermeiden
Bingo, Herr JTH! Ich verneige mich in Ehrfurcht! :THX: :THX: :THX: :P

Code: Alles auswählen

# apt-get install dbus-x11 geeqie
[...]
Die folgenden NEUEN Pakete werden installiert:
  dbus dbus-x11 dconf-gsettings-backend dconf-service geeqie geeqie-common glib-networking glib-networking-common
  glib-networking-services gsettings-desktop-schemas libaom0 libapparmor1 libass9 libatk-bridge2.0-0 libatspi2.0-0
  libavcodec58 libavfilter7 libavformat58 libavutil56 libblas3 libbluray2 libbs2b0 libchamplain-0.12-0 libchamplain-gtk-0.12-0
  libchromaprint1 libclutter-1.0-0 libclutter-gtk-1.0-0 libcodec2-0.9 libcogl-pango20 libcogl-path20 libcogl20 libcolord2
  libdav1d4 libdconf1 libde265-0 libdjvulibre-text libdjvulibre21 libffmpegthumbnailer4v5 libfftw3-double3 libflite1
  libgfortran5 libgme0 libgsm1 libgtk-3-0 libgtk-3-common libheif1 libjson-glib-1.0-0 libjson-glib-1.0-common liblapack3
  liblcms2-2 liblilv-0-0 liblirc-client0 liblua5.1-0 libmp3lame0 libmpg123-0 libmysofa1 libnorm1 libnspr4 libnss3 libnuma1
  libopenjp2-7 libopenmpt0 libpgm-5.3-0 libpocketsphinx3 libpoppler-glib8 libpoppler102 libpostproc55 libproxy1v5 libpsl5
  librabbitmq4 librest-0.7-0 librubberband2 libsamplerate0 libserd-0-0 libshine3 libsnappy1v5 libsodium23 libsord-0-0
  libsoup-gnome2.4-1 libsoup2.4-1 libsoxr0 libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4
  libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1
  libvorbisfile3 libvpx6 libwavpack1 libwayland-cursor0 libwayland-egl1 libwebpmux3 libx264-160 libx265-192 libxvidcore4
  libzmq5 libzvbi-common libzvbi0 ocl-icd-libopencl1
0 aktualisiert, 109 neu installiert, 0 zu entfernen und 54 nicht aktualisiert.

ich verfüge nicht über genügend Kenntnisse, um mich alleine sicher und zielführend durch den Abhängigkeiten-Dschungel zu schlagen. Insofern begrüßte ich wie hikaru auch ein Programm, das mich da ans Händchen nimmt, bzw. die Arbeit erleichtert. Aber das ist sekundär.

190 MB für'n Bildbetrachter finde ich ziemlich viel Holz, gegenüber knapp 10 MB, die Debianphototonic auf dem schmalen System verlangt. Insofern weiß ich nicht, ob ich's mache. Aber ich weiß jetzt, wie ich's machen könnte. Nochmals danke!

Ich lass' den Thread noch mal 'ne Weile offen. Vielleicht kommt ja bei der sekundären Frage wirklich noch was!

PS:
einen Schreibfehler korrigiert
Zuletzt geändert von fischig am 12.08.2021 13:08:22, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: geeqie und systemd

Beitrag von Meillo » 12.08.2021 12:40:13

@all: Gibt es denn eine Moeglichkeit, dass ich bei der Installation bei allen Alternativprogrammen in den Abhaengigkeiten (interaktiv) auswaehlen kann, welches ich moechte, bzw. dabei sehe wie gross deren Abhaengigkeitsbaeume sind? Manchmal unterscheidet sich die Groesse der Abhaengigkeit dabei ja nennenswert. Bzw. kann man irgendwie sagen: Nimm immer die kleinste Abhaengigkeitsoption (z.B. wenigster Speicherplatz)?


@fischig: Geeqie war bislang mein bevorzugtes Bildverwaltungsprogramm, wenn ich mehr Uebersicht/Features/Komfort wollte als Debiansxiv bietet. Frueher ist mir das immer klein vorgekommen (nachdem mit gThumb zu fett geworden war). Jetzt muss ich wohl die naechste Stufe runter wechseln, nachdem auch Geeqie fett zu werden scheint ... :roll:

(Edit: Auf meinem minimalistischen FreeBSD will er fuer gthumb 600MB, fuer geeqie 460MB installieren. Fuer phototonic nur 80MB.)
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: geeqie und systemd

Beitrag von fischig » 12.08.2021 12:48:28

Meillo hat geschrieben:Jetzt muss ich wohl die naechste Stufe runter wechseln, nachdem auch Geeqie fett zu werden scheint ... :roll:
Ich finde, die Frage will gut überlegt/ausprobiert sein. Das allermeiste, was hier bei mir verlangt wird, sind ja libs. Und je nachdem, wie das individuelle System ansonsten gestaltet ist, mag sich der zusätzliche lib-Aufwand ja deutlich reduzieren. Das ist letztlich, was ich an Debian so schätze: Das Baukastensystem, man kann vielleicht auch sagen: KISS. Und ich fürchte laienhaft, systemd ist dem nicht gerade förderlich.

PS:
die beiden letzten Posts haben sich wohl zeitlich überschnitten. :wink:

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: geeqie und systemd

Beitrag von JTH » 12.08.2021 13:04:50

Meillo hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 12:40:13
@all: Gibt es denn eine Moeglichkeit, dass ich bei der Installation bei allen Alternativprogrammen in den Abhaengigkeiten (interaktiv) auswaehlen kann, welches ich moechte, bzw. dabei sehe wie gross deren Abhaengigkeitsbaeume sind? Manchmal unterscheidet sich die Groesse der Abhaengigkeit dabei ja nennenswert. Bzw. kann man irgendwie sagen: Nimm immer die kleinste Abhaengigkeitsoption (z.B. wenigster Speicherplatz)?
Ein Werkzeug, das solche entweder-oder-Abhängigkeiten richtig interaktiv abfragt, kenne ich auch nicht. Um solche Abhängigkeitsbäume nachzuvollziehen, benutz ich immer aptitudes Ncurses-UI. Damit kann man die, finde ich, halbwegs schnell, ohne diverse apt-cache-, apt-rdepends- etc. Aufrufe, durchgehen und sieht auch an den entsprechenden Stellen, wie hier oben, die alternativen Möglichkeiten für einzelne Abhängigkeiten. Optimal komfortabel ist das aber auch nicht.

fischig hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 12:19:47
Ich lass' den Thread noch mal 'ne Weile offen. Vielleicht kommt ja bei der sekundären Frage wirklich noch was!
Da kommt bestimmt noch was ;)
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: geeqie und systemd

Beitrag von Meillo » 12.08.2021 13:15:03

fischig hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 12:48:28
Das allermeiste, was hier bei mir verlangt wird, sind ja libs. Und je nachdem, wie das individuelle System ansonsten gestaltet ist, mag sich der zusätzliche lib-Aufwand ja deutlich reduzieren.
Da hast du natuerlich recht. Ich habe halt sehr minimalistische Systeme, folglich habe ich die ganzen Libs noch nicht. Mein /usr hat ohne Quellcode nur 4,7 GB. Fuer eine einzige Anwendung, die ich nur alle paar Monate mal nutze, das um 10% zu vergroessern kommt mir unverhaeltnismaessig vor. Aber das ist mehr eine Grundsatzsache als in diesem Fall technische Notwendigkeit. Das geeqie von oldoldoldoldstable wuerde mir vollkommen reichen, aber um gleichwenig Features und Platzverbrauch zu haben muss ich nun ein anderes Programm nutzen. Aber wie dem auch sei ... ist nicht so wichtig. ;-)


@JTH: Danke fuer den Tipp.
Use ed once in a while!

Benutzeravatar
MSfree
Beiträge: 10774
Registriert: 25.09.2007 19:59:30

Re: geeqie und systemd

Beitrag von MSfree » 12.08.2021 13:27:05

Meillo hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 13:15:03
Mein /usr hat ohne Quellcode nur 4,7 GB.
Das nennst du minimal?

Ich liege da in der Regel unter 2.5GB. :mrgreen:

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: geeqie und systemd

Beitrag von Meillo » 12.08.2021 13:41:54

MSfree hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 13:27:05
Meillo hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 13:15:03
Mein /usr hat ohne Quellcode nur 4,7 GB.
Das nennst du minimal?

Ich liege da in der Regel unter 2.5GB. :mrgreen:
Es gibt Unterschiede da dies ein FreeBSD ist, Enthalten ist dort z.B. ein Portstree mit 900MB und LLVM mit 600MB.
Use ed once in a while!

Benutzeravatar
hikaru
Moderator
Beiträge: 13588
Registriert: 09.04.2008 12:48:59

Re: geeqie und systemd

Beitrag von hikaru » 12.08.2021 22:42:08

Hier ein Versuch, eine einzelne Abhängigkeitskette aus einem Debiandebtree-Output zu holen:

Code: Alles auswählen

#!/bin/bash

START=$1
END=$2

if [ $# -lt 3 ]
then
        DKS=${START}.dks
        debtree --no-alternatives $START 2>/dev/null > ${START}.dot
        dijkstra -dp $START ${START}.dot > $DKS
        echo $END
else
        DKS=$3
fi

egrep -A 1 "(\s|\")$END(\s|\").*\[dist" $DKS | tail -n 1 | sed 's/.\+prev=//' | tr -d '",;]' | while read PKG
do
        echo $PKG
        if [ "$PKG" != "$START" ]
        then
                $0 $START $PKG $DKS
        fi
done

Code: Alles auswählen

$ time ./dijkstra_dep.sh geeqie systemd
systemd
dbus-user-session
xdg-desktop-portal-gtk
libwebkit2gtk-4.0-37
zenity
geeqie

real	0m0,506s
user	0m0,481s
sys	0m0,050s
Die Liste ist im Vergleich zu den übrigen Beispielen hier im Thread umgekehrt zu lesen, also "Debiansystemd ist eine Abhängigkeit von Debiandbus-user-session." usw. Der Grund hierfür und für die zeilenweise Ausgabe der Pakete ist Faulheit, denn so musste ich keine Arbeit in die Präsentation stecken. ;)

Das Script legt zwei Dateien im aktuellen Verzeichnis ab: Den debtree-Output als STARTPAKETNAME.dot, und den dijkstra-Output als STARTPAKETNAME.dks.

Hintergrund:
Mein Ansatz war, den kürzesten Pfad vom Startpaket (hier Debiangeeqie) zum Zielpaket (hier Debiansystemd) zu finden. Für dieses Problem des kürzesten Weges in einem Graphen gibt es eine Standardlösung, den Dijkstra-Algorithmus. [1]
dijkstra aus Debiangraphviz ist eine Implementierung dieses Algorithmus'. graphviz wiederum ist eine Empfehlung von Debiandebtree. Es lag also nahe, dieses Programm zu nutzen.
Die Option -p gibt das jeweils vorherige Paket in de Kette mit an. So konnte ich mich relativ einfach durchhangeln.
Leider ist der dijkstra-Output sehr hässlich und nur sehr eingeschränkt steuerbar. Pakete werden mal in Anführungszeichen ("") gesetzt und mal nicht (je nachdem ob der Name nur aus alphanumerischen Zeichen besteht oder z.B. Bindestriche enthält). Auch der Zeilenabschluss (Komma oder eckige Klammer + Semikolon) hängt davon ab). Die Whitespaces in der Ausgabe sind offenbar weder Leerzeichen noch Tabs. Dass ein Record über mehrere Zeilen läuft fällt dann schon kaum noch ins Gewicht. All das lässt die grep-Zeile so kompliziert erscheinen, obwohl es eigentlich ganz trivial ist.


[1] https://de.wikipedia.org/wiki/Dijkstra-Algorithmus

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: geeqie und systemd

Beitrag von Meillo » 12.08.2021 22:49:30

hikaru hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 22:42:08
Hier ein Versuch, eine einzelne Abhängigkeitskette aus einem Debiandebtree-Output zu holen:
:THX:
Die Liste ist im Vergleich zu den übrigen Beispielen hier im Thread umgekehrt zu lesen, also "Debiansystemd ist eine Abhängigkeit von Debiandbus-user-session." usw. Der Grund hierfür und für die zeilenweise Ausgabe der Pakete ist Faulheit, denn so musste ich keine Arbeit in die Präsentation stecken. ;)
Du machst einfach in die letzte Zeile hinter das `done' noch ein `|tac' und die Liste ist anders rum. ;-)
Use ed once in a while!

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: geeqie und systemd

Beitrag von JTH » 12.08.2021 22:53:12

hikaru hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 22:42:08
Mein Ansatz war, den kürzesten Pfad vom Startpaket (hier Debiangeeqie) zum Zielpaket (hier Debiansystemd) zu finden. Für dieses Problem des kürzesten Weges in einem Graphen gibt es eine Standardlösung, den Dijkstra-Algorithmus. [1]
dijkstra aus Debiangraphviz ist eine Implementierung dieses Algorithmus'. graphviz wiederum ist eine Empfehlung von Debiandebtree. Es lag also nahe, dieses Programm zu nutzen.
Cool :THX: Länger her, dass mir der über den Weg gelaufen ist.


An die Ausführungszeiten bin ich selbst mit einem Debianparallel in obiger, naiver Lösung nicht herangekommen :D
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
hikaru
Moderator
Beiträge: 13588
Registriert: 09.04.2008 12:48:59

Re: geeqie und systemd

Beitrag von hikaru » 13.08.2021 00:05:32

Meillo hat geschrieben: ↑ zum Beitrag ↑
12.08.2021 22:49:30
Du machst einfach in die letzte Zeile hinter das `done' noch ein `|tac' und die Liste ist anders rum. ;-)
Hmm... :roll:

Code: Alles auswählen

$ tail dijkstra_dep.sh 

egrep -A 1 "(\s|\")$END(\s|\").*\[dist" $DKS | tail -n 1 | sed 's/.\+prev=//' | tr -d '",;]' | while read PKG
do
	echo $PKG
	if [ "$PKG" != "$START" ]
	then
		$0 $START $PKG $DKS
	fi
done | tac
$ time ./dijkstra_dep.sh geeqie systemd
systemd
xdg-desktop-portal-gtk
zenity
geeqie
libwebkit2gtk-4.0-37
dbus-user-session

real	0m0,512s
user	0m0,480s
sys	0m0,067s
"systemd" an erster Stelle kann ich mir noch erklären, denn da schummle ich ja bei der Ausgabe. Aber der Rest ist irgendwie durcheinander. Ich schieb das mal auf die Rekursion. Dass sowas Teufelszeug ist, hat mir ja schon mein Informatiklehrer in der Schule beigebracht. Immer wenn jemand mit rekursivem Code ankam hat er die Aufgabe an die Klasse gestellt, Bedingungen zu finden die den Code zur Bombe machen. ;)

tac nach dem Ende des ursprünglichen Scripts aufzurufen funktioniert natürlich:

Code: Alles auswählen

$ time ./dijkstra_dep.sh geeqie systemd | tac
geeqie
zenity
libwebkit2gtk-4.0-37
xdg-desktop-portal-gtk
dbus-user-session
systemd

real	0m0,506s
user	0m0,472s
sys	0m0,061s
Aber das erscheint mir hässlich, denn wenn man es jetzt als Fertigpaket verkaufen wollte, müsste man nur deshalb noch ein Wrapperscript drumrum packen.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: geeqie und systemd

Beitrag von eggy » 13.08.2021 07:18:22

Darf ich noch einwerfen, dass der kürzeste Pfad nicht immer der Beste sein muss?

https://de.wikipedia.org/wiki/Bellman-Ford-Algorithmus

Ein langer Pfad, von kleinen Paketen, die man bereits auf der Kiste hat, ist vermutlich einem kurzen mit großen Paketen, die dann auch noch installiert werden müssen, vorzuziehen.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: geeqie und systemd

Beitrag von JTH » 13.08.2021 07:23:23

eggy hat geschrieben: ↑ zum Beitrag ↑
13.08.2021 07:18:22
Darf ich noch einwerfen, dass der kürzeste Pfad nicht immer der Beste sein muss?
Bei der Frage geht's aber doch hauptsächlich um die Frage ob es überhaupt einen Pfad gibt (= kann es sein, dass ein bestimmtes Paket als Abhängigkeit eines anderen installiert werden muss). Die Kosten/Länge des Pfads wäre dabei egal. (Oder vertue ich mich dabei?)
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: geeqie und systemd

Beitrag von Meillo » 13.08.2021 07:24:55

Hmm ...

War gestern wohl schon ein bisschen spaet. Hab da die Rekursion gar nicht gesehen. ;-) (Wobei ich noch nicht verstehe warum die hier ein Problem ist.)

Und jetzt ist es vielleicht noch zu frueh und ich uebersehe wieder was. ;-)

Trotzdem: Wenn du bei einer Rekursion absteigend ausgeben willst, dann machst du die Ausgabe einfach hinter den Rekursionsaufruf.
Use ed once in a while!

Antworten