Как показать действия, которые предпримет установка пакета .deb?

33

Я хотел бы иметь возможность просматривать сценарии / триггеры, связанные с пакетом для обновления, чтобы я мог сказать, например, приведет ли это к перезапуску веб-сервера. Я не могу найти опцию aptitude, чтобы показать мне это (или apt / dpkg); лучшее, что я могу получить - это содержимое (файлы). Есть ли какая-то комбинация переключателей имитации / подробности / содержимого, которые я пропустил, которые покажут это?

Кроме того, если из-за пакета что-то происходит - например, перезапуск службы - чего я не хочу прямо сейчас, есть ли способ установить пакет без запуска некоторых или всех сценариев?

Сэм Брайтман
источник
Почему это было отклонено? Мне кажется, что это разумный вопрос (хотя делать что-то подобное обычно не нужно).
Слеск
1
Бьет меня Никаких особо абразивных комментариев или ответов, просто случайное понижение. Как будто «обычно не следует делать» - это то же самое, что «никогда не следует делать ни при каких обстоятельствах и даже не в образовательных целях». :(
Сэм Брайтман

Ответы:

20

Вы можете распечатать контрольный файл и некоторую другую информацию с помощью dpkg -I package.debили использовать dpkg -e package.debдля извлечения только контрольных информационных файлов.

Также вы можете выполнить пробный прогон, чтобы увидеть, что dpkg будет делать с --dry-run:

dpkg --dry-run -i package.deb
Микаэль С
источник
Должно быть, я пропустил эти варианты, спасибо. -Я, кажется, не показываю много, хотя - выглядит только в первой строке (interrobang).
Сэм Брайтман
2
Примечание. Файл пакета должен быть доступен локально. Сначала загрузите его через «aptitude download <packagename>».
Мартин Хеемельс
3
Опция -e создаст DEBIANкаталог с controlфайлом и различными файлами скриптов, которые будут запущены. postinstобычно очень интересно, так как будет выполнено после успешной установки пакета.
dwurf
8

Нет, я не знаю, как это сделать, используя aptitude.

Вы можете посмотреть на сценарии напрямую; Сценарии, которые запускаются во время обновления, содержатся в пакете. Распакуйте deb, используя ar:

ar -x package.deb

Затем посмотрите control.tar.gz, он содержит сценарии.

sleske
источник
Было бы лучше, если бы aptitude -s с некоторыми опциями многословия действительно показывал сценарии, которые он будет выполнять для всего обновления. По сути, это то, о чем я просил, но я думаю, что ответ Микаэля несколько проще.
Сэм Брайтман
2

Существует также --debugопция dpkg, как вsudo dpkg --debug=72200 -i package.deb

Есть несколько доступных опций для подробного вывода, и они могут быть объединены.

Вы можете увидеть все возможные варианты, выполнив: dpkg --debug=help.

pi@kaldi:~ $ dpkg --debug=help
dpkg debugging option, --debug=<octal> or -D<octal>:

 Number  Ref. in source   Description
      1  general          Generally helpful progress information
      2  scripts          Invocation and status of maintainer scripts
     10  eachfile         Output for each file processed
    100  eachfiledetail   Lots of output for each file processed
     20  conff            Output for each configuration file
    200  conffdetail      Lots of output for each configuration file
     40  depcon           Dependencies and conflicts
    400  depcondetail     Lots of dependencies/conflicts output
  10000  triggers         Trigger activation and processing
  20000  triggersdetail   Lots of output regarding triggers
  40000  triggersstupid   Silly amounts of output regarding triggers
   1000  veryverbose      Lots of drivel about eg the dpkg/info directory
   2000  stupidlyverbose  Insane amounts of drivel

Debugging options can be mixed using bitwise-or.
Note that the meanings and values are subject to change.
estibordo
источник
Это все равно будет делать установку, не так ли?
Сэм Брайтман
Да, на 100% правы. Это должно быть сделано в другом (разрабатываемом) экземпляре.
Estibordo
1

Нет, вы не можете запустить часть сценария сопровождающего, нет никаких ловушек, чтобы это произошло.

Вы можете только увидеть, что будет делать сценарий, изучив его вручную - опять же, «пробный запуск» не может точно сказать вам, что он будет делать, а что не будет делать, только «я буду запускать postinst с этими аргументами».

По этим причинам у нас есть промежуточные и тестовые среды.

romble
источник
Я имел в виду подмножество сценариев, а не часть отдельного сценария. Извините, если это не ясно. Я не хочу магии, зная сценарий и аргументы, я могу вручную проверять или модифицировать неудобные части.
Сэм Брайтман