Я хотел бы исключить определенные пакеты из установки apt-get
, то есть установить метапакет без списка определенных пакетов, предпочтительно с одним вызовом apt-get
.
Например, в командной строке Ubuntu 14.04 LTS я устанавливаю среду рабочего стола MATE. В 14.04 LTS MATE не является официальной версией, поэтому я добавляю PPA:
sudo apt-get install software-properties-common # need them for 'apt-add-repository'
sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
sudo apt-get update
затем установка:
sudo apt-get install xorg mate-core --no-install-recommends
Даже без рекомендуемых дополнений, mate-core
устанавливает 3 эмуляторы терминала: xterm
, uxterm
и mate-terminal
, последний недостаток соответствующих шрифтов в то время как установлено в этой минимальной конфигурации.
Предположим, я решил, что 3 терминальных программ было бы слишком много, и я хотел бы установить xorg
и mate-core
без, xterm
и mate-terminal
. я мог бы сделать
sudo apt-get install xorg mate-core --no-install-recommends
sudo apt-get purge xterm mate-terminal
но возможно ли сделать это за один раз? Есть ли такой синтаксис, как
sudo apt-get install xorg mate-core --without xterm mate-terminal
источник
xterm
иmate-terminal
? В 15.04mate-terminal
это жесткая зависимостьmate-desktop-environment-core
, которая является жесткой зависимостьюmate-core
, и я предполагаю, что PPAmate-terminal
не предоставляетx-terminal-emulator
(что делает пакет в 15.04).XTerm
и, возможно,UXTerm
(я не уверен, какое имя пакета для последнего)sudo apt-get install xorg mate-core --without xterm mate-terminal
aptitude
(или какой-либо графический менеджер пакетов), вы можете (де) выбрать, какие пакеты устанавливать, и если один из них приведет к нарушению зависимости, объяснение будет (как правило).Ответы:
Таким образом, мат-ядро зависит от
mate-desktop-environment-core
которых , в свою очередь , зависит отmate-terminal
. Зависит не может быть нарушена легко. Такжеapt-get
ниaptitude
поддерживает--without
или--exclude
вариант и «держит» пакеты не поможет:Конечно, можно использовать
dpkg --force-depends
для установки пакета, но это, возможно, не то, что вы хотите.Можно было бы заполнить
Depends:
флаг фиктивной посылкой:Теперь
mate-core
должен быть в состоянии установить безmate-terminal
. Повторите то же самое для других пакетов, которые будут исключены.По общему признанию это - большое усилие, и
--without
выбор был бы хорош. Может быть, можно открыть ошибку списка желаний, чтобы обеспечить такую функциональность в будущем, но я почему-то сомневаюсь, что это будет реализовано.Однако более реалистичным вариантом было бы обратиться к владельцу PPA с просьбой предоставить другой метапакет для MATE с меньшим
Depends
набором пакетов.источник
Если вы используете
aptitude
графический менеджер пакетов (Synaptic и т. Д.), То вы можете отменить выбор того, какие пакеты должны быть установлены, если это не вызывает проблемы с зависимостями.В случае
aptitude
перед установкой пакета (в графическом представлении) будет показано, почему устанавливается зависимый пакет. В моем случае я использую KDE, поэтому у меня нет пакетов MATE. Если я скажу это установитьmate-core
, я получу следующее:Обратите внимание, что
mate-core
помечен как установленный вручную, и многие другие пакеты устанавливаются. Дляmate-terminal
пакета в нижней части написано: «mate-desktop-environment-core
[Universe] зависит отmate-terminal
(> = 1.0.0)». Переходя к записи дляmate-desktop-environment-core
,mate-core
msgstr " [вселенная] зависит отmate-desktop-environment-core
(> = 1.8.0 + 9)". Вот почемуmate-terminal
устанавливается.Если вместо этого устанавливается рекомендуемый пакет (а не что-то, что зависит от другого пакета),
aptitude
вам сообщат об этом, и вы можете сказать ему не устанавливать этот пакет без каких-либо сломанных зависимостей. Например:источник
Другой метод
Загрузите основной пакет, который зависит от другого. Распакуйте пакет, удалите нежелательные зависимости, перепакуйте его. Теперь откройте новый пакет с помощью установщика пакета gdebi . Это установит новые зависимости для вас.
источник
Для
apt
таких сценариев существует специальный синтаксис: добавление дефиса (знак минуса) к пакету удалит / не установит его, поэтому наиболее близкимsudo apt-get install xorg mate-core --without xterm mate-terminal
является вашsudo apt-get install xorg mate-core xterm- mate-terminal-
(замечен на /ubuntu//a/1011439/182923 )Это не поможет в этом случае, так как вы столкнетесь с
но, похоже, это ответ на ваш конкретный вопрос. Так что для справки этот кросс-пост.
источник