zaLinux.ru

Как очистить кэш пакетов в Arch Linux


Arch Linux становится популярным дистрибутивом Linux, поскольку в нём найден удачный баланс между стабильностью, контролем над системой, актуальностью пакетов и удобством пользователей. В нём есть все инструмент для продвинутых пользователей, которые могут понадобиться для поддержания полного контроля над системой. А для новичков уже написано много пошаговых инструкций, чтобы они могли удачно завершить почти любую задачу.

Хотя есть одна вещь, о которой новички часто забывают: неважно, насколько дружественный рабочий стол Cinnamon (или Gnome) с запущенными Firefox и LibreOffice, используемыми в повседневной работе, при каждом обновлении программ накапливаются установочные пакеты, которые со временем могут заполнить диск.

Когда вы обновляете программы с менеджером пакетов Arch Linux под названием Pacman, вам нужно время от времени очищать его кэш. В противном случае ваш диск переполнится ненужными старыми пакетами. Эта инструкция покажем вам, как очищать кэш пакетов в Arch Linux.

Что такое кэш пакетов?

Arch Linux для установки программ из репозитория использует менеджер пакетов Pacman, например:

sudo pacman -S firefox

Опция -S говорит Pacman найти сжатый тарбол (файл tar.xz) с именем «firefox». Если будет найдена более новая версия, чем установлена на этот компьютер, то тогда Pacman предложит установить новый пакет.

Операции этого типа часто происходят автоматически для множества пакетов когда вы запускаете полное обновление системы командой:

sudo pacman -Syu

В ней опция -y означает загрузить последний список репозитория доступных пакетов, -u означает найти устаревшие пакеты на компьютере и -S говорит установить любые новые пакеты, которые найдёт Pacman.

Для любого нового пакета Pacman вначале загрузит тарбол в директорию кэша — обычно он расположен по пути /var/cache/pacman/pkg/ и затем будет использовать этот файл для установки новой версии. История ранее установленных пакетов может выглядеть примерно как на следующем изображении:

Из скриншота видно, что пакет vim-runtime присутствует в трёх версиях. И хотя этот пакет занимает немного места, все файлы в этой папке занимают 672M (это немного — я чистил кэш за несколько дней до написания этой инструкции). Если вы не чистили кэш никогда, то размер вашей папки может быть несколько гигабайт или несколько десятков гигабайт. Поскольку эта папка обычно размещается на системном диске, то если у вас твердотельный накопитель небольшого размера, то для вас этот объём места может быть весьма значимым.

Пришло время очистить место!

Как чистить кэш в Arch Linux

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

Есть несколько способов, как вы можете это сделать. Первый из них — использовать сам pacman.

sudo pacman -Sc

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

У команды есть и более кардинальный вариант:

sudo pacman -Scc

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

Для более безопасного, контролируемого подхода вы можете использовать скрипт paccache, который поставляется вместе с Pacman:

sudo paccache -r

Он удаляет все тарболы в кэше кроме самых последних трёх пакетов. Он делает это для всех пакетов, которые установлены или нет на вашем компьютере.

Если у вас накоплен большой кэш, то он довольно значительно будет уменьшен, хотя всё ещё останется по 3 копии каждого установочного файла разных версий.


Вы можете выбрать количество пакетов, которое вы хотите сохранить. В следующем примере выбор «1» делает примерно то же, что и pacman -Sc, за исключением того, что paccache не делает разницы между установленными и не установленными пакетами.


paccache -rk 1

Следующий пример даёт вам контроль на не установленными в систему пакетами, удаляя тарболы всех пакетов, которые в настоящий момент не установлены на вашей локальной рабочей станции:

paccache -ruk0

Опасности очистки кэша

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

В реальности за много лет использования Arch Linux я сталкивался с ситуацией, когда использовалась помощь кэша, буквально 1-2 раза. Это понадобилось на этапе установки — при установке проприетарных драйверов. При неудачной установке система не загружалась в графический интерфейс. Поскольку Интернет-подключение было настроено через Network Manager (который не работает при отсутствии графического интерфейса), то для удаления неудачного драйвера и установки открытого драйвера использовался кэш.

Иногда у меня возникают проблемы после установки новых версий пакетов, но никогда не приходит на ум идея исправить ситуацию с помощью отката до старой версии. Помогают:

  • инструкции с хот-фиксами (рабочими решениями) по временному исправлению проблемы
  • ожидание новой версии, в которой проблема будет исправлена
  • открытие тикета для соответствующего приложения о проблеме и ожидание, пока проблема будет подтверждена, и программа обновится.

Это не означает, что не нужно хранить кэш пакетов. Вполне возможно, что у вас возникнет ситуация когда, он действительно будет нужен. Но это означает, что вам нужно научиться пользоваться теми возможностями, которые он даёт — хотя бы как понизить версию приложения. В противном случае кэш пакетов вам в любом случае не поможет — даже если он будет размером в 100 Гигбайт.

Как откатить программу до предыдущей версии в Arch Linux

Рассмотрим примет выполнение отката пакета. Предположим, что после обновление рабочего стола Cinnamon у меня возникла проблема и я хочу вернуться к предыдущей версии Cinnamon пока не будет выпущена версия с исправлениям.

Смотрю текущую версию:

pacman -Q cinnamon
cinnamon 4.2.3-1

Перехожу в папку /var/cache/pacman/pkg/:

cd /var/cache/pacman/pkg/

И ищу доступные версии:

ls -hgG *cinnamon*
-rw-r--r-- 1 1,6M июл  1 02:21 cinnamon-4.2.0-2-x86_64.pkg.tar.xz
-rw-r--r-- 1 1,6M июл 10 21:18 cinnamon-4.2.1-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 1,6M июл 12 18:43 cinnamon-4.2.2-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 1,6M июл 25 20:07 cinnamon-4.2.3-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 1,5M июл 10 19:02 cinnamon-control-center-4.2.1-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 121K июл  4 19:18 cinnamon-session-4.2.1-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 457K июл 25 17:40 cinnamon-settings-daemon-4.2.2-1-x86_64.pkg.tar.xz

Последней установленной версией является 4.2.3, но я также могу установить из кэша версии:


  • cinnamon-4.2.0
  • cinnamon-4.2.1
  • cinnamon-4.2.2

Я могу выбрать любую из них — выбираю предпоследнюю, То есть 4.2.2. Теперь мне нужно запустить установку командой вида:

sudo pacman -U /var/cache/pacman/pkg/ИМЯ_ФАЙЛА.pkg.tar.xz

Для моего случая это команда:

sudo pacman -U /var/cache/pacman/pkg/cinnamon-4.2.2-1-x86_64.pkg.tar.xz

Заключение

Arch Linux даёт вам много свободы сделать вашу систему именно тем, что вам нужно. Pacman делает простым установку и удаление пакетов, но он также время от времени требует ручного вмешательства.

Загляните в ваш кэш пакетов. Если он занимает много места, то очистите в нём файлы одним из показанных выше способов.

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


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *