2016-07-12 19 views
1

Ich baue eine Deb, die debconf verwendet, um zu fragen, ob der Benutzer es wirklich installieren möchte (einfache boolesche Vorlage). Was ist der beste Weg, die Installation ordnungsgemäß zu beenden, so dass der Benutzer zu einem späteren Zeitpunkt apt-get install pkg-name und mit einem neuen Konfigurationsmenü präsentiert werden könnte?Wie schließe ich eine Deb-Installation ordnungsgemäß von einem Betreuerskript ab?

Meine aktuelle Lösung ist, den Wert im preinst Skript zu prüfen, wie unten:

db_get pkg-name/confirm_install 
if [ "$RET" = "false" ]; then 
     db_purge 
     exit 1 
fi 

Die exit 1 notwendig ist apt-get zu halten aus fortgeführten und denkt das Paket installiert, und die db_purge ermöglicht den Benutzer neu zu installieren eine saubere debconf db. Es wirft jedoch einen unangenehmen Fehler auf:

dpkg: error processing pkg-name (--configure): 
subprocess installed post-installation script returned error exit status 1 
Errors were encountered while processing: 
pkg-name 
E: Sub-process /usr/bin/dpkg returned an error code (1) 

Gibt es eine bessere Möglichkeit, eine Installation aus einem deb Maintainer-Skript zu beenden?

+0

Wie über 'db_get pkg-name/confirm_install | Wahr ' –

Antwort

1

Ich glaube nicht, dass es da ist. Aus der Sicht von dpkg bat der Benutzer darum, das Paket zu installieren, und wenn dies nicht geschieht, muss es so viele Erklärungen wie möglich geben, um zu zeigen, dass es nicht passiert ist und warum nicht.

Es kann für Sie stattdessen eine Möglichkeit sein, das Paket sauber zu installieren, aber ohne das zusätzliche Verhalten des Pakets zu aktivieren, bis der Benutzer ein spezielles "reconfigure" -Skript (oder den Standard dpkg-reconfigure $yourpkg) ausführt.

+0

Ich fürchte, Sie haben Recht, und das ergibt Sinn. Nach langem Suchen kann ich keine Möglichkeit finden, es zu tun. Ich werde es ein paar Tage geben, bis ich deine Antwort akzeptiere, um zu sehen, ob jemand andere Ideen hat. – KernelSanders