Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Импорт пакетов из другого Arch-дистрибутива

Коротко: импортировать пакеты из Arch в Manjaro или обратно напрямую нельзя. Репозитории этих дистрибутивов живут на разных версиях библиотек, поэтому пакет, собранный под Arch, почти наверняка сломает зависимости в Manjaro. Безопасный способ перенести софт: собрать его из AUR или PKGBUILD на своей системе либо переустановить дистрибутив и накатить список пакетов.

Чем Manjaro отличается от Arch

Manjaro построен на базе Arch, но это отдельный дистрибутив со своими репозиториями. Пакеты из Arch попадают в Manjaro с задержкой в две-четыре недели: сначала их проверяют в ветках unstable и testing, и только потом выпускают в stable. Arch обновляет пакеты сразу после выхода апстрима, без промежуточного тестирования.

Репозитории Manjaro делятся на три ветки: unstable, testing и stable. В unstable пакеты попадают почти сразу после Arch, в testing их проверяют на совместимость, а в stable выпускают для всех. Большинство пользователей сидит на stable, поэтому отставание от Arch и составляет две-четыре недели. Переключиться на testing можно, но тогда баги ловишь сам.

Задержка нужна не просто так: Manjaro проверяет, что обновление не сломает pamac, mhwd и собственные сборки ядра. Иногда пакет откатывают, если он ломает систему. В Arch такой фильтрации нет, обновление выходит, когда готово.

Различий несколько:

  • Свои репозитории. Версии пакетов в Manjaro и Arch почти никогда не совпадают: Manjaro всегда на несколько недель позади.
  • Свои сборки ядра. Manjaro собирает ядра под своими именами (linux61, linux62, linux63), со своими патчами и настройками.
  • Оптимизация x86-64-v3. Manjaro собирает пакеты с расчётом на более новые процессоры. На старом железе без поддержки x86-64-v3 часть пакетов просто не запустится.
  • Свои инструменты. pamac для управления пакетами, mhwd для автоматической установки драйверов, свой установщик Calamares, свой брендинг и темы.

Обновление на Manjaro идёт из репозиториев Manjaro, а не Arch:

sudo pacman -Syu

Из-за этого «Arch» внутри Manjaro не тот Arch, что живёт на archlinux.org. Это снимок Arch, зафиксированный на определённый момент и пересобранный под себя.

Почему нельзя ставить пакеты из Arch на Manjaro и наоборот

Бинарный пакет собирают против конкретных версий библиотек. Пакет из Arch собран против свежих glibc, icu, openssl. В Manjaro эти библиотеки на несколько недель старше, и в них может не оказаться функций, которые пакет вызывает. Установка пройдёт, а при запуске ты получишь ошибку вроде undefined symbol или падение с segfault.

Разберём на примере. Пакет собран против icu 76, а в Manjaro стоит icu 74. Номера версий не совпадают, и pacman при установке честно скажет, что зависимость не удовлетворена. Но бывает хуже: версии совпадают по номерам, а сборки разные. Тогда pacman поставит пакет, а при запуске программа упадёт с ошибкой вроде undefined symbol: ucol_open_76. Это и есть несовместимость на уровне ABI, бинарного интерфейса библиотеки.

Проблема в том, что pacman проверяет только версии зависимостей, а не совместимость на уровне ABI. Плюс установка чужого пакета создаёт состояние частичного обновления: часть системы на версиях Manjaro, часть на версиях Arch. Частичное обновление главный источник поломок в Arch-мире, и ArchWiki прямо предупреждает, что оно не поддерживается.

Особенно опасны обновления glibc. Это база почти всех программ: если пакет собран против новой glibc, а в системе старая, не запустится вообще ничего, что тянет этот пакет. Откат в такой ситуации отдельная история, и редко обходится без боли.

То же самое работает в обратную сторону. Пакет из Manjaro на Arch потянет старые версии зависимостей, которые конфликтуют с уже установленными. Разбор похожей ситуации с частичными обновлениями в статье «Частичное обновление и IgnorePkg».

Посмотреть, какие зависимости потянет пакет, можно заранее через pactree, подробнее в статье «pactree: граф зависимостей».

Можно ли импортировать пакеты через pacman -U

Формально да. Скачиваешь .pkg.tar.zst из репозитория Arch и ставишь локальный файл:

# скачай пакет из репозитория Arch (например, с зеркала)
# и установи его как локальный файл
sudo pacman -U ~/Downloads/package.pkg.tar.zst

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

Перед установкой можно сверить версии. Посмотри, какая версия пакета лежит в репозитории Arch, и сравни с тем, что стоит у тебя локально:

# версия в репозитории Arch
pacman -Si имя-пакета

# версия, установленная у тебя
pacman -Qi имя-пакета

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

Обратное направление, пакет из Manjaro на Arch, работает так же плохо. Пакет собран против старых библиотек, а в Arch они уже ушли вперёд. Иногда pacman откажет сразу, иногда поставит, а потом начнутся конфликты при следующем обновлении.

