Все об 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