Что делает apt-get install под капотом?

Что делает команда apt-get install ...?

Когда я вхожу в команду apt-get install ..., на экране появляются некоторые тексты, но для меня не хватает информации. Я хочу знать, если какой-либо файл создан / отредактирован, любая служба запущена и другие действия ...

Есть ли файл .sh, выполняемый при запуске apt-get install ...? Если да, то как я могу увидеть содержимое этого sh файла?

Причина этого вопроса - недавно я попытался установить tomcat7 с apt-get install tomcat7. Все работает нормально, пока я не установил tomcat7-admin (управляющее веб-приложение), сервер не ответил на любой запрос. Я пробовал это много раз, и это всегда случается.

1
задан 26 October 2014 в 02:24

3 ответа

Короче: apt-get install делает все, что необходимо, чтобы ваша система могла успешно выполнить новое установленное программное приложение.

Короче

Предварительные сведения :

Из man-страницы:

Все пакеты, необходимые для пакета (ов), указанного для установки, также будут восстановлены и установлены.

Эти пакеты хранятся в репозитории в сети. Таким образом, apt-get загружает все необходимые во временный каталог (/var/cache/apt/archives/). Они будут загружены с веб-сервера или ftp-сервера. Они указаны в так называемом sources.list; список репозиториев. С этого момента они устанавливаются один за другим процедурно.

Первыми из них являются те, у которых нет никаких дополнительных зависимостей; поэтому для них не требуется устанавливать другой пакет. Благодаря этому другие пакеты (которые ранее имели зависимости) больше не имеют зависимостей.

Каждый пакет проходит процедуру установки.

Предварительные сведения:

В дистрибутивах на базе Debian, таких как Ubuntu, эти пакеты находятся в определенном стандартизованном формате: deb - manpage .

Такой пакет содержит файлы, которые будут установлены в системе. Также они содержат файл управления. Этот файл содержит сценарии, которые система упаковки должна выполнять в конкретной ситуации; так называемые сценарии поддержки. Эти сценарии разделены на:

preinst: перед установкой файлов в системную файловую иерархию postinst: после установки prerm: перед деинсталляцией postrm: после удаления

Есть интересная картина, показывающая процедуру установки нового пакета:

Также есть больше файлов управления, наиболее важными являются следующие :

preinst: перед установкой файлов в системную файловую иерархию conffiles: список файлов конфигурации (обычно это в /etc) [ f6]: после установки md5sums: список md5sums каждого файла в пакете для проверки prerm: перед деинсталляцией
29
ответ дан 24 May 2018 в 02:33

Для фактического содержимого под капотом вам нужно будет захватить источник Apt. Довольно просто, если у вас есть исходные репозитории:

apt-get source apt

Команда apt-get сама живет в cmdline/apt-get.cc. Это боль, которую можно прочитать, но большинство действий apt-get довольно подробно изложены там. Установка, однако, отображается через функцию DoInstall, которая живет в apt-private/private-install.{cc,h}.

Вы должны помнить, что apt-get - это всего лишь одна сторона монеты. dpkg обрабатывает фактическую установку, но DoInstall не знает о dpkg напрямую. apt-get на самом деле на удивление агностик-менеджер пакетов. Все функциональные возможности абстрагированы с помощью apt-pkg/package-manager.cc

. Я просто смотрю кратко, но даже там я не вижу, что это действительно придает системе dpkg. Некоторые из них, кажется, автоконфигурируются через apt-pkg/aptconfiguration.cc, но это глубокий колодец. Вы могли бы потратить несколько дней, распутывая это.

Исходная документация хороша. Вы можете делать хуже, чем просматривать каждый файл и читать заголовок, чтобы понять, что на самом деле происходит.

10
ответ дан 24 May 2018 в 02:33

Здесь есть некоторые фантастические ответы, которые лучше, чем этот короткий, но что-то, что вы можете подумать, чтобы помочь вам лучше понять изменения, сделанные менеджером пакетов, - это Docker. Вы можете различать изменения, сделанные в контейнере, используя docker diff <container>, и он покажет вам все изменения. Это особенно полезно для просмотра под капотом, чтобы увидеть, что apt-get install делает для системы. Быстрый поиск даст вам несколько ресурсов, чтобы помочь реализовать это.

6
ответ дан 24 May 2018 в 02:33
  • 1
    Спасибо за то, что вы указали свою мысль. В контейнере Docker я установил firefox, а на другой вкладке терминала я внимательно следил за разницей контейнера и узнал, что все файлы изменяются в контейнере. Это помогло мне понять более четко. – iabhi 29 December 2017 в 14:53

Другие вопросы по тегам:

Похожие вопросы: