Ich habe eine Perl-Anwendung, die viele Abhängigkeiten benötigt, die ich auf zahlreichen Servern bereitstellen muss
Ich möchte ein Skript erstellen, das diese Perl-Anwendung automatisch und schnell installiert.
Um schneller zu sein, möchte ich die meisten meiner Abhängigkeiten mit meinem Paketmanager installieren, anstatt sie mit CPAN zu installieren
Gibt es eine Möglichkeit, anhand einer Liste von Perl-Modulen automatisch festzustellen, ob es ein Debian-Paket dafür gibt? Und wenn es eines gibt, installieren Sie das Paket, wenn nicht, installieren Sie das Perl-Modul von CPAN?
installation
perl
automation
dependencies
Vincent Membré
quelle
quelle
Antworten:
Hmm, eine Möglichkeit wäre, einen Wrapper um den Systempaket-Manager zu schreiben, dh apt-get, und wenn Pakete nicht zurückgegeben werden, installieren Sie sie mit cpan, cpanm usw.
Auf diese Weise müssten Sie natürlich zwischen Groß- und Kleinschreibung unterscheiden (oder die Groß- und Kleinschreibung ändern), da ich glaube, dass Debian in Kleinbuchstaben ein Format von lib (Paketname) -perl verwendet und cpan ein anderes Format usw. wünscht. Außerdem ist dieser Code ungetestet und etwas, das gerade zusammengewürfelt wurde.
Dann gibt es gute alte Bash-Skripte, zum Teufel habe ich in diesem Beispiel Systembefehle verwendet
Mein bester Vorschlag ist, dass Sie sich mit der Verwendung von Cfengine oder Puppet und / oder einem anderen System befassen, von dem ich sicher bin, dass es ein Systemkonfigurationsmanagement gibt. Verwenden Sie dann svn oder git oder so ..., um Änderungen an einem Repo vorzunehmen, das auf allen Ihren Servern bereitgestellt wird. Wenn Sie die Änderungen an "zahlreichen" Servern verwalten und vornehmen möchten, erleichtert cfengine / puppet / etc Ihr Leben nach der Einrichtung erheblich. nur meine zwei.
quelle
Mein Vorschlag:
Schauen Sie sich zunächst das
.bash_history
bereits installierte Ziel an. Es besteht die große Chance, dass Sie viele bereits geschriebene, gebrauchsfertige Zeilen Ihres Skripts finden, mit denen Sie eine Perl-Anwendung und ihre Abhängigkeiten automatisch installieren könnenDann können Sie ein Ziel installieren, indem Sie nur ein Terminal verwenden (achten Sie darauf, keine andere Sitzung auf demselben Ziel zu verwenden, um sicherzustellen, dass alle Aktionen korrekt protokolliert werden) und den
script
Befehl verwenden.script -t install-perl 2>install-perl.t
Versuchen Sie, keine interaktiven Befehle zu verwenden oder jede Aktion in einer anderen Textdatei auf Ihrem Schreibtisch zu protokollieren.
Von dort aus müssen Sie in der Lage sein, den gesamten Prozess fein nachzuvollziehen
scriptreplay install-perl.t install-perl
und um ein Shell-Skript zu erstellen, selbst durch Filtern der Ergebnisdatei
install-perl
oder einfach der Zieldatei.bash_history
.Zwischenweg Führen Sie eine korrekte Installation durch, bevor Sie sie mit replizieren
tar
. Manchmal ist es einfacher zu handeln, da alle nicht in Debian verpackten Adds beschränkt sind/usr/local
.Oder noch einfacher, wenn
/usr/local
auf einer separaten Partition alle Ziele gemeinsam genutzt und im schreibgeschützten Modus bereitgestellt werden .Endlich mehr Debian : Erstellen Sie aus dieser korrekten Installation (könnte als Master bezeichnet werden ) ein Debian-Paket und installieren Sie es in Ihrem eigenen Unternehmens-Repository (einfaches Verzeichnis in einem internen Web- oder FTP-Server, das die genaue Verzeichnisstruktur und einen öffentlichen Schlüssel enthält, den Sie haben machen.). Verweisen Sie auf dieses Reposit in Ihren Zielen und pflegen Sie Ihren Master korrekt.
Hinweis: Idealerweise müssen Sie ein Paket pro verwendeter Perl-Bibliothek (oder eines pro Bibliotheksfamilie) erstellen. Dies kann jedoch zusätzliche Arbeit verursachen und wird nicht wirklich benötigt, es sei denn, Sie möchten Debian-Paketierer freigeben oder Beiträge dazu leisten.
Nota: Diese letzte Lösung sieht ein wenig übertrieben aus (impliziert etwas Lernen für den Maintener), aber in Ordnung:
quelle
Könnte ich vorschlagen, Perlbrew zu verwenden . Im Allgemeinen habe ich im Laufe der Jahre festgestellt, dass wenn Sie eine Anwendung haben, die von einem bestimmten Interpreter abhängt: Ruby, Perl, Python usw. Es ist normalerweise eine bessere Idee, eine dedizierte Installation des Interpreters für Ihre Anwendung einzurichten, als sich darauf zu verlassen diejenigen, die in einer bestimmten Distribution enthalten sind.
Perlbrew verwaltet eine vollständige Installation von Perl in Ihrem
$HOME
Verzeichnis. Tatsächlich können Sie mehrere Versionen von Perl zusammen mit seinen Bibliotheken haben, damit Sie Tests durchführen können, bevor Sie ein vollständiges Upgrade von einer Version zur nächsten durchführen. Auf diese Weise wird Ihre Anwendung vollständig von Upgrades getrennt, die auftreten können, wenn Sie sich auf die Perl-Version Ihrer Distribution verlassen.Auszug aus der Perlbrew-Webseite:
Die Installation ist ein Kinderspiel
Verwendungszweck
Ressourcen
quelle