.. ARU (c) 2018 - 2025, 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/>.

.. _software:

*********
Выбор ПО
*********

Говоря об оптимизации системы невозможно не затронуть такую тему, как
выбор используемых программ. Несмотря на то, что это относится к
субъективным предпочтениям каждого пользователя, это оказывает прямое
влияние на производительность системы, так как все программы
отличаются друг от друга такими объективными показателями как
потребление памяти, использование процессора, диска и других ресурсов
системы. Иными словами, от того насколько оптимизированы ваши
программы зависит общая производительность всей системы, поэтому в
данном разделе автор предложит ряд рекомендаций о том, какое ПО
следует выбрать для тех или иных задач с учётом их нетребовательности
к ресурсам вашего ПК.

.. index:: installation, packages, basic, grub
.. _mandatory-packages:

================================
Обязательные к установке пакеты
================================

Эта группа пакетов **обязательна** к установке. Она содержит ряд
полезных инструментов без которых вы не сможете установить множество
пакетов из AUR, включая все те, о которых пойдет речь далее в
руководстве. И так как в начале руководства мы условились пользоваться
"дедовским" методом установки AUR пакетов, дополнительно установим
``git`` для скачивания PKGBUILD и текстовый редактор ``nano`` для
редактирования конфигурационных файлов (вы так же в праве использовать
любой другой)::

 sudo pacman -S base-devel git nano

.. index:: installation, packages, archives
.. _archive-packages:

-----------------------------
Пакеты для работы с архивами
-----------------------------

В Linux есть поддержка целого зоопарка различных архивов и алгоритмов
их сжатия, но чтобы все они работали правильно, необходима установка
дополнительных пакетов::

  # zip, rar, ace, rzip/lcma/lzo, iso
  sudo pacman -S lrzip unrar unzip unace p7zip squashfs-tools

Но они предоставляют только интерфейс командной строки для работы с
архивами, потому стоит так же поставить графическую обертку с
минимальным набором зависимостей::

  sudo pacman -S file-roller

.. index:: installation, packages, applications
.. _applications-packages:

---------------------
Набор прикладного ПО
---------------------

Далее мы установим набор джентельмена в виде браузера (chromium),
плеера (VLC) и торрент-клиента (qbittorrent)::

  sudo pacman -S qbittorrent chromium vlc

Банально, но всё же.

Вдобавок можно отметить легковесный файловый менеджер PCManFM::

  sudo pacman -S pcmanfm-gtk3 gvfs gvfs-mtp

.. warning:: Пакеты начинающиеся с ``gvfs`` нужны для автомонтирования
   различных устройств (например Android смартфонов) и интеграции с
   различными сетевыми хранилищами (Google Disk/SAMBA и т.д.)