Ещё хуже вариант с флагом --nodeps:

# так делать не надо: pacman пропустит проверку зависимостей
sudo pacman -U --nodeps package.pkg.tar.zst

Такой пакет останется «чужим»: pacman не будет обновлять его из репозиториев Manjaro, потому что в базе его нет. Он навсегда застрянет на одной версии, а система вокруг будет уходить вперёд. Увидеть такие пакеты можно через pacman -Qm. Та же логика, что и с пакетами из чужой архитектуры, разбор в статье «Пакеты из чужой архитектуры».

Как безопасно перенести пакеты на другую систему

Собери из AUR или PKGBUILD

Самый надёжный путь: собрать пакет на своей системе. PKGBUILD компилирует программу против твоих библиотек, поэтому версии совпадают всегда. Ставится через yay, paru или вручную через makepkg:

git clone https://aur.archlinux.org/имя-пакета.git
cd имя-пакета
makepkg -si

Флаг -s подтянет зависимости, -i установит собранный пакет. Как это работает в статье «Установка из AUR».

Перед сборкой загляни в PKGBUILD: посмотри зависимости, проверь, что скрипт не делает ничего подозрительного. Сборка из AUR это запуск чужого кода на твоей машине, поэтому доверять стоит только проверенным пакетам.

Перенеси список пакетов

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

# на старой системе
pacman -Qqe > pkglist.txt

# на новой системе
sudo pacman -S - < pkglist.txt

pacman сам поставит всё из репозиториев нового дистрибутива, в правильных версиях. Подробнее про список пакетов в статье «Экспорт списка пакетов pacman».

Учти: список пакетов не переносит конфиги. Файлы из /etc копируй отдельно, иначе настройки придётся восстанавливать вручную.

Переустанови дистрибутив

Если хочешь перейти с Manjaro на чистый Arch, переустановка надёжнее любых импортов. Поддерживаемого способа превратить Manjaro в Arch не существует. Пошаговый разбор переезда в статье «Миграция с другого Arch».

Что такое «Arch» в контексте rolling release

И Arch, и Manjaro это rolling release: у них нет версий вроде «25.04», обновления приходят непрерывно. Но rolling не значит «одинаковый». Arch выпускает обновления сразу, Manjaro задерживает их для тестирования. Поэтому «Arch» как база это один и тот же апстрим, а вот репозитории разные проекты с разными мейнтейнерами.

При этом оба дистрибутива используют pacman, один и тот же формат пакетов .pkg.tar.zst и один и тот же AUR. Поэтому команды, привычки и большинство статей для Arch работают и на Manjaro. Rolling release не значит «всегда самое свежее»: это значит, что обновления выходят постоянно, без версий и переустановок. Manjaro сознательно жертвует свежестью ради стабильности.

Пакет из репозитория Arch не обязан работать на Manjaro, даже если оба дистрибутива называют себя Arch-основанными. Версии библиотек разошлись, и это нормально.

Если ты ставил Arch по инструкции и привык к pacman -Syu, на Manjaro команды те же. Разница проявится только в версиях пакетов и в том, что часть софта из Arch-репозиториев в Manjaro просто отсутствует.

Частые вопросы

Можно ли поставить пакет из Arch на Manjaro через pacman -U?

Формально да, но рискованно. Если версии библиотек совпадают, может заработать. Но пакет останется «чужим» и не будет обновляться из репозиториев Manjaro. Надёжнее собрать его из AUR.

Почему после установки пакета из Arch ломаются зависимости?

Пакет собран против более новых версий glibc, icu и других библиотек. В старых версиях Manjaro нужных функций нет, и программа падает при запуске. pacman проверяет номера версий, а не совместимость на уровне ABI.

Manjaro это тот же Arch?

Нет. Manjaro использует Arch как базу, но репозитории, ядра и инструменты у него свои. Пакеты задерживаются на две-четыре недели, сборки ядра и оптимизация x86-64-v3 отличаются.

Как перенести пакеты с Manjaro на Arch?

Сохрани список pacman -Qqe > pkglist.txt, установи Arch и выполни sudo pacman -S - < pkglist.txt. Либо собери нужные пакеты из AUR на новой системе.

Что делать, если пакет уже сломал систему?

Переустанови его из репозитория своего дистрибутива: sudo pacman -S имя-пакета. Это вернёт версию из Manjaro или Arch и заменит чужой пакет. Если pacman ругается на конфликт, проверь целостность через pacman -Qkk.

Полезные ресурсы

Заключение

Manjaro и Arch родственные, но разные дистрибутивы: разные репозитории, разные версии библиотек, разные сборки ядра. Ставить пакеты из одного в другой через pacman -U: лотерея с битыми зависимостями. Безопасный путь: собрать пакет из AUR или PKGBUILD на своей системе, а при полном переезде переустановить дистрибутив и накатить список пакетов через pacman -S - < pkglist.txt.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max