Как обновить Arch Linux? Вы выполняете команду sudo pacman -Syu.
Как установить пакет в Arch Linux? Вы выполняете команду sudo pacman -Syu имя_пакета.
Что может заставить вас задуматься, зачем вам нужно обновление системы при установке нового пакета? Что делают эти S, y и u? Позвольте мне объяснить вам эти вещи.
Что делает pacman -Syu?
Проще говоря, pacman -Syu обновляет все установленные пакеты в вашем дистрибутиве Linux на базе Arch, если они имеют более новую версию. Здесь -S означает sync или install, y обновляет кэш локальной Базы данных пакетов с удаленным репозиторием, а u составляет список всех установленных пакетов, которые могут быть обновлены путем обращения к кэшу локальной базы данных пакетов и получения актуальных пакетов из удаленного репозитория.
Понимание команды pacman -Syu
менеджер пакетов Pacman работает практически одинаково. Есть удаленный репозиторий, в котором хранятся пакеты, локальная база данных пакетов, которая обычно хранит информацию о пакетах, взаимодействуя с удаленным репозиторием. pacman – это интерфейс командной строки, который использует эту структуру для управления пакетами на вашем Arch Linux.
-S (заглавная буква S) – это основная опция, а y и u – поддерживающие ее «под-опции».
S означает sync, но вы можете думать об этом как об «установке». Она синхронизирует вашу систему Arch Linux с удаленным репозиторием для данного пакета. Это означает, что и репозиторий, и локальная система Arch будут синхронизированы (в это время) для данного пакета. Это еще один способ сказать, что пакет устанавливается в систему.
Вы не можете просто запустить pacman -S и ожидать, что он синхронизирует (установит) все пакеты из репозиториев на локальной системе. Это будет катастрофой, если ваша система установит все 40 000 пакетов из удаленных репозиториев.
Именно поэтому вам нужно указать цель (имена пакетов) только с помощью опции -S. В противном случае вы увидите эту ошибку.
sudo pacman -S error: no targets specified (use -h for help)
Если вы укажете имя пакета или группы, это приведет к «установке» пакета в вашу систему.
В Sync есть дополнительные опции. Вероятно, вы будете часто использовать sudo pacman -Syu.
Опции y и u являются «подвариантами» опции -S. Вы не можете использовать их самостоятельно, как pacman -yu:
sudo pacman -yu error: invalid option '-y'
Хотя порядок S, y и u не имеет значения, должно быть S с y и u.
Подвариант y из S обновляет локальный кэш-пакет БД с удаленным репозиторием. Затем u под-опция для sysupgrade, которая обращается к локальному кэшу пакетов, чтобы составить список всех установленных пакетов, которые могут быть обновлены до более новой версии.
После завершения работы этих двух под-опций, S (sync) получит пакеты (новые версии) из удаленного хранилища и установит (обновит существующие) их.
Зачем всегда запускать «pacman -Syu» даже при установке одного пакета?
Вы заметите, что при установке пакетов Arch часто упоминается команда pacman в следующем формате:
sudo pacman -Syu package_name
И вы можете задаться вопросом, какой смысл обновлять все установленные пакеты. Почему бы просто не выполнить команду sudo pacman -Sy package_name, которая будет быстрее, поскольку установит только нужный вам пакет, а не обновит другие пакеты, имеющие более новые версии?
Для этого есть довольно веская причина. Это помогает избежать проблем с зависимостями, которые могут возникнуть в противном случае.
Мне понравилась аналогия в этой дискуссии на Reddit, и я собираюсь использовать ее и здесь.
Представьте себе старомодный бумажный каталог, который Люди получали по почте несколько десятилетий назад. Если вы получали каталог по почте из магазина, в нем был список всего, что продавалось в магазине, и текущие цены. База данных пакета Arch похожа на этот каталог. Каталог, который вы держите при себе, – это кэш базы данных пакетов в вашей системе.
Пакеты похожи на реальные товары, которые вы покупаете через каталог. Вы находите в каталоге нужный вам номер товара, делаете заказ, и вам доставляют нужный товар.
Представьте, что вы только что выполнили команду pacman -Sy. Это эквивалентно получению последнего каталога.
Теперь, допустим, у вас есть iPhone 14 (устаревший комплект), и вы заказываете зарядное устройство для iPhone из нового каталога. Когда новое зарядное устройство придет, у вас возникнут проблемы, потому что iPhone теперь использует порт USB type C вместо старого порта Lightning. Возникает конфликт.
Если бы вы выполнили команду pacman -Syu, вы бы заказали и новый iPhone, и правильное зарядное устройство к нему.
(Не воспринимайте это буквально и не начинайте комментировать, что заказать новый телефон вместо старого зарядного устройства будет финансово глупым решением. Это просто для примера )
Заключение
Не знаю, интересовались вы этим вопросом или нет, но я надеюсь, что вы стали немного лучше понимать логику, лежащую в основе знаменитой опции -Syu команды pacman. На странице man всегда можно прочитать официальное объяснение каждой опции и ее использования.
Вы всегда можете изучить больше опций команды pacman и посмотреть, что она может сделать для регулярного управления пакетами в Arch Linux.




Комментарии (0)