Итак, мы установили набор джентльмена и парочку программ, что
понадобятся нам в дальнейшем. Но если вас не устраивает тот или иной
компонент, вы всегда можете найти любой нужный вам пакет по адресу
https://www.archlinux.org/packages/. Если вы не смогли найти нужную
вам программу в официальных репозиториях, вы всегда можете найти всё
что душе угодно в AUR (по адресу https://aur.archlinux.org/packages/).


.. index:: installation, packages, steam
.. _steam-installation:

----------------
Установка Steam
----------------

Если в предыдущем разделе вы активировали в настройках pacman Multilib
репозиторий, то из него можно установить официальный клиент Steam.
Однако, здесь стоит упомянуть о сразу нескольких доступных версиях.

Существует просто steam_ - он содержит в себе клиент Steam с
собственными копиями библиотек к нему. ::

  sudo pacman -S steam ttf-liberation

А есть steam-native-runtime, который использует локально установленные
в систему библиотеки. Разница в том, что последний будет использовать
всегда более свежие версии библиотек, из-за чего опыт работы клиента и
нативных игр Linux может как улучшиться, так и наоборот сломать
какой-либо функционал. Вдобавок, steam-native-runtime_ требует большее
количество 32-битных зависимостей. ::

  sudo pacman -S steam-native-runtime ttf-liberation

Автор рекомендует пользоваться обычной версией, хотя и при
использовании steam-native-runtime_ каких-либо серьёзных проблем
замечено не было.

.. _steam: https://archlinux.org/packages/multilib/x86_64/steam/
.. _steam-native-runtime: https://archlinux.org/packages/multilib/x86_64/steam-native-runtime/

.. index:: useful-programs, mouse, settings
.. _paper:

------
Piper
------

Позволяет выполнить более тонкую настройку вашей мышки, в том числе
переназначить DPI, настроить подсветку и собственные действия на
дополнительные кнопки.

.. image:: https://raw.githubusercontent.com/libratbag/piper/wiki/screenshots/piper-resolutionpage.png

**Установка** ::

  sudo pacman -S piper

.. attention:: Поддерживаются только некоторые из моделей мышек от
   Logitech/Razer/Steelseries. Полный список поддерживаемых устройств
   вы можете найти по ссылке:

   https://github.com/libratbag/libratbag/wiki/Devices
.. index:: installation, drivers, nvidia, amd, intel
.. _drivers-installation:

------------------------------------------------
Установка актуальных драйверов для видеокарты
------------------------------------------------

В установке драйверов для Linux-систем нет ничего сложного, главное
просто учитывать, что от свежести ядра и версии драйвера, будет
зависеть получите ли вы чёрный экран смерти или нет (Шутка).

И да, **устанавливайте драйвера ТОЛЬКО через пакетный менеджер вашего
дистрибутива!**

Забудьте про скачивание драйвера с сайта NVIDIA/AMD, это поможет вам
избежать кучу проблем в дальнейшем.

NVIDIA
------

Рекомендуется использовать модули драйвера из пакета ``nvidia-dkms``,
которые при помощи системы динамических модулей DKMS автоматически
собируться под нужное ядро::

  sudo pacman -S nvidia-dkms nvidia-utils lib32-nvidia-utils nvidia-settings lib32-opencl-nvidia opencl-nvidia libxnvctrl vulkan-icd-loader lib32-vulkan-icd-loader libva-nvidia-driver

.. warning:: Для правильной работы DKMS требуется также установить
   заголовки текущей версии ядра. Например, для стандартного ядра
   ``linux`` заголовки требуемые для сборки модулей находится внутри
   пакета ``linux-headers``.

С недавних пор помимо закрытых модулей драйвера NVIDIA также
предоставляет версию модулей с открытым исходным кодом, которые
рекомендуются к использованию начиная с ``560`` ветки драйвера. Их
установка практически ничем не отличается от закрытого варианта кроме
как заменой пакета ``nvidia-dkms`` на ``nvidia-open-dkms``::

  sudo pacman -S nvidia-open-dkms nvidia-utils lib32-nvidia-utils nvidia-settings lib32-opencl-nvidia opencl-nvidia libxnvctrl lib32-vulkan-icd-loader libva-nvidia-driver

Перед установкой драйвера рекомендуется отключить *"Secure Boot"* в
UEFI, ибо из-за этого модули драйвера могут не загрузиться.


NVIDIA (470xx)
---------------

Драйвер NVIDIA для Linux имеет несколько веток с долгосрочной поддержкой, часть
из которых, как например nvidia-470xx-dkms, оставлены для сохранения
совместимости со старыми видеокартами, в данном случае с поколением GPU Kepler.
Если ваша видеокарта относится именно к этому поколению, то вам нужно
установить не последний драйвер выше, а данную версию из AUR::


  git clone https://aur.archlinux.org/nvidia-470xx-utils
  cd nvidia-470xx-utils
  makepkg -sric

  sudo pacman -S lib32-vulkan-icd-loader

  # 32-битные библиотеки (необходимо для запуска игр через Wine/Steam)
  git clone https://aur.archlinux.org/lib32-nvidia-470xx-utils
  cd lib32-nvidia-470xx-utils
  makepkg -sric



Nouveau (*Только для старых видеокарт*)
------------------------------------------

Для старых видеокарт Nvidia (ниже GeForce 600) рекомендуется использовать
свободную альтернативу драйвера NVIDIA — Nouveau, входящую в состав Mesa. Она
имеет официальную поддержку и обновления в отличии от старых версий закрытого
драйвера NVIDIA (340, 390) и отлично справляется с 2D ускорением. Вдобавок,
Nouveau хорошо работает с Wayland::

  sudo pacman -S mesa lib32-mesa vulkan-nouveau lib32-vulkan-nouveau opencl-rusticl-mesa lib32-opencl-rusticl-mesa

AMD
----
::

  sudo pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-mesa-layers opencl-rusticl-mesa lib32-opencl-rusticl-mesa

Intel
-----
::

  sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel opencl-rusticl-mesa lib32-opencl-rusticl-mesa

.. warning:: Автор не рекомендует выполнять установку морально
   устаревших DDX драйверов, как например ``xf86-video-intel``, так
   как они в большинстве своем заброшены и не получают никаких
   исправлений.  Вместо этого используйте DDX драйвер ``modesetting``,
   который поставляется вместе с пакетом ``xorg-server``. Он
   использует аппартное ускорение на базе glamor и Mesa. Обратите
   внимание, что последние исправления и новые возможности (Как,
   например, опция ``"Tearfree"``) доступны только в Git версии,
   поэтому имеет смысл установить ``xorg-server-git`` из AUR.

.. index:: cleanup, gnome, kde
.. _remove-garbage-packages:

==========================
Удаление лишних пакетов
==========================

К сожалению, если во время установки системы вы выполняли установку
KDE Plasma или GNOME при помощи одноименных групп пакетов, то скорее
всего вы установили себе в систему некоторое количество лишних
пакетов, таких как например ``gnome-software`` или ``discover``,
которые крайне не рекомендуется использовать в Arch Linux взамен
простого использования ``pacman``. Чтобы не выполнять переустановку
всех пакетов, связанных с рабочим окружением, можно выполнить удаление
лишних пакетов при помощи следующих команд в зависимости от
используемого окружения:

.. tab-set::

   .. tab-item:: GNOME

      ::

         sudo pacman -D --asdeps $(pacman -Qqg gnome)
         sudo pacman -D --asexplicit gnome-shell mutter gdm gnome-control-center gnome-console nautilus gnome-session gnome-settings-daemon gvfs gvfs-mtp
         sudo pacman -Rsn $(pacman -Qqgdtt gnome)

   .. tab-item:: KDE Plasma

      ::

         sudo pacman -D --asdeps $(pacman -Qqg plasma)
         sudo pacman -D --asexplicit plasma-desktop breeze-gtk kde-gtk-config plasma-pa bluedevil sddm sddm-kcm plasma-nm
         sudo pacman -Rsn $(pacman -Qqgdtt plasma)

Если вас пугает большой набор непонятных команд - не переживайте, все
что здесь происходит, это помечание всех пакетов из группы пакетов
``gnome`` или ``plasma`` соответственно как неявно установленных, то
есть подтянутых в качестве зависимостей, после чего идет изменение
причины установки базовых пакетов окружения уже как явно
установленных, что позволяет разделить действительно нужные и мусорные
пакеты по причине их установки и удалить все лишние пакеты. Конечно,
всегда думайте головой и проверяйте не подтянулось ли что-то для вас
нужное, однако данный способ гарантирует, что базовые пакеты,
необходимые для работы окружения, не будут удалены, поэтому вы всегда
сможете доустановить нужные вам программы в соответствии со своими
предпочтениями.

Если вы не используйте GNOME или KDE Plasma, то вы можете пропустить
данный шаг, так как для всех остальных рабочих окружений, таких как
Xfce, MATE и LXQt, в соответствующей им группе пакетов есть лишь
предельный минимум того, что действительно нужно.

.. index:: cpu, intel, amd, microcode
.. _microcode-installation:

======================
Установка микрокода
======================

Микрокод - программа реализующая набор инструкций процессора. Она уже встроена
в материнскую плату вашего компьютера, но скорее всего вы её либо не обновляли
вовсе, либо делаете это не часто вместе с обновлением BIOS (UEFI).

Однако у ядра Linux есть возможность применять обновления микрокода
прямо во время загрузки системы. Они содержат множественные
исправления ошибок и улучшения стабильности, поэтому настоятельно
рекомендуется их периодически устанавливать.

Осуществляется это следующими командами::

  sudo pacman -S intel-ucode                  # Установить микрокод Intel
  sudo pacman -S amd-ucode                    # Установить микрокод AMD
  sudo mkinitcpio -P                          # Пересобираем образы initramfs.
  sudo grub-mkconfig -o /boot/grub/grub.cfg   # Обновляем загрузчик, можно так же через grub-customizer.

.. index:: firmware, linux, installation
.. _missing_firmwares:

==================================
Установка дополнительных прошивок
==================================

В Arch Linux и основанных на нем дистрибутивах большинство прошивок
устройств как правило поставляются с пакетом linux-firmware и всех
связанных с ним пакетов (linux-firmware-whence, linux-firmware-bnx2x,
linux-firmware-liquidio, linux-firmware-marvell,
linux-firmware-mellanox, linux-firmware-nfp, linux-firmware-qcom,
linux-firmware-qlogic). Тем не менее вы можете столкнуться с
предупреждением во время пересборки initramfs образов через команду
``sudo mkinitcpio -P`` подобного формата::

  ==> WARNING: Possibly missing firmware for module: XXXXXXXX

Такие предупреждения не являются критическими, однако некоторые
устройства у вас в системе могут работать не полностью или вообще не
работать без требуемых прошивок. Поэтому в первую очередь
рекомендуется попробовать установить все вышеуказанные пакеты
linux-firmware (некоторые из них можно пропустить в силу отсутствия
соответствующих устройств, например linux-firmware-marvell).

Но некоторых прошивок нет в официальных репозиториях дистрибутива,
поэтому их требуется установить отдельно из AUR_ (все пакеты
содержащие файлы прошивок имеют окончание "-firmware"). Рассмотрим на
примере прошивки для модуля aic94xx::

  git clone https://aur.archlinux.org/aic94xx-firmware
  cd aic94xx-firmware
  makepkg -sric

После этого повторите команду ``sudo mkinitcpio -P``. Предупреждение о
пропуске прошивок для модуля aic94xx должно пропасть.

.. _AUR: https://aur.archlinux.org/packages?O=0&SeB=nd&K=-firmware&outdated=&SB=p&SO=d&PP=50&submit=Go

.. vim:set textwidth=70:
