3

Есть ли способ узнать, как пакет был установлен в Debian?

Т.е. посмотреть, был ли он установлен вручную или какой пакет вытащил его как зависимость.

Эта информация должна быть где-то доступна (например, чтобы apt-get autoremove работал), но я не уверен, как она может отображаться для отдельных пакетов.

2 ответа2

5

Например, используя Aptitude:

$ aptitude show gimp linux-headers-3.2.0-2-686-pae 
Package: gimp                            
New: yes
State: installed
Automatically installed: no
<snip>

Package: linux-headers-3.2.0-2-686-pae
New: yes
State: installed
Automatically installed: yes
<snip>

Это показывает два примера пакетов в моей системе. Поле « Автоматически установлено » показывает, установлено ли оно вручную или перетаскивается зависимостью.

Эта информация доступна APT, как вы подозреваете. В зависимости от того, какой инструмент вы хотите использовать, он будет найден в разных местах, но, скорее всего, он будет называться "Автоматически установлен" со значением «Да / Нет».


Информация о конкретной упаковке, которая перетащилась в конкретную упаковку

Вы можете использовать apt-rdepends (доступно в основных репозиториях), чтобы перечислить прямые или обратные зависимости для пакета. Пример:

$ apt-rdepends -rp --state-follow=Installed \
  --state-show=Installed linux-headers-3.2.0-3-686-pae

Reading package lists... Done
Building dependency tree       
Reading state information... Done
linux-headers-3.2.0-3-686-pae
  Reverse Depends: linux-headers-686-pae (3.2+45) [Installed]
linux-headers-686-pae

(Первые две строки представляют собой одну команду, разделенную для удобства чтения).

Это показывает, что linux-headers-3.2.0-3-686-pae был перетащен linux-headers-686-pae , который, в свою очередь, не имеет каких-либо обратных зависимостей в моей системе. Посмотрите на man apt-rdepends для доступных переключателей.


Обновление: чтобы немного расширить: не очень полезно точно знать , какой пакет A перетаскивается в пакет B, поскольку с тех пор мог быть установлен пакет C, который также зависит от B, и, следовательно, удаление A не должно / не приведет к удалению B. apt-rdepends будет в этом случае перечислять, что A и C зависят от B, но не указывает, были ли A или C изначально ответственны за установку B.

3

Использование способностей я считаю , используя свою работу , why очень полезно.

Например, я хочу выяснить, почему у меня есть screen в моей системе:

$ aptitude why screen
i   byobu Depends screen

Но почему byobu?

$ aptitude why byobu
Unable to find a reason to install byobu.

byobu был установлен вручную.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .