Сделать пакет явно установленным в pacman

32

У меня есть пакет, который установлен на моем ПК как зависимость от другого пакета.

Я хотел бы, чтобы пакет был установлен явно, но без его переустановки или загрузки каких-либо файлов.

Это возможно?

обновление :

У меня нет кэшированных пакетов /var/cache/pacman/pkg, что является одной из причин, по которой я хочу изменить детали пакета без переустановки.

Даже если бы я кэшировал пакеты, запуск pacman -S означал бы, что весь процесс установки запущен, чего я также хочу избежать.

Стефан
источник

Ответы:

49

Я нашел ответ на Arch Linux Forums

Начиная с pacman 3.4 вы можете использовать

# pacman -D

изменить только базу данных. Так:

# pacman -D --asexplicit <pkgs>

сделаю <pkgs> явно установленный .

Стефан
источник
6

pacman -Sимеет --asexplicitфлаг, который должен делать то, что вы хотите.

Например:

> pacman -Qi mutagen            
...
Install Reason : Installed as a dependency for another package

> pacman -S --asexplicit mutagen
warning: mutagen-1.20-1 is up to date -- reinstalling
resolving dependencies...
looking for inter-conflicts...

Targets (1): mutagen-1.20-1

Total Download Size:    0.00 MB
Total Installed Size:   0.82 MB
...

> pacman -Qi mutagen
...
Install Reason : Explicitly installed

Вы можете видеть, что ничего не было загружено, поскольку оно уже установлено локально. Он просто перевернул поле «Установить причину».

Pacman выполняет различные --helpоперации в зависимости от операции ( -S, -Rи т. Д.). Поэтому pacman -S --helpперечисляет --asexplicitфлаг как один из доступных флагов. --asdepsдоступно также.

wafuqua
источник
пожалуйста, ознакомьтесь с изменениями, которые я внес в вопрос
Стефан
1

Для установки, только если она еще не установлена, вы можете использовать флаг --needed:

pacman -S mutagen
pacman -S --needed mutagen clone

Пропустит переустановку мутагена, если он уже установлен первой командой. И вы также получите хорошую информацию об этом

totedati
источник