Gentoo – особенный дистрибутив Linux, и выделяется он именно установкой программного обеспечения. Здесь реализована собственная система управления пакетами – portage, которая в отличие от других систем, таких как deb или rpm, предоставляет не полностью собранные, настроенные и готовые для установки пакеты, а только файлы со скриптами компиляции, установки, и последующей настройки.

Пакетный менеджер на основе этих файлов загружает исходники пакетов, накладывает необходимые патчи, компилирует программу с указанными вами флагами и устанавливает ее. На первый взгляд все очень сложно, но на самом деле это не так. Вот увидите. В этой статье мы рассмотрим установку пакетов в Gentoo, некоторые особенности работы с пакетным менеджером в Gentoo, а также ошибки во время установки и способы их решения.

Немного о Portage

Система portage очень похожа на систему портов FreeBSD, а еще чем-то напоминает работу pacman’а в ArchLinux. Как я сказал, здесь нет собранных пакетов, есть только исходники, патчи и файлы, описывающие что с этим всем делать. Такие файлы имеют расширение *.ebuild. По сути, база данных пакетов это система подкаталогов в /usr/protage. При обновлении базы данных просто скачиваться ее новая версия с серверов Gentoo, а старая, используемая в системе удаляется.

Список всех установленных вами пакетов хранится в файле /var/lib/portage/world. Здесь будут только те пакеты, которые вы явно устанавливали с помощью менеджера пакетов. Очень удобная вещь, можно всегда определить что в системе лишнее.

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

Это было немного матчасти, теперь перейдем непосредственно к теме статьи – установка пакетов в Gentoo.

Установка пакетов в Gentoo

Для управления пакетами в Gentoo используется собственный менеджер пакетов – emerge. Чтобы установить пакет Gentoo достаточно набрать:

emerge имя_пакета имя_пакета2

Но это самый простой вариант, emerge поддерживает множество параметров, рассмотрим только те, которые касаются установки пакетов:

  • -a – Спрашивать перед установкой;
  • -v – Показать более подробную информацию;
  • -p – Не устанавливать пакет, только показать информацию;
  • -b – Только скомпилировать пакет без установки;
  • -O – Установить пакет, не учитывая зависимости;
  • -o – установить только зависимости пакета;
  • -l –oneshot – Установить пакет, но не добавлять его в файл world;

Например, самой популярной командой, с помощью которой выполняется установка пакетов в Gentoo есть:

sudo emerge -av имя_пакета

Программа выведет всю доступную информацию о пакете, USE флаги, полное имя, размер, категорию и т д. А затем спросит нужно ли его устанавливать:

emerge

Здесь красным цветом отмечены активные USE флаги, синим неактивные, салатовым – те, которые будут активированы, например, при переустановке или обновлении.

Буква возле слова ebuild значит действие с пакетом:

  • N – будет установлен;
  • S – установка в новый слот;
  • U – обновление версии пакета;
  • D – установка более старой версии пакета;
  • R – переустановка;
  • F – необходима ручная загрузка исходников пакета;
  • f – то же самое, только файлы уже загружены;
  • B – пакет конфликтует с другими пакетами, но конфликт будет решен автоматически;
  • b – пакет конфликтует с другими пакетами, конфликт нужно решать вручную.

Дальше мы видим количество обрабатываемых пакетов и количество данных которые необходимо скачать в килобайтах.

Если установка программ в Gentoo не нужна, а нужно только посмотреть информацию о пакете можно использовать опцию -p:

sudo emerge -pv имя_пакета

Для ручного обновления системных библиотек лучше использовать опцию -l, чтобы не засорять файл world лишними записями:

sudo emerge -avl имя_пакета

Если к пакету необходимо применить дополнительные USE флаги можно указать их прямо в команде с помощью локальной переменной:

USE=”флаг1 флаг2″ sudo emerge имя_пакета

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

Иногда необходимо установить в 64х битной системе 32 битную программу или библиотеку. Например, Skype и Wine, тянут в зависимостях 32-битные библиотеки, а некоторые программы и вовсе существуют только в 32 битных версиях. Для установки 32-битных пакетов в Gentoo с недавних времен используется USE флаг – abi_x86_32. Достаточно добавить строчку в /etc/portage/package.use, и установить пакет Gentoo:

Еще такой случай, нужно установить только определенную версию пакета и не обновлять его, даже когда появиться новая. Тогда скрываем все версии выше нужной с помощью /etc/portage/package.mask, например, все версии выше 14.0.3:

sudo nano /etc/portage/package.mask

А затем устанавливаем пакет:

sudo emerge – av имя_пакета

Решение проблем с установкой пакетов в Gentoo

Установка программ в Gentoo, которые очень редко используются или еще нестабильны и тем более при использовании различных оверлеев может вызвать различные ошибки. Начнем с самых простых и элементарных.

Вы пропустили

AEGIS Algorithms Android Angular Apache Airflow Apache Druid Apache Flink Apache Spark API API Canvas AppSec Architecture Artificial Intelligence Astro Authentication Authorization AutoGPT AWS AWS Aurora AWS Boto3 AWS EC2 AWS Lambda Azure Babylon.js Backend bash Beautiful Soup Bento UI Big Data Binary Tree Browser API Bun Career Cassandra Charts ChatGPT Chrome Extension Clean Code CLI ClickHouse Coding Codux Combine Compose Computer Context Fusion Copilot Cosmo Route CProgramming cron Cryptography CSS CTF Cypress DALL-E Data Analysis Data science Database dbt dbt Cloud deno Design Design Patterns Detekt Development Distributed Systems Django Docker Docker Hub Drizzle DRY DuckDB Express FastAPI Flask Flutter For Beginners Front End Development Game Development GCN GCP Geospatial Git GitHub Actions GitHub Pages Gitlab GMS GoFr Golang Google Google Sheets Google Wire GPT-3 GPT3 Gradio Gradle Grafana Graphic Design GraphQL gRPC Guidance HMS Hotwire HTML Huawei HuggingFace IndexedDB InfoSec Interview iOS Jackknife Java JavaScript Jetpack Compose JSON Kafka Kotlin Kubernetes LangChain Laravel Linux LlaMA LLM localStorage Logging Machine Learning Magento Math Mermaid Micro Frontends Mobile Mobile App Development mondayDB MongoDB Mongoose MySQL Naming NestJS NET NetMock Networks NextJS NLP Node.js Nodejs NoSQL NPM OOP OpenAI OTP Pandas PDF PHP Playwright Plotly Polars PostgreSQL Prefect Productivity Programming Prometheus Puppeteer Pushover Python Pytorch Quarkus Rabbitmq RAG Ramda Raspberry Pi React React Native Reactor Redis REST API Revolut Riverpod RProgramming Ruby Ruby on Rails Rust Scalene SCDB ScyllaDB Selenium Servers Sklearn SLO SnowFlake Snowkase Software Architecture Software Development Solara Solid Spring Boot SQL SQLite Streamlit SudoLang Supabase Swift SwiftUI Tailwind CSS Taipy Terraform Testing Transformers TURN TypeScript Ubuntu UI Design Unix UX UX Design Vim Vite VSCode Vue Web Architecture Web Components Web Development Web Frameworks Web Scraping Web-разработка Webassembly Websocket Whisper Widgets WordPress YAML YouTube Zed Наука о данных Разное Тренды

Как исследовать и визуализировать данные МО для обнаружения объектов на изображениях