Оглавление
- Можно ли в Arch Linux откатить версию пакета
- Локальный кеш пакетов Arch Linux
- Пакеты Arch Linux предыдущих версий онлайн
- Как установить пакет Arch Linux из локального файла
- Как откатить версию видеодрайвера NVIDIA в Arch Linux
- Как откатить версию ядра в Arch Linux
- Как предотвратить обновление некоторых пакетов
- Бонус: Как очистить локальный кеш пакетов
1. Можно ли в Arch Linux откатить версию пакета
В Arch Linux и основанных на нём дистрибутивах обновлённые версии пакетов добавляются в стандартный репозиторий очень оперативно — практически сразу после выпуска новых версий разработчиками. В большинстве случаев это очень хорошо и я люблю Arch Linux в том числе его эту особенность. Благодаря этому Arch Linux отлично подходит для использования в том числе с очень новым железом.
Но иногда (точнее говоря, крайне редко) возникают ситуации, когда определённая версия пакета не работает, имеет серьёзные баги или является слишком сырой. В этом случае появляется желание откатиться до предыдущей версии пакета или выбрать определённую версию для установки вместо самой новой. Можно ли в Arch Linux установить пакет определённой версии?
Да, в Arch Linux можно установить пакет любой версии и это не вызывает трудностей не в установке ни дальнейших проблем в использовании (при условии, что вы установили зависимости соответствующих версий). Но есть одна загвоздка: в официальных репозиториях Arch Linux храниться только самая последняя версия пакета и отсутствуют предыдущие версии. Рассмотрим, где вы можете получить предыдущие версии пакетов Arch Linux.
2. Локальный кеш пакетов Arch Linux
Все пакеты всех версий, которые вы когда-либо устанавливали или обновляли в вашем Arch Linux сохраняются — конечно, если вы не очищали кеш пакетов. Все установочные файлы хранятся в директории /var/cache/pacman/pkg/, вы можете посмотреть их список:
ls -l /var/cache/pacman/pkg/
Используя команду следующего вида вы можете искать пакеты с определённым именем:
ls -l /var/cache/pacman/pkg/ | grep 'ИМЯ ПАКЕТА'
Например, чтобы вывести список пакетов чьё имя начинается на «nvidia-» я использую следующую команду:
ls -l /var/cache/pacman/pkg/ | grep ' nvidia-'
Пример вывода:
-rw-r--r-- 1 root root 75107881 Apr 11 02:28 nvidia-570.133.07-5-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Apr 11 02:29 nvidia-570.133.07-5-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 63750144 Apr 30 10:10 nvidia-570.144-2-x86_64.pkg.tar.zst.part -rw-r--r-- 1 root root 7421189 Apr 11 02:28 nvidia-open-570.133.07-5-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Apr 11 02:29 nvidia-open-570.133.07-5-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 7419636 Apr 21 20:28 nvidia-open-570.144-1-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Apr 21 20:28 nvidia-open-570.144-1-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 7419681 Apr 26 08:05 nvidia-open-570.144-2-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Apr 26 08:06 nvidia-open-570.144-2-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 7406737 Apr 29 21:52 nvidia-open-570.144-3-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 215 Apr 29 21:52 nvidia-open-570.144-3-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 7406558 May 3 22:32 nvidia-open-570.144-4-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 May 3 22:33 nvidia-open-570.144-4-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 7408068 May 10 09:50 nvidia-open-570.144-5-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 May 10 09:50 nvidia-open-570.144-5-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 7424516 May 22 13:08 nvidia-open-570.153.02-2-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 May 22 13:09 nvidia-open-570.153.02-2-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 7407097 May 30 05:17 nvidia-open-570.153.02-3-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 118 May 30 05:18 nvidia-open-570.153.02-3-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 7394841 Jun 5 02:44 nvidia-open-575.57.08-2-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Jun 5 02:44 nvidia-open-575.57.08-2-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 7392360 Jun 11 05:26 nvidia-open-575.57.08-5-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Jun 11 05:26 nvidia-open-575.57.08-5-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 793262 Apr 22 13:40 nvidia-settings-570.144-1-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 566 Apr 22 13:40 nvidia-settings-570.144-1-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 792620 May 20 19:58 nvidia-settings-570.153.02-1-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 May 20 19:58 nvidia-settings-570.153.02-1-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 793757 Jun 1 20:31 nvidia-settings-575.57.08-1-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Jun 1 20:31 nvidia-settings-575.57.08-1-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 282194152 Apr 21 20:22 nvidia-utils-570.144-1-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Apr 21 20:22 nvidia-utils-570.144-1-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 282065379 Apr 29 21:49 nvidia-utils-570.144-3-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 215 Apr 29 21:49 nvidia-utils-570.144-3-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 282193174 May 20 00:52 nvidia-utils-570.153.02-1-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 May 20 00:52 nvidia-utils-570.153.02-1-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 291841441 Jun 1 20:25 nvidia-utils-575.57.08-1-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Jun 1 20:25 nvidia-utils-575.57.08-1-x86_64.pkg.tar.zst.sig -rw-r--r-- 1 root root 291845849 Jun 10 23:50 nvidia-utils-575.57.08-3-x86_64.pkg.tar.zst -rw-r--r-- 1 root root 119 Jun 10 23:50 nvidia-utils-575.57.08-3-x86_64.pkg.tar.zst.sig
Как можно увидеть из полученного вывода, в моём локальном кеше имеются пакеты nvidia-open следующих версий (а также ещё несколько промежуточных билдов):
- nvidia-open-570.133.07
- nvidia-open-570.144
- nvidia-open-570.153.02
- nvidia-open-575.57.08
3. Пакеты Arch Linux предыдущих версий онлайн
Но что если вы очистили кеш пакетов или у вас в локальном кеше по другим причинам отсутствует нужная вам версия? Ничего страшного — предыдущие версии пакетов Arch Linux также имеются онлайн по адресу https://archive.archlinux.org/packages.
Сначала выберите букву, на которую начинается название нужного вам пакета, а затем в поддиректории перейдите в папку с этим пакетом чтобы выбрать конкретную версию, примеры адресов:
- https://archive.archlinux.org/packages/l/linux/
- https://archive.archlinux.org/packages/l/linux-headers/
- https://archive.archlinux.org/packages/n/nvidia-open/
- https://archive.archlinux.org/packages/n/nvidia-settings/
- https://archive.archlinux.org/packages/n/nvidia-utils/
Самые последние версии пакетов на этом сайте, обычно, расположены внизу страницы, но из-за особенности сортировки это правило может нарушаться — обращайте на это внимание. Например, не смотря на то, что версия 153 более новая, она идёт перед версией 86, поскольку сортировка выполняется посимвольно, а не с учётом величины чисел (цифра 1 меньше 8, поэтому второй пакет ниже, хотя и является более ранним — 86 меньше 153):
nvidia-open-570.153.02-3-x86_64.pkg.tar.zst nvidia-open-570.86.16-1-x86_64.pkg.tar.zst
4. Как установить пакет Arch Linux из локального файла
Для установки пакета из локального файла используйте команду вида:
sudo pacman -U ПАКЕТ
За один раз вы можете установить сразу несколько пакетов — это особенно полезно если пакет требует зависимости определённых версий:
sudo pacman -U ПАКЕТ1 ПАКЕТ2 ПАКЕТ3...
Этими командами вы можете устанавливать пакеты как из локального кеша (/var/cache/pacman/pkg/), так и скаченный онлайн.
Если вы сохранили пакеты в определённую директорию, то за один раз множество пакетов вы можете установить следующей командой:
cd /home/mial/Downloads/fallback/ sudo pacman -U *.zst
Для некоторых пакетов имеются зависимости определённых версий. Чтобы посмотреть зависимости пакета, выполните команду вида:
pacman -Si ПАКЕТ
Например:
pacman -Si nvidia-open
Зависимости пакета перечислены в поле «Depends On», например:
Depends On : linux nvidia-utils=575.57.08 libglvnd
Для пакета nvidia-open важно установить пакет nvidia-utils такой же версии. Зависимостями для которых не указана точная версия можно пренебречь.
5. Как откатить версию видеодрайвера NVIDIA в Arch Linux
Рассмотрим как установить предыдущую версию драйвера nvidia-open.
Для начала скачаем пакеты nvidia-open, nvidia-settings и nvidia-utils на следующих страницах:
- https://archive.archlinux.org/packages/n/nvidia-open/
- https://archive.archlinux.org/packages/n/nvidia-settings/
- https://archive.archlinux.org/packages/n/nvidia-utils/
Вы можете выбрать nvidia-open любой версии — главное правило, все пакеты nvidia-open, nvidia-settings и nvidia-utils должны быть одной версии.
Удалите имеющиеся пакеты драйвера NVIDIA следующей командой:
sudo pacman -R nvidia-open nvidia-utils nvidia-settings
Наконец, теперь мы устанавливаем локальные пакеты nvidia-open, nvidia-settings и nvidia-utils следующей командой:
sudo pacman -U nvidia-open-570.153.02-3-x86_64.pkg.tar.zst nvidia-utils-570.153.02-2-x86_64.pkg.tar.zst nvidia-settings-570.153.02-1-x86_64.pkg.tar.zst
Примечание: если у вас возникли проблемы я проприетарным драйвером NVIDIA, то причина может быть как в самом драйвере, так и в определённой версии ядра Linux. Если откат видеодрайвера вам не помог, то также откатите ядро Linux до предыдущей версии.
6. Как откатить версию ядра в Arch Linux
Примечание: вы можете перейти на версию ядра linux-lts, этому посвящена статья «Как в Arch Linux перейти к предыдущей версии ядра. Как установить и переключиться на linux-lts». Но если вы хотите всего лишь откатиться до предыдущей версии ядра без перехода на linux-lts, то этому посвящён данный раздел.
Для пакета linux нужно установить пакет linux-headers такой же версии.
Скачайте желаемые версии ядра и заголовков ядра по следующим ссылкам:
- https://archive.archlinux.org/packages/l/linux-headers/
- https://archive.archlinux.org/packages/l/linux/
Установите их командой вида:
sudo pacman -U linux-6.14.9.arch1-1-x86_64.pkg.tar.zst linux-headers-6.14.9.arch1-1-x86_64.pkg.tar.zst
Примечание: предварительно удалять установленную версию ядра вручную необязательно — можно выполнить установку поверх имеющейся версии ядра Linux.
7. Как предотвратить обновление некоторых пакетов
Сделанные таким образом изменения сохраняться до следующего обновления системы.
После отката версии пакета, изменения могут вступить в силу немедленно (для большинства пакетов), либо после перезагрузки компьютера (для видеодрайверов и ядра linux).
Вы можете использовать устаревшие версии пакетов по вашему усмотрению, но вам нужно помнить, что при полном обновлении системы следующей командой, установленные вручную пакеты также будут обновлены:
sudo pacman -Syu
Если вы хотите защитить пакеты предыдущих версий от обновлений, то вариантов действий 2:
- Временно отказаться от полного обновления системы. При этом вы по-прежнему можете устанавливать пакеты и обновлять определённые пакеты.
- Отредактировать файл /etc/pacman.conf, перечислив в нём пакеты, которые вы не хотите обновлять.
Чтобы запретить обновление некоторых пакетов при обновлении Arch Linux откройте файл /etc/pacman.conf:
sudo gedit /etc/pacman.conf
Найдите там строку:
#IgnorePkg =
Раскомментируйте её и перечислите пакеты, которые вы не хотите обновлять при полном обновлении операционной системы, например:
IgnorePkg = linux linux-headers nvidia-open nvidia-utils nvidia-settings
Обратите внимание, что разделителем является пробел, а не запятая.
8. Бонус: Как очистить локальный кеш пакетов
Возможно, узнав из этой статьи что все когда-либо устанавливаемые пакеты всех версий хранятся на вашем жёстком диске, вы догадались, куда пропадает место на компьютере и вам захотелось очистить этот кеш установленных пакетов.
Для начала, вы можете посмотреть размер кеша пакетов следующей командой:
du -h /var/cache/pacman/pkg/
Пример вывода:
32G /var/cache/pacman/pkg/
Чтобы очистить локальный кеш пакетов выполните следующую команду:
sudo pacman -Scc
Также смотрите:
- Какие файлы можно удалить при нехватке места на диске Linux
- Как найти файлы и папки занимающие больше всего места в Linux
- ncdu: графический интерфейс du чтобы быстро узнать, какие файлы и папки израсходовали место на диске
Близкие статьи
- Ошибка «не удалось завершить транзакцию (неверный или поврежденный пакет)» (РЕШЕНО) (100%)
- Ошибка «error: blackarch: signature from "Levon 'noptrix' Kayan (BlackArch Developer)
" is invalid» (РЕШЕНО) (100%) - Как найти самые быстрые зеркала Arch Linux и BlackArch (87.3%)
- Ошибки «Incorrect definition of table mysql.event: expected column 'definer' at position 3 to have type varchar(, found type char(141)» и «Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler» (РЕШЕНО) (83.9%)
- Аналог опции --force в pacman (70.2%)
- Решение проблемы Unable to load dynamic library 'mcrypt.so' (tried: /usr/lib/php/modules/mcrypt.so (RANDOM - 54.1%)





