Was macht der apt-get install ...
Befehl?
Wenn ich einen apt-get install ...
Befehl eingebe, werden auf dem Bildschirm einige Texte angezeigt, die jedoch nicht genügend Informationen für mich enthalten. Ich möchte wissen, ob eine Datei erstellt / bearbeitet, ein Dienst gestartet oder andere Aktivitäten ausgeführt werden.
Wird .sh
beim apt-get install ...
Ausführen eine Datei ausgeführt ? Wenn ja, wie kann ich den Inhalt dieser sh
Datei sehen?
Der Grund für diese Frage ist, dass ich kürzlich versucht habe, tomcat7 mit zu installieren apt-get install tomcat7
. Alles funktioniert einwandfrei, bis ich tomcat7-admin
(Manager-Webanwendung) installiere , der Server reagiert nicht mehr auf Anfragen. Ich habe es oft versucht, und das passiert immer.
apt
software-installation
TrungDQ
quelle
quelle
apt-get
wird ersetzt durchapt
. Der Ersatz ist noch nicht abgeschlossen, aber es funktioniert fürinstall
,upgrade
unddist-upgrade
unter anderem.Antworten:
Tut meistens
apt-get
die folgenden Dinge:dpkg
zur Installation auf.dpkg
werden:preinst
,postinst
, (undprerm
,postrm
bevor diese, wenn ein Paket aktualisiert wird)Möglicherweise interessieren Sie sich für die Betreuerskripte, die sich normalerweise unter befinden
/var/lib/dpkg/info/<package-name>.{pre,post}{rm,inst}
. Dies sind normalerweise Shell-Skripte, aber es gibt keine strengen Regeln. Zum Beispiel:quelle
Kurz gesagt :
apt-get install
Erledigt alles, was erforderlich ist, damit Ihr System die neu installierte Softwareanwendung erfolgreich ausführen kann.Länger:
Vorbereitungen:
Aus der Manpage :
Diese Pakete werden in einem Repository im Netzwerk gespeichert. So
apt-get
lädt alle benötigten diejenigen in ein temporäres Verzeichnis (/var/cache/apt/archives/
). Sie werden von einem Web- oder FTP-Server heruntergeladen. Sie sind in der sogenannten angegebensources.list
; eine Liste von Repositories. Von da an werden sie nacheinander prozedural installiert.Die ersten sind diejenigen, die keine weiteren Abhängigkeiten haben; Daher muss kein anderes Paket für sie installiert werden. Dadurch haben andere Pakete (die vorher Abhängigkeiten hatten) jetzt keine Abhängigkeiten mehr. Das System führt diesen Vorgang so oft aus, bis die angegebenen Pakete installiert sind.
Jedes Paket wird einer Installationsprozedur unterzogen.
Paketinstallation:
In Debian-basierten Linux-Distributionen wie Ubuntu liegen diese Pakete in einem festgelegten standardisierten Format vor: deb - Das Debian-Binärpaketformat .
Ein solches Paket enthält die Dateien, die auf dem System installiert werden sollen. Sie enthalten auch eine Steuerdatei . Diese Datei enthält Skripte, die das Verpackungssystem in einer bestimmten Situation ausführen soll. die sogenannten Betreuer-Skripte . Diese Skripte sind unterteilt in:
preinst
: vor der Installation der Dateien in die Systemdatei-Hierarchiepostinst
: nach der installationprerm
: vor der Deinstallationpostrm
: nach der DeinstallationEs gibt ein interessantes Bild, das den Ablauf einer Installation eines neuen Pakets zeigt:
Es gibt auch mehr Kontrolldateien, die wichtigsten sind:
control
: Eine Liste der Abhängigkeiten und andere nützliche Informationen zur Identifizierung des Paketsconffiles
: Eine Liste der Konfigurationsdateien (normalerweise die in/etc
)debian-binary
: enthält die deb-package Version, aktuell 2.0md5sums
: Eine Liste der MD5-Summen jeder Datei im Paket zur Überprüfungtemplates
: Eine Datei mit Fehlerbeschreibungen und Dialogen während der Installationquelle
Für das eigentliche Unter-der-Haube- Zeug müssen Sie die Apt-Quelle holen. Ziemlich einfach, wenn Sie Quell-Repositorys aktiviert haben:
Der
apt-get
Befehl selbst lebt incmdline/apt-get.cc
. Es ist mühsam, dies durchzulesen, aber die meistenapt-get
Aktionen sind dort ziemlich ausführlich beschrieben. Die Installation wird jedoch durch eineDoInstall
Funktion abgebildet, in der sie lebtapt-private/private-install.{cc,h}
.Man muss bedenken, dass apt-get nur eine Seite der Medaille ist. kümmert sich um
dpkg
die eigentliche Installation,DoInstall
kennt sich aber nichtdpkg
direkt aus.apt-get
ist eigentlich überraschend paketmanagerunabhängig. Die gesamte Funktionalität wird durch abstrahiertapt-pkg/package-manager.cc
Ich schaue nur kurz, aber selbst dort kann ich nicht sehen, wo dies tatsächlich an den
dpkg
Systemen hängt . Einige davon scheinen automatisch konfiguriert zu sein,apt-pkg/aptconfiguration.cc
aber dies ist ein tiefer Brunnen. Sie könnten Tage damit verbringen, dies zu enträtseln.Die Quelldokumentation ist jedoch gut. Sie könnten schlimmere Dinge tun, als jede Datei durchzulesen und den Header zu lesen, um herauszufinden, was tatsächlich passiert.
quelle
Hier gibt es einige fantastische Antworten, die besser sind als diese kurze, aber etwas, das Sie in Betracht ziehen könnten, um ein besseres Verständnis für die von einem Paketmanager vorgenommenen Änderungen zu erlangen, ist Docker . Sie können die in einem Container vorgenommenen Änderungen mithilfe von unterscheiden
docker diff <container>
und es werden Ihnen alle Änderungen angezeigt. Dies ist besonders nützlich, wenn Sie einen Blick unter die Haube werfen, um zu sehen, wasapt-get install
mit einem System geschieht. Bei einer schnellen Suche erhalten Sie mehrere Ressourcen , die Sie bei der Implementierung unterstützen.quelle