Як я показую дії, які буде виконано при встановленні пакета .deb?


33

Я хотів би мати можливість переглядати сценарії / тригери, пов'язані з пакетом, належним до оновлення, щоб я міг сказати, наприклад, чи призведе це до перезапуску веб-сервера. Я не можу знайти варіант придатності, щоб показати мені це (або apt / dpkg); найкраще, що я можу отримати, - це вміст (файли). Чи є якесь поєднання перемикачів імітаційного / багатослівного / вмісту, яке я пропустив, і це покаже це?

Крім того, якщо пакет призводить до того, що щось відбувається - наприклад, перезапуск сервісу - чого я не хочу робити зараз, чи існує спосіб встановити пакет без запуску деяких чи всіх сценаріїв?


Чому це було проголосовано? Мені це здається розумним питанням (навіть якщо робити щось подібне зазвичай не потрібно).
sleske

1
Биє мене. Ніяких особливо абразивних коментарів чи відповідей, лише випадковий зворотний потік. Наче «звичайно не слід робити» - це те саме, що «ніколи не слід робити за жодних обставин і навіть не навчально». :(
Сем Брайтман

Відповіді:


20

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

Крім того, ви можете зробити сухий пробіг, щоб побачити, що буде робити з dpkg --dry-run:

dpkg --dry-run -i package.deb

Я, мабуть, пропустив ці варіанти, дякую. -Я, мабуть, мало показує - схоже лише на перший рядок (interrobang).
Сем Брайтман

2
Примітка. Файл пакунка повинен бути доступний локально. Завантажте його спочатку за допомогою програми "завантажити здатність <ім'я пакета>".
Martijn Heemels

3
Параметр -e створить DEBIANкаталог з controlфайлом та різними файлами скриптів, які будуть запущені. postinstзазвичай дуже цікавий, оскільки він буде виконаний після успішного встановлення пакета.
dwurf

8

Ні, я не знаю жодного способу зробити це, використовуючи придатність.

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

ar -x package.deb

Потім подивіться control.tar.gz, він містить сценарії.


Було б краще, якби здатність -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.

Однак це все одно зробить установку, чи не так?
Сем Брайтман

Так, правильно на 100%. Це потрібно зробити в іншому (розробці) екземплярі.
estibordo

1

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

Ви можете переглянути лише те, що робив би скрипт, вивчивши його вручну - знову ж таки, жоден «сухий пробіг» не зможе точно сказати, що він буде, а чого не буде робити, лише «Я запускатиму постінст із цими аргументами».

Ось чому ми маємо постановочні та тестові середовища.


Я мав на увазі підмножину сценаріїв, а не частину окремого сценарію. Вибачте, якщо це було не ясно. Я не хочу магії, оскільки знання сценарію та аргументів дозволяє мені оглянути або змінити незручні частини.
Сем Брайтман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.