Kann ich andere dpkg- oder apt- * -Befehle in meinen Preinst-Skripten aufrufen?

9

Als Teil meiner benutzerdefinierten (internen) .deb-Datei, die auf Ubuntu 12.04-Geräten bereitgestellt wird, muss ich mehrere PPA-Repositorys hinzufügen, apt-get update ausführen und dann Pakete von diesen PPAs installieren.

Kann dies in den Skripten .preinst oder .postinst in meiner .deb-Datei erfolgen?

Ich gehe davon aus, dass , wenn meine .deb - Datei installiert ist ( sudo dpkg -i testing.deb) , dass einige Sperren oder Mechanismen wahrscheinlich gibt , die mich von Aufrufen bestimmter Befehle wie verhindern würde add-apt-repository, apt-get updateund apt-get install.

Ist das eine richtige Annahme?

Stéphane
quelle
Siehe auch
Javier López

Antworten:

7

Du hast Recht. Maintainer-Skripte dürfen keine Änderungen an den Zuständen apt oder dpkg vornehmen, außer den Änderungen, die ohnehin bei der Installation des Pakets vorgenommen werden.

Das Installieren einer Datei in /etc/apt/sources.list.dist jedoch in Ordnung. Die meisten Pakete, die eine Rolle wie "Dieses Paket installieren, um das APT-Repository X zu Ihrem System hinzuzufügen" ausfüllen, tun dies einfach (im Gegensatz zum Aufrufen add-apt-repository). Es ist auch üblich, den öffentlichen GPG-Schlüssel zu löschen, mit dem das Repo angemeldet wird /etc/apt/trusted.gpg.d.

Wenn Sie es dem Benutzer vereinfachen möchten, die zusätzlichen Installationsschritte für Ihre Software auszuführen, möchten Sie möglicherweise nur ein Skript versenden, das die Aufgabe erledigt, und den Benutzer anweisen, das Skript manuell auszuführen.

Aber wenn Sie wirklich, wirklich apt-get updateoder apt-get installusw. automatisch anrufen möchten und es Ihnen nichts ausmacht, dass Ihr Paket in Debian oder Ubuntu völlig inakzeptabel ist und Ihre Benutzer damit einverstanden sind, dass sich das Paket so verhält, dann könnten Sie es vielleicht sagen Etwas, bei /etc/cron.ddem nach vorhandenen apt- oder dpkg-Sperren gesucht wird und, falls keine vorhanden sind, Ihre zusätzlichen Installationsschritte ausführt und dafür sorgt, dass diese Schritte nicht erneut ausgeführt werden. Ich empfehle diesen Ansatz nicht.

der paul
quelle