LINUX.ORG.RU

Как работает pacman в Arch

 , ,


1

1

Может кто-то обьяснить чем отличаются локальные репозитории от удаленных? Без man pacman или ссылок на арчвики, понять исходники тоже не смогу так как не программист. Я так понимаю что когда устанавливаем пакет, информацию ПМ берет таки из локальный базы? Ну FTP или HTTP адрес, а при синхронизации с удаленным URL просто подменяется на самый свежий? Распаковал я БД и просмотрел файл desk, там только один URL.

В файле pacman.conf в репозиториях ссылки на mirrorlist. Но в mirrorlist нет привязки к репам, значит на каждом сервере, указанном в файле хранятся все репы? И в каком виде они тогда хранятся? Как pacman сможет установить более старую версию пакета если ее не останется в кеше скачанных? Он не сможет взять информацию с тех серверов, что указаны в mirrorlist? Или структура удаленной базы данных не такая же как локальной?

Может кто-то обьяснить чем отличаются локальные репозитории от удаленных?

Ничем.

Без man pacman или ссылок на арчвики

Ну а какого хрена ты тогда забыл на арче?

В файле pacman.conf в репозиториях ссылки на mirrorlist. Но в mirrorlist нет привязки к репам, значит на каждом сервере, указанном в файле хранятся все репы?

Да.

И в каком виде они тогда хранятся?

Зайди и посмотри.

Как pacman сможет установить более старую версию пакета если ее не останется в кеше скачанных

Никак.

Все остальные вопросы не распарсил, перепиши понятнее.

intelfx ★★★★★ ()

Репы ты сам указываешь в /etc/pacman.conf [testing], [extra], [community-testing], [community] и так далее.

Дальше ссылка указывается на Include = /etc/pacman.d/mirrorlist, где и ищет эти репы.

One ★★★★★ ()
Ответ на: комментарий от intelfx

После того, как я напишу pacman -S vim, URL, с которого пакетный менеджер начнет скачивать пакет он же берется им из локальной базы? А при pacman -Sy эта информация (включая URL) просто изменяется в локальной базе?

NordeN ()
Ответ на: комментарий от xDShot

Поэтому если долго не обновляться и поставить какой-нибудь пакет, будет прикол с 404, потому что «там» обновились пакеты. А старые удаляются, такова политика дистрибутива.

xDShot ★★★★★ ()
Ответ на: комментарий от xDShot

Спасибо, а не подскажете для чего база данных пакетов и файлов была разделена? Я вижу всего две директории:

/var/lib/pacman/sync/

и

/var/lib/pacman/local/

Но опций для обращения к базам 3: -S, -Q, -F При синхронизации баз -Sy, обновлется информация в директории sync же? И при установке -S pacman берет всю информацию оттуда же? Local нужна только для работы с уже установленными пакетами? Например проверить какие файлы пакета отсутствуют в системе.

NordeN ()
Ответ на: комментарий от NordeN

Спасибо, а не подскажете для чего база данных пакетов и файлов была разделена?

Потому что 1) состояние репозитория может отличаться от состояния на диске, и 2) pacman позволяет устанавливать пакеты не только из репозиториев.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Вы не так поняли, мне кажется ваш ответ относится к вопросу «Чем отличаются локальная база данных и удаленная и зачеми их синхронизировать». Я же спрашивал о другом, мне наверное проще было бы исходники глянуть или в трассировщик запустить но знаний ни программирования, ни системных вызовов у меня нет.

Не советовать арчвики я написал потому как прочитал статью о пакмане там и не нашел нужных ответов.

NordeN ()
Ответ на: комментарий от JAkutenshi

Надо внимательно тогда тащить старую бяку, потому что сопутствующие зависимости бывают пересобирают, чтобы референсы и прочие ABI соблюдались. Например blender каждый раз пересобирают когда одна из его зависимостей обновилась. Лучше тогда если возможно пересобрать старый PKGBUILD, чтобы всё разрулилось и все такое.

xDShot ★★★★★ ()
Ответ на: комментарий от xDShot

Ну, возможно. Вообще я в последнее время стараюсь скорее иметь локально скомпилянные версии программ с библиотеками рядом. Appimage/flatpak и прочее. Места таки много на винчестере, стоит не дороже геммороя с версиями кода.

JAkutenshi ★★ ()
Ответ на: комментарий от xDShot

Можно как и отдельный пакет откатить так и всю систему на состояние пакетов по какому нибудь числу. Все в вики описано. Если пакет не требует определенных версий других пакетов по зависимостям то откатывается только пакет, в ином случае пакет со всеми зависимостями рекурсивно.

anonymous ()
Ответ на: комментарий от intelfx

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

pacman -Sy
pacman -Ss утилитанейм

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

pacman -F утилитанейм

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

pacman -Fy

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

NordeN ()
Последнее исправление: NordeN (всего исправлений: 1)
Ответ на: комментарий от NordeN

А, ты про базу пакетов (.db) против базы файлов в пакетах (.files)?

Потому что эти фичи появились в pacman в разное время. Вместо pacman -F раньше была отдельная утилита pkgfile со своими базами. Плюс, базы файлов весят гораздо больше, и они нужны не всем.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от xDShot

Поэтому если долго не обновляться и поставить какой-нибудь пакет, будет прикол с 404, потому что «там» обновились пакеты. А старые удаляются, такова политика дистрибутива.

Это сколько не обновляться надо, если не секрет? Я откат на версию пакета несколько месячной давности, делал утилитой downgrade, и он предлагал скачать из удалённого репозитория.

fehhner ★★★★★ ()
Ответ на: комментарий от fehhner

downgrade использует версии пакетов из архивного репозитория, там они есть за несколько лет. Обновления же проходят из обычных репозиторий и там содержится только одна версия пакета, порой может меняться на актуальную несколько раз в день- два. И если не обновить базу по старому юрл ничего не будет

Потому перед установкой пакета желательно обновить базы да и вообще обновиться

anonymous ()
Ответ на: комментарий от anonymous

Не задумывался об этом, т.к. раньше устанавливал итак всегда через pacman -Syu package, чтобы не было проблем с версиями зависимостей и система была актуальной, а с появлением yay вообще удобно стало. Не надо лишние кнопки нажимать: сделал yay, он обовил все пакеты и предложил выбор, какие обновить из аура. Потом yay package, он предложил выбрать из вариаций пакета с похожим названием и установил (например, если есть git версия пакета, или собранная на qt или gtk).

fehhner ★★★★★ ()