Pre-Depends Abhängigkeit nicht verfügbar [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Pre-Depends Abhängigkeit nicht verfügbar [gelöst]

Beitrag von nudgegoonies » 03.03.2021 17:35:09

Ich habe ein Paket, dass in seinem debconf script jq benötigt. Aber egal, ob ich jq in den Depends und/oder Pre-Depends habe, wenn debconf ausgeführt wird ist jq noch nicht da. Ich dachte, genau dafür ist Pre-Depends da, dass eine Abhängigkeit vorher entpackt und konfiguriert ist:
https://www.debian.org/doc/debian-polic ... pendencies
Zuletzt geändert von nudgegoonies am 04.03.2021 16:07:27, insgesamt 1-mal geändert.
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

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

Re: Pre-Depends Abhängigkeit nicht verfügbar

Beitrag von smutbert » 03.03.2021 18:07:43

Das stimmt glaube ich auch, aber ich glaube dass die PreDepends trotzdem nicht unbedingt schon vor der Installation installiert und konfiguriert sein müssen:

Ich glaube das lediglich bei anderen Paketinstallation mit apt so beobachtet zu haben und mag mich irren, aber solche Pre-Depends können ja im Endeffekt nur etwas mit den preinst- und prerm- (und möglicherweise den postinst- und postrm-) -Skripten zu tun haben und da läuft es dann so, dass beispielsweise der erste Versuch das Skript auszuführen scheitert, etwa weil jq fehlt, im weiteren Verlauf jq dann aber installiert und konfiguriert wird und schließlich das gescheiterte Skript ein weiteres Mal ausgeführt wird und diese Mal erfolgreich.
Das geht imho auch deswegen, weil die Skripte idempotent sein müssen/sollen – das Ergebnis also dasselbe sein muss, auch wenn eines der Skripte öfter ausgeführt wird.

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

Re: Pre-Depends Abhängigkeit nicht verfügbar

Beitrag von JTH » 03.03.2021 18:27:26

Nanu, war hier nicht eben ein Beitrag von inne (oder jemand anderem)?

Dann zitier ich eben die Manpage :P
man debconf-devel hat geschrieben: Note that the config script is run before the package is unpacked. It should only use commands
that are in essential packages. The only dependency of your package that is guaranteed to be
met […] is […] debconf itself.

Selbige Manpage erwähnt aber auch, dass das config-Skript normalerweise zweimal aufgerufen wird. Einmal bevor irgendeins (auch Pre-Depends) der zu installierenden Pakete entpackt ist[1] und ein zweites Mal aus postinst heraus.

Letzteres könnte man jetzt als Trick ausnutzen und den Schritt im config-Skript, der von jq abhängt, nur beim zweiten Aufruf (aus postinst heraus) ausführen. (Also dort command -v jq oder ähnliches prüfen.) Dann dürfte auch ein einfaches Depends reichen. Ob das sauber und in allen Szenarien funktioniert – müsste man ausprobieren.

smutbert hat geschrieben: ↑ zum Beitrag ↑
03.03.2021 18:07:43
Das stimmt glaube ich auch, aber ich glaube dass die PreDepends trotzdem nicht unbedingt schon vor der Installation installiert und konfiguriert sein müssen:
Eine Pre-Depends-Abhängigkeit ist komplett entpackt und konfiguriert (postinst), wenn das davon abhängende Paket (vor)konfiguriert wird (postinst & preinst ausgeführt werden). Sollte generell sehr selten nötig sein.


[1] Über einen Hook in /etc/apt/apt.conf.d/70debconf
Manchmal bekannt als Just (another) Terminal Hacker.

nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Re: Pre-Depends Abhängigkeit nicht verfügbar [gelöst]

Beitrag von nudgegoonies » 04.03.2021 16:07:11

Vielen herzlichen Dank für Eure Hilfe. Dass das Script zwei mal aufgerufen wird, wusste ich gar nicht. Sobald ich bei meinen vielen Versuchen in den Konsolenausgaben die Fehlermeldungen gesehen habe, dass jq nicht gefunden wurde, habe ich gar nicht mehr weiter geschaut und angenommen, dass der Paket-Status eh Unpacked oder Half-inst ist :roll:
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

Antworten