[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: nvidia-glx backport



Joachim Förster <JOFT@gmx.de> schrieb:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hallo Frank!
>
> Frank Küster schrieb:
> |>Beim Installieren des entstandenen nvidia-glx Pakets bricht dselect dann

Das habe ich nicht geschrieben...

> | Ich hatte solches Verhalten auch schon. In Wirklichkeit ist es nicht
> | /usr/share/debconf/confmodules selber, das mit return code 1
> | endet. Sondern das config-Skript, das von confmodules im postinst-Skript
> ~                     ^^^^^^^
>
> Welches config-Skript?

Pakete, deren Konfiguration mit debconf arbeitet, funktionieren so:

- Ganz zu Anfang, bevor das Paket entpackt wird, wird zuerst die
  Kontrollinformation ausgelesen, und dazu gehören das postinst- und das
  config-Skript. 

- Als nächstes wird das config-Skript ausgeführt. Dieses lädt
  confmodule, damit die debconf-Befehle bekannt sind. Danach werden
  diese debconf-Befehle verwendet, damit debconf die Fragen mit dem
  gewählten frontend (meistens dialog auf der Textkonsole) an den
  Benutzer stellt. Die Antworten werden in die debconf-Datenbank in
  /var/cache/debconf geschrieben.

- Nun wird ausgepackt und danach das postinst-Skript lädt seinerseits
  confmodule. Mit debconf-Befehlen liest es die vorher gegebenen
  Antworten aus der Datenbank und konfiguriert entsprechend.

Der Sinn des ganzen ist der, dass dadurch alle Konfigurationsfragen
aller Pakete am Anfang gestellt werden können. Würde man erst im
postinst-Skript fragen, kämen die Dialoge jedesmal, wenn gerade ein
entsprechendes Paket ausgepackt wurde.

Soweit die Theorie. Nun kann es vorkommen, dass das config-Skript aus
irgendwelchen Gründen nicht korrekt durchgelaufen ist oder ähnliches. In
diesem Fall hätte das postinst-Skript ein Problem. Daher ruft confmodule
dann, wenn es von postinst geladen wird, nochmal das config-Skript
auf. Normalerweise merkt man davon nichts, weil die Fragen bereits
beantwortet wurden und daher nicht noch einmal angezeigt werden.

Beim mir habe ich nun beobachtet, dass es vorkommt, dass im
config-Skript ein Befehl mit einem Fehlercode endet, aber dadurch beim
ersten Mal nicht der Installationsprozess beendet wird. Beim zweiten
Aufruf knallt es dann.

Offenbar werden die Skripte gesourcet, und während bei mir im
postinst-Skript ein explizites "set -e" stand, begann config mit
"#!/bin/sh -e". Hier ist das -e wirkungslos, wenn gesourcet wird anstatt
ausgeführt. Und obwohl config schon beim ersten Mal einen Fehler
liefert, bricht es erst beim zweiten Mal ab.

Bei nvidia-glx ist das aber nicht der Fall, daher weiß ich nicht woran
es in diesem Fall liegt.

Du könntest versuchen, das Paket mit

DEBCONF_DEBUG=developer dpkg -i $paketname

zu installieren. Bei Bedarf ein "set -x" im Skript einfügen. Wenn das
Problem auch mit dpkg-reconfigure auftritt, geht es schneller einfach
das Skript in /var/lib/dpkg/info/nvidia-glx.config zu editieren.

Gruß, Frank
-- 
Frank Küster, Biozentrum der Univ. Basel
Abt. Biophysikalische Chemie



Reply to: