Вариант Ubuntu для китайских пользователей.
Чтобы вывести список всех зависимостей данного пакета, который не устанавливается, вы можете использовать aptitude
aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")'
Для установки зависимостей
aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")' -F "%p" | xargs sudo apt-get install
Примеры
Список зависимостей
% aptitude search '!~i?reverse-depends("^mc$")'
p mc-data - Midnight Commander - a powerful file manager -- data files
Показать только имя пакета
% aptitude search '!~i?reverse-depends("^mc$")' -F "%p"
mc-data
Установите зависимости, например, для mc
% aptitude search '!~i?reverse-depends("^mc$")' -F "%p" | xargs sudo apt-get install
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
mc-data
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1.166 kB of archives.
After this operation, 5.550 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ wily/universe mc-data all 3:4.8.13-3 [1.166 kB]
Fetched 1.166 kB in 0s (1.250 kB/s)
Selecting previously unselected package mc-data.
(Reading database ... 606748 files and directories currently installed.)
Preparing to unpack .../mc-data_3%3a4.8.13-3_all.deb ...
Unpacking mc-data (3:4.8.13-3) ...
Processing triggers for doc-base (0.10.6) ...
Processing 1 added doc-base file...
Registering documents with scrollkeeper...
Processing triggers for man-db (2.7.4-1) ...
Processing triggers for hicolor-icon-theme (0.15-0ubuntu1) ...
Setting up mc-data (3:4.8.13-3) ...
apt-get build-dep
.
– Oskar Austegard
08.12.2019, 08:17
Это установит все пакеты в поле Зависит от и PreDepends :
sudo apt-get install $(apt-cache depends <PACKAGE> | grep Depends | sed "s/.*ends:\ //" | tr '\n' ' ')
По сути, вы запрашиваете все зависимости, отфильтруйте (Pre) Зависит от и отформатируйте вывод для apt-get.
Одной из проблем являются зависимости типа
Depends: pulseaudio
pulseaudio:i386
или виртуальные пакеты типа
Depends: <java6-runtime-headless>
default-jre-headless
openjdk-6-jre-headless
Итак: используйте с осторожностью - это работает не во всех случаях! [1111 ]
Если вы не возражаете против копирования / прошлого, просто смоделируйте установку apt-get с помощью -s
. Таким образом, вы увидите, какие другие пакеты будут установлены и / или обновлены, а затем просто удалите имя пакета, который вы не хотите устанавливать, из этого списка и вуаля.
sudo apt-get install -s <package>
Чтобы установить только зависимости, вы можете использовать apt-cache show package | grep Depends
. Это даст вам список зависимостей:
apt-cache show apache2 | grep Depends
Depends: apache2-mpm-worker (= 2.2.22-6ubuntu5.1) | apache2-mpm-prefork (= 2.2.22-6ubuntu5.1) | apache2-mpm-event (= 2.2.22-6ubuntu5.1) | apache2-mpm-itk (= 2.2.22-6ubuntu5.1), apache2.2-common (= 2.2.22-6ubuntu5.1)
, после чего вы сможете решить, какой пакет установить с помощью apt-get. Также есть aptitude
в интерактивном режиме, вы ищете пакет, выбираете его и затем устанавливаете его зависимости:
Вы можете проанализировать выходные данные моделирования apt install, чтобы сделать это, вот функция bash, чтобы сделать это для вас:
apt-install-depends() {
local pkg="$1"
apt-get install -s "$pkg" \
| sed -n \
-e "/^Inst $pkg /d" \
-e 's/^Inst \([^ ]\+\) .*$/\1/p' \
| xargs apt-get install
}
Использование:
apt-install-depends mopidy