Деталей пакетного менеджера генты не знаю, но теоретически пакетный менеджер строит граф зависимостей, потом сортирует его топологически и в такой очереди производит сборку
И никто не знает! Если бы знали - существовали бы обучающие курсы, wiki-страницы, было бы несколько реализаций типа paludis но на разных языках программирования, например Rust и Go.
Спецификация - это только минимальная часть необходимого описания. А вообще текстов должно быть гораздо, гораздо больше, для различных целей и ситуаций.
Неспособность команды Gentoo организовать накопление таких текстов и их структурирование - это провал команды по документированию.
Гуглишь по приложению которое хочешь ставить. Там глобальные USE флаги, прописываешь их в make.conf. Если emerge –ask показывает что у каких то приложений вот не хватает зависимостей. Ну вот например. В sxiv мне нужен gif. То для sxiv я указываю зависимость. echo «media-gfx/sxiv gif» > /etc/portage/package.use/sxiv Можно в кавычках через пробел несколько указать. Можно в один файл, в папке /etc/portage/package.use/ скидывать, так он тоже понимает. Но проще переписывать файл под конкретную прогу. Если программа замаскированна, то надо делать запись в /etc/portage/package.accept_keywords. Gentoo проще чем debian на самом деле. А когда поставишь всё что надо. Начнёшь обновлять мир, программы увидят друг друга. И соберутся вместе если зависят друг от друга.
Захочешь что-нибудь в тему ответить, а там пишут:
«Внимание! Вы отвечаете на комментарий, автор которого не может создавать новые комментарии в этом топике.»
А в чем проблема?
Проблема в неудобстве использования. Запускаю я как-то менеджер пакетов, а он мне и говорит:
WARNING: One or more updates/rebuilds have been skipped due to a dependency conflict:
sci-libs/hdf5:0
(sci-libs/hdf5-1.12.2-r2:0/1.12.2::gentoo, ebuild scheduled for merge) USE="fortran hl zlib -cxx -debug -doc -examples (-mpi) -szip -test -threads -unsupported" ABI_X86="(64)" conflicts with
<sci-libs/hdf5-1.12:=[-mpi] required by (sci-libs/vtk-9.0.3-r4:0/9.0::gentoo, ebuild scheduled for merge) USE="X boost json openmp python qt5 rendering -all-modules (-cuda) -doc -examples -ffmpeg -gdal -imaging -java -kits (-mpi) -mysql -odbc -offscreen -pegtl -postgres -tbb -test -theora -tk -views -web" ABI_X86="(64)" PYTHON_SINGLE_TARGET="python3_9 -python3_10 -python3_8" VIDEO_CARDS="-nvidia"
^ ^^^^
и чтобы в этом разобраться - нужно пару дней, потому что я понятия не имею что это за пакеты такие, и зачем они вообще в системе нужны (и я не буду этим заниматься, потому что они мне не нужны).
Так понятно, что пакеты не тебе нужны, а другим пакетам.
Чего там разбираться, тем более пару дней? Всё же ясно. Установленный у тебя vtk хочет hdf5 не выше версии 1.12. При этом доступна более новая версия hdf5, но не размаскирована или недоступна версия vtk совместимая с ним.
Не вижу никакого неудобства, менеджер пакетов просто тебя проинформировал, что hdf5 не будет в этот раз обновлен. Можно на это забить и не париться, если по какой-то причине тебе срочно не понадобился более новый hdf5, но это маловероятно. Просто забей, это нормальное сообщение.
Это сообщение пакетного менеджера для пользователя, а не ментейнера. Никакой трагедии с обновлением не случилось. Просто забей, не будь таким пугливым.
Но если тебе так нужен новый hdf5, в чём я очень сильно сомневаюсь, то просто размаскируй vtk-9.1.0-r2 (это просто и быстро), либо создай в багзилле запрос на его стабилизацию и жди. Но проще забить, так как никакой проблемы я не вижу. Вообще никакой.
С пониманием простого сообщения пакетного менеджера?
Ты сам написал, что не знаешь,что это за пакеты и зачем они нужны. Тебе не нужно это понимать. Медленно вдохни, подними руку, затем опусти руку со словами «ну и хрен с ними». Теперь ты спокоен. Это реально работает!
Достаточно удалить все конфликтующие пакеты и перезапустить emerge. Версия, устраивающая всех подтянется сама.
Это плохой совет. У меня конфликтовали sys-libs/libxcrypt и sys-apps/util-linux.
Я их удалил, но теперь не могу установить обратно, потому что в пакете util-linux находится утилита mount, а после её удаления не работает установка пакетов.
Я скопировал файл mount из архива stage3 в /bin, но это не помогает,
Пишет:
# mount -t proc none /mnt/gentoo
mount: /mnt/gentoo: must be superuser to use mount.
Система запорота, теперь можно только форматировать диск и ставить всё по-новой (разворачивать stage3 и так далее).
Спецификация - это только минимальная часть необходимого описания. А вообще текстов должно быть гораздо, гораздо больше, для различных целей и ситуаций.
Альтернативы безнадёжно отстают. В то время как в portage уже EAPI-8, в альтерантивах поддержка слаба. Это означает, что альтернативы совершенно не умеют в кросс-компиляцию.
У меня конфликтовали sys-libs/libxcrypt и sys-apps/util-linux.
Я говорил о конфликте двух версий одного пакета. А не о двух разных.
Я их удалил, но теперь не могу установить обратно, потому что в пакете util-linux находится утилита mount, а после её удаления не работает установка пакетов
Каким образом mount влияет на установку пакетов? Если ты удалил util-linux, то это не отмонтирует автоматом смонтированные ФС. После удаления не перезагружая установи сразу этот пакет заново.
Даже если ты перезагружался (неизвестно, зачем это делать на полпути обновления системы), форматировать и переустанавливать систему не надо. Достаточно с внешнего USB загрузиться, примонтировать все что надо и установить проблемный пакет через chroot.