Вопрос или проблема
Версия Pacman: pacman 7.0.0.r3.g7736133-1
Мое интернет-соединение плохое. При выполнении pacman -Syu
я заметил, что pacman не возобновляет загрузку. После расследования я обнаружил, что каждый раз, когда я запускаю процесс обновления, pacman создает новую папку download-XXXXXX
в /var/cache/pacman/pkg
. Поэтому он не может возобновить текущее обновление после прерывания.
Есть ли способ сказать pacman загружать все пакеты в /var/cache/pacman/pkg
и прекратить создание новых папок в нем, чтобы он мог возобновить прерванную загрузку?
Мой pacman.conf
#
# /etc/pacman.conf
#
# См. руководство вручную pacman.conf(5) для получения параметров и директив репозитория
#
# ОБЩИЕ ПАРАМЕТРЫ
#
[options]
# Следующие пути закомментированы с их значениями по умолчанию.
# Если вы хотите использовать другие пути, раскомментируйте и обновите пути.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
#HookDir = /etc/pacman.d/hooks/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman не будет обновлять пакеты, указанные в IgnorePkg, и члены IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Разные параметры
#UseSyslog
Color
#NoProgressBar
CheckSpace
VerbosePkgLists
ParallelDownloads = 8
ILoveCandy
#DisableDownloadTimeout
# По умолчанию pacman принимает пакеты, подписанные ключами, которые его локальное хранилище
# доверяет (см. pacman-key и его руководство), а также неподписанные пакеты.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# ПРИМЕЧАНИЕ: Вы должны запустить `pacman-key --init` перед первым использованием pacman; локальное
# хранилище ключей затем может быть заполнено ключами всех официальных упаковщиков Arch Linux
# с помощью `pacman-key --populate archlinux`.
#
# РЕПОЗИТОРИИ
# - могут быть определены здесь или включены из другого файла
# - pacman будет искать репозитории в порядке, определенном здесь
# - локальные/кастомные зеркала могут быть добавлены здесь или в отдельных файлах
# - репозитории, указанные первыми, будут иметь приоритет, когда пакеты
# имеют одинаковые имена, независимо от номера версии
# - URL-адреса будут иметь $repo замененным на имя текущего репозитория
# - URL-адреса будут иметь $arch замененным на имя архитектуры
#
# Записи репозитория имеют формат:
# [имя-репозитория]
# Server = ИмяСервера
# Include = ПутьВключения
#
# Заголовок [имя-репозитория] имеет решающее значение - он должен присутствовать и
# не должен быть закомментирован, чтобы включить репозиторий.
#
# Тестовые репозитории по умолчанию отключены. Чтобы включить, раскомментируйте
# заголовок имени репозитория и строки Include. Вы можете добавить предпочитаемые серверы сразу
# после заголовка, и они будут использоваться перед зеркалами по умолчанию.
#[arcolinux_repo_testing]
#SigLevel = Optional TrustedOnly
#Include = /etc/pacman.d/arcolinux-mirrorlist
[arcolinux_repo]
SigLevel = Optional TrustedOnly
Include = /etc/pacman.d/arcolinux-mirrorlist
[arcolinux_repo_3party]
SigLevel = Optional TrustedOnly
Include = /etc/pacman.d/arcolinux-mirrorlist
[arcolinux_repo_xlarge]
SigLevel = Optional TrustedOnly
Include = /etc/pacman.d/arcolinux-mirrorlist
#[core-testing]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
#[extra-testing]
#Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
# Если вы хотите запускать 32-битные приложения на вашей системе x86_64,
# включите многоцелевые репозитории по мере необходимости здесь.
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
# Пример кастомного репозитория пакетов. См. руководство pacman для
# советов по созданию собственных репозиториев.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
Ответ или решение
Решение проблемы с созданием папок download-XXXXXX в /var/cache/pacman/pkg
Введение
Ваша проблема с менеджером пакетов pacman
заключается в том, что он создаёт новые временные папки download-XXXXXX
в каталоге /var/cache/pacman/pkg
при каждой попытке обновления. Это препятствует возможности возобновления загрузки в случае обрыва соединения. В данной статье мы рассмотрим, как можно оптимизировать загрузку пакетов в pacman
, чтобы избежать создания этих временных папок и обеспечить возможность возобновления загрузок.
Причины
Из-за низкой скорости интернет-соединения вам часто приходится прерывать загрузку. При каждом запуске pacman -Syu
, когда загрузка прерывается, pacman
создаёт новую папку download-XXXXXX
, что мешает ему возобновить предыдущую загрузку, так как он не использует уже загруженные данные. Это затрудняет работу с обновлениями и может значительно увеличить время, необходимое для выполнения обновления пакетов.
Решение
-
Настройка XferCommand: Основное решение заключается в использовании переменной конфигурации
XferCommand
, позволяющей вам выбирать, какpacman
будет загружать файлы. Если хотите предотвратить создание новых папок, вы можете использовать инструменты, которые поддерживают возобновляемую загрузку, такие какcurl
илиwget
. Для начала выполните следующие действия.В вашем файле
/etc/pacman.conf
, раскомментируйте и изменитеXferCommand
следующим образом:XferCommand = /usr/bin/wget --continue -O %o %u
или
XferCommand = /usr/bin/curl -C - -o %o %u
Это позволит вам возобновлять прерванные загрузки, загружая недостающие части файлов вместо создания новых папок.
-
Отключение временных папок: Непосредственно нет способа полностью отключить создание временных папок в конфигурации
pacman
. Однако, используя вышеуказанный параметр, вы минимизируете влияние этой проблемы. -
Увеличьте время загрузки: Если ваше соединение часто прерывается, вам может помочь настройка
DisableDownloadTimeout
. Это позволит избежать автоматического таймаута для загрузки:DisableDownloadTimeout
-
Настройка ParallelDownloads: Убедитесь, что использование ParallelDownloads установлено на разумное значение (например, 2 или 4), поскольку слишком большое количество одновременных загрузок может ухудшить качество соединения и привести к обрывам.
Заключение
Следуя данным рекомендациям, вы сможете значительно улучшить ситуацию с загрузкой пакетов в pacman
, избегая создания избыточных временных папок и повышая устойчивость к прерываниям загрузки. Также важно регулярно проверять качество интернет-соединения и при возможности использовать более стабильные источники для загрузки, что дополнительно поможет снизить вероятность проблем в будущем.
Если после выполнения этих шагов проблема сохраняется, возможно, стоит рассмотреть обновление самого pacman
до последней стабильной версии, так как новые версии могут содержать оптимизации и исправления, которые улучшат процесс загрузки пакетов.