Co robi apt-get install ...
polecenie?
Kiedy wprowadzam apt-get install ...
polecenie, na ekranie pojawiają się pewne teksty, ale to dla mnie za mało informacji. Chcę wiedzieć, czy jakikolwiek plik jest tworzony / edytowany, uruchamiana jest jakakolwiek usługa i inne działania ...
Czy podczas .sh
uruchamiania jest wykonywany jakiś plik apt-get install ...
? Jeśli tak, w jaki sposób mogę zobaczyć zawartość tego sh
pliku?
Powodem tego pytania jest to, że ostatnio próbowałem zainstalować tomcat7 apt-get install tomcat7
. Wszystko działa dobrze, dopóki nie zainstaluję tomcat7-admin
(menedżer aplikacji sieci Web), serwer przestał odpowiadać na wszelkie żądania. Próbowałem tego wiele razy i zawsze tak się dzieje.
apt
software-installation
TrungDQ
źródło
źródło
apt-get
zastępuje sięapt
. Wymiana nie jest jeszcze kompletna, ale to działa nainstall
,upgrade
idist-upgrade
wielu innych.Odpowiedzi:
Przeważnie
apt-get
robi następujące rzeczy:dpkg
go zainstalować.dpkg
będzie:preinst
,postinst
, (iprerm
,postrm
zanim te, jeśli opakowanie jest uaktualniony)Możesz być zainteresowany skryptami opiekuna, które zwykle znajdują się w
/var/lib/dpkg/info/<package-name>.{pre,post}{rm,inst}
. Zwykle są to skrypty powłoki, ale nie ma twardej reguły. Na przykład:źródło
W skrócie :
apt-get install
robi wszystko, co potrzebne, aby system mógł pomyślnie uruchomić nową zainstalowaną aplikację.Dłużej:
Czynności wstępne:
Z strony podręcznika :
Te pakiety są przechowywane w repozytorium w sieci. Tak więc
apt-get
pobiera wszystkie potrzebne do katalogu tymczasowego (/var/cache/apt/archives/
). Zostaną pobrane z serwera WWW lub ftp. Są one określone w tzwsources.list
; lista repozytoriów. Od tego momentu są instalowane jeden po drugim proceduralnie.Pierwszymi są te, które nie mają dalszych zależności; więc nie trzeba dla nich instalować żadnego innego pakietu. Dzięki temu inne pakiety (które wcześniej miały zależności) nie mają już żadnych zależności. System cały czas wykonuje ten proces, dopóki nie zostaną zainstalowane określone pakiety.
Każda paczka przechodzi procedurę instalacyjną.
Instalacja pakietu:
W dystrybucjach Linuksa opartych na Debianie, jako Ubuntu, pakiety te mają określony standardowy format o nazwie: deb - Format pakietu binarnego Debiana .
Taki pakiet zawiera pliki do zainstalowania w systemie. Zawierają także plik kontrolny . Ten plik zawiera skrypty, które system pakujący powinien wykonać w określonej sytuacji; tak zwane skrypty opiekuna . Te skrypty są podzielone na:
preinst
: przed instalacją plików w systemowej hierarchii plikówpostinst
: po instalacjiprerm
: przed odinstalowaniempostrm
: po odinstalowaniuJest interesujące zdjęcie, pokazujące procedurę instalacji nowego pakietu:
Jest też więcej plików kontrolnych, najważniejsze to:
control
: Lista zależności i inne przydatne informacje umożliwiające identyfikację pakietuconffiles
: Lista plików konfiguracyjnych (zwykle tych w/etc
)debian-binary
: zawiera wersję pakietu deb, obecnie 2.0md5sums
: Lista sum md5 każdego pliku w pakiecie do weryfikacjitemplates
: Plik z opisami błędów i oknami dialogowymi podczas instalacjiźródło
Aby uzyskać rzeczywiste rzeczy pod maską , musisz pobrać źródło Apt. Dość proste, jeśli masz włączone repozytoria źródłowe:
Samo
apt-get
polecenie mieszka wcmdline/apt-get.cc
. Czytanie jest trudne, ale większośćapt-get
działań została tam opisana dość obszernie. Instalacja jest jednak mapowana za pomocąDoInstall
funkcji, w której żyjeapt-private/private-install.{cc,h}
.Musisz pamiętać, że apt-get to tylko jedna strona medalu.
dpkg
obsługuje faktyczną instalację, aleDoInstall
nie wie o niejdpkg
bezpośrednio.apt-get
jest zadziwiająco agnostyczny dla menedżera pakietów. Cała funkcjonalność jest abstrakcyjnaapt-pkg/package-manager.cc
Patrzę tylko krótko, ale nawet tam nie widzę, gdzie to właściwie łączy się z
dpkg
systemami. Niektóre z nich wydają się być konfigurowane automatycznie,apt-pkg/aptconfiguration.cc
ale jest to głęboka studnia. Mógłbyś spędzić kilka dni na rozwikłaniu tego.Dokumentacja źródłowa jest jednak dobra. Możesz zrobić gorsze rzeczy niż przejrzeć każdy plik i przeczytać nagłówek, aby dowiedzieć się, co się właściwie dzieje.
źródło
Jest tu kilka fantastycznych odpowiedzi, które są lepsze niż ta krótka, ale czymś, co możesz rozważyć, aby pomóc ci lepiej zrozumieć zmiany wprowadzone przez menedżera pakietów, to Docker . Możesz różnicować zmiany wprowadzone w kontenerze za pomocą,
docker diff <container>
a zobaczysz wszystkie zmiany. Jest to szczególnie przydatne, gdy zajrzysz pod maskę i zobaczysz, coapt-get install
robi system. Szybkie wyszukiwanie da ci kilka zasobów, które pomogą Ci to wdrożyć.źródło