Wie würden Sie verfügbare Verzeichnisse testen, die ein Paketmanager installieren würde?

Wie würden Sie verfügbare Verzeichnisse testen, die ein Paketmanager installieren würde?

Ich versuche, einige Installationsskripte für ein System mit mehreren Abhängigkeiten zu erstellen, und habe herausgefunden, wie ich --dry-runmit dem Paketmanager ( aptin diesem Fall Ubuntu) vorgehen kann, bevor ich echte Installationen durchführe.

Nach der Installation der Pakete müssen jedoch bestimmte Konfigurationsdateien kopiert werden. Wie kann ich dies überprüfen, um sicherzustellen, dass die Ziele verfügbar sind, bevor ich mit der Installation beginne?

Ich möchte das Skript nicht ausführen, um Dinge teilweise zu installieren und das System in einen unvorhersehbaren Zustand zu versetzen, aber wenn das betroffene Paket nicht existiert, wären auch die Konfigurationsverzeichnisse nicht vorhanden, sodass ich sie nicht überprüfen könnte.

Angenommen, ich möchte nach kopieren base.conf, /etc/package/system/aber /etc/package/es existiert nicht einmal. Wenn das Ziel falsch konfiguriert ist (z. B. falsch geschrieben als sytem), wird nach der Paketinstallation während des Kopiervorgangs ein Fehler ausgegeben. Dies kann eine von mehreren Konfigurationsdateien sein, die bereits kopiert wurden, sodass ich sozusagen keine Möglichkeit habe, es „zurückzusetzen“. Mein Endziel ist ein Installationsprozess, bei dem keine teilweise kopierten Dateien zurückbleiben.

Das Fehlerszenario liegt vor, wenn mehrere Dateien kopiert werden müssen. Wenn drei Dateien kopiert werden müssen und das Ziel der dritten Datei falsch konfiguriert ist, werden die ersten beiden Dateien trotzdem kopiert und bei der dritten Datei tritt ein Fehler auf. Die restlichen Dateien verursachen beim nächsten Durchlauf weitere Fehler.

PS: Ich vermute, dass ich möglicherweise ein richtiges Paket erstellen muss, um die Abhängigkeiten zu bewältigen, aber die Komplexität und der Zeitaufwand sind wesentlich höher und so viel möchte ich jetzt nicht investieren.

Antwort1

Sie können den Inhalt von Paketen im Voraus prüfen, ohne sie herunterzuladen; siehe apt-fileden entsprechenden listBefehl.

Damit erhalten Sie jedoch nie ein vollständiges Bild, und Sie können sich kein vollständiges Bild der Änderungen machen, die ein beliebiges Paket vorgenommen hat, ohne es zu installieren: Pakete können Betreuerskripte mitliefern, die zusätzliche Änderungen vornehmen. Das bedeutet, dass ein Paket ein Verzeichnis erstellen kann, ohne dass dies aus den Metadaten des Pakets ersichtlich ist, und Sie können es nur herausfinden, indem Sie die Betreuerskripte analysieren und dabei alle ihre Nebenwirkungen und die der Abhängigkeiten des Pakets berücksichtigen.

Ich vermute, dass Sie in Ihrem Szenario einen zweistufigen Ansatz benötigen:

  • Installieren Sie mithilfe des Paketverwaltungssystems alle benötigten Pakete.
  • Überprüfen Sie alle Erwartungen, die Sie hinsichtlich des resultierenden Verzeichnislayouts und der installierten Dateien haben, und
    • Wenn Ihre Erwartungen erfüllt sind, kopieren Sie alle Ihre zusätzlichen Dateien an den richtigen Platz.
    • wenn dies nicht der Fall ist, löschen Sie alle von Ihnen installierten Pakete (mit, --autoremovesodass auch alle automatisch installierten Abhängigkeiten entfernt werden).

verwandte Informationen