.. ARU (c) 2018 - 2024, Pavel Priluckiy, Vasiliy Stelmachenok and contributors

   ARU is licensed under a
   Creative Commons Attribution-ShareAlike 4.0 International License.

   You should have received a copy of the license along with this
   work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.

.. index:: pacman, settings
.. _pacman:

******************
Настройка pacman
******************

.. index:: basics, commands, pacman
.. _basic-commands:

=========================================
Основные команды для управления пакетами
=========================================

Ниже в таблице перечислены все основные команды pacman и другие,
которые часто будут встречаться на протяжении всего руководства. Их
лучше запомнить.

.. list-table:: Список служб рекомендуемых к отключению
   :widths: 25 75
   :header-rows: 1

   * - Команда
     - Описание
   * - ``sudo pacman -S название_пакета``
     - Устанавливает *пакет* официальных из репозиториев.
   * - ``sudo pacman -Syu``
     - Выполнить полное обновление системы вместе с синхронизацией баз
       данных репозиториев.
   * - ``sudo pacman -R название_пакета``
     - Удаляет названный пакет из системы
   * - ``sudo pacman -Rsn название_пакета``
     - Удаляет названный пакет из системы, а также все его
       зависимости, если они не требуются другими установленными
       пакетами.
   * - ``sudo pacman -Scc``
     - Выполняет полную очистку кэша пакетов. Подробнее см.
       :ref:`disk-cleanup`.
   * - ``sudo pacman -Rscn $(pacman -Qtdq)``
     - Удаляет из системы все так называемые пакеты "сироты", то есть
       такие, которые не были явно установлены и не являются при этом
       ничьими зависимостями.
   * - ``git clone``
     - Команда для клонирования git репозитория. Активно используется
       при установке AUR пакетов нижеуказанным способом.
   * - ``makepkg -sric``
     - Команда для сборки пакета из соответствующего файла-сценария PKGBUILD.
       Ключ `-i` запросит установку пакета после его сборки, `-s`
       запросит установку сборочных зависимостей, `-r` выполнит их
       автоматическое удаление после окончания сборки пакета, `-c`
       выполнит удаление временных файлов.

.. index:: aur, helpers, packaging
.. _aur-helpers:

-----------------------------
Пару слов об AUR помощниках
-----------------------------

Далее в руководстве все пакеты из AUR_ (Arch Linux User Repository)
будут устанавливаться и собираться, если так можно выразиться,
"дедовским" способом, т.е. через стандартные утилиты git и makepkg,
без применения так называемых "`AUR Помощников`_". Это сделано по
причине их быстрой сменяемости, и тот помощник который был актуален
раньше, может стать устаревшим и никому не нужным. Для примера, так
было с AUR-помощником yaourt. 

Кроме того, согласно Arch Wiki, AUR-помощники официально не
поддерживаются дистрибутивом. А "старый" метод, через обычное
клонирование git репозитория из AUR командой ``git clone`` и сборка
пакета через makepkg, будет работать всегда. Тем не менее, обращаем
ваше внимание, что возможность установки пакетов через AUR помощник
возможна, и вы можете её использовать для всех AUR пакетов, о которых
пойдет речь далее. Подробнее об этом можно почитать `здесь`_.

.. _AUR: https://wiki.archlinux.org/title/Arch_User_Repository
.. _здесь: https://wiki.archlinux.org/index.php/AUR_helpers
.. _`AUR Помощников`: https://wiki.archlinux.org/title/AUR_helpers

.. index:: pacman, key, gpg
.. _gpg-update:

=============================
Обновление ключей Arch Linux
=============================

Обновление ключей необходимо во избежание дальнейших проблем с установкой
пакетов::

  sudo pacman-key --init               # Инициализация
  sudo pacman-key --populate archlinux # Получить ключи из репозитория
  sudo pacman-key --refresh-keys       # Проверить текущие ключи на актуальность
  sudo pacman -Sy archlinux-keyring    # Обновить пакет archlinux-keyring

Данная операция может занять продолжительное время. Для дальнейшего их
автоматического обновления нужно включить службу-таймер, которая
оптимизирует процесс при помощи команды ``archlinux-keyring-wkd-sync``::

    sudo systemctl enable --now archlinux-keyring-wkd-sync.timer

Таким образом ключи будут обновляться раз в неделю.


.. index:: pacman, multilib, wine, steam
.. _multilib-repository:

==================================
Включение 32-битного репозитория
==================================

Убедимся, что конфигурация пакетного менеджера Pacman настроена для получения
доступа к 32-битным зависимостям, нужным в частности для установки Wine и
Steam.

Для этого раскомментируем так называемый *multilib* репозиторий::

  sudo nano /etc/pacman.conf           # Раскоментируйте последние две строчки как на скриншоте

.. image:: images/first-steps-1.png

::

  sudo pacman -Suy                     # Обновление репозиториев и всех программ (пакетов)

.. note:: Если вы не используете Steam или Wine, то можете пропустить
   данный шаг. Также стоит отметить возможность работы Wine без
   установки 32-битных зависимостей, подробнее см.
   :ref:`wine-pure-build`.

.. index:: pacman, mirrorlist, reflector
.. _speed-up-system-updates:

=============================
Ускорение обновления системы
=============================

Утилита Reflector отсортирует доступные репозитории по скорости::

  sudo pacman -S reflector rsync

Если вы из Европейской части России, то советуем всегда использовать зеркала
Германии, так как их больше всего и они имеют оптимальную свежесть/скорость::

  sudo reflector --verbose --country 'Germany' -l 25 --sort rate --save /etc/pacman.d/mirrorlist

Если вы проживаете не на территории Европейской части РФ или в иной стране, то
просто измените *Germany* на *Russia* или ваше государство.

Можно также вручную отредактировать список зеркал, добавив туда зеркала из
постоянно обновляющегося перечня на сайте Arch Linux
(https://archlinux.org/mirrorlist/)::

  sudo nano /etc/pacman.d/mirrorlist # Рекомендуем прописывать зеркала от Яндекса

.. index:: pacman, settings, parallel-downloading
.. _parallel-downloading:

==============================
Параллельная загрузка пакетов
==============================

Начиная с шестой версии pacman поддерживает параллельную загрузку
пакетов. Чтобы её включить отредактируйте ``/etc/pacman.conf``:

.. code-block:: shell
   :caption: ``sudo nano /etc/pacman.conf`` # Раскомментируйте строчку внутри файла

   # Где 4 - количество пакетов для одновременной загрузки
   ParallelDownloads = 4

.. index:: pacman, settings, disable-timeouts
.. _disable_pacman_timeouts:

==========================================
Отключение таймаутов при загрузке пакетов
==========================================

Если вы имеете плохое качество соединения или слабый уровень сигнала,
то при загрузке пакетов при помощи pacman вы могли сталкиваться с
ошибкой превышания лимитов ожидания (таймаутов). Чтобы этого избежать
нужно добавить параметр ``DisableDownloadTimeout`` в ``pacman.conf``
как мы это уже делали ранее с ``ParallelDownloads``:

.. code-block:: shell
   :caption: ``sudo nano /etc/pacman.conf`` # Добавьте строку в секцию [options]

   DisableDownloadTimeout

.. vim:set textwidth=70:
