Установка пакетов в Gentoo
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 флаги, полное имя, размер, категорию и т д. А затем спросит нужно ли его устанавливать:
Здесь красным цветом отмечены активные 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, которые очень редко используются или еще нестабильны и тем более при использовании различных оверлеев может вызвать различные ошибки. Начнем с самых простых и элементарных.
Установка и настройка Gentoo: конспект моей установки
Приспичило собрать на отдельном диске свеженькую ОС — без графики, только основные компоненты.
Кратко о железе. Сетевая карта и видюха в данном случае роли не играют — мои железки отлично поддерживаются в линуксе. Тем более, что при настройке ядра каждый должен выбрать драйвера для своего железа.
На борту имеется:
- Intel Core i7-3770
- Три SATA HD
- sda — Win 10
- sdb — Gentoo рабочая система
- sdc — пустой диск
На руководство я не претендую и советую после прочтения конспекта обратиться к той самой Великой Книге всех гентушников — Хэндбук (далее ХБ):
https://wiki.gentoo.org/wiki/Handbook:AMD64/ru
Я лишь хочу показать, что даже для неопытного линуксоида, к которым я отношу и себя, установка Gentoo не составляет каких-то особых проблем. Добавлю, что при установке системы я нахожусь в заранее выгодном положении. Во-первых, за плечами не одна сборка этого чуда. Во-вторых, я работаю из полностью допиленной системы Gentoo. Для установки Gentoo сгодится любой дистрибутив, установленный на ПК, но можно воспользоваться Live-образами с сайта https://gentoo.org/downloads/ или http://www.system-rescue-cd.org/Download/. Вторым я сам не пользовался, но говорят, что он вполне пригоден. А Hybrid ISO (Live-DVD) вполне способен обеспечить комфортную среду для сборки системы. Самое главное, чтобы в запущенной системе работал интернет.
Итак, начну.
Первый этап установки состоит в разметке диска, на котором будет установлена свеженькая ОС. Я размечаю так, как я привык. Думаю, человек, дошедший до установки Gentoo, сам знает, как ему нужно разбивать диск.
Все действия я выполнил от имени root.
Разметил sdc на четыре раздела при помощи cfdisk — удобная программа.
Схема разделов:
- sdc1 — 512M — под boot (тип ФС 83)
- sdc2 — 50GB — под корень (тип ФС 83)
- sdc3 — 413,3 — под home (тип ФС 83)
- sdc4 — оставшиеся ровно 2G под swap (тип ФС 82)
Создал ФС на размеченном диске.
Создал директорию, в которую смонтирую корень будущей системы sdc2.
Создал на нём нужные мне директории.
У меня в проверке даты нет нужды, я работаю в настроенной системе. Но если используется какой-то Live-образ, дату нужно проверить.
И в случае несоответствия настроить: месяц, число, час, минута, год. Например:
Перешёл в директорию корня новой системы.
При помощи elinks (можно использовать хоть links, хоть wget — что душа захочет) скачал stage3 системы.
Взял архив по адресу:
releases > amd64 > autobuilds > current-stage3-amd-64 > stage3-amd64-*.tar.xz
Архив сохранен в /mnt/gentoo. Распаковал.
С этого момента начинается базовая настройка будущей системы.
Файл make.conf содержит в себе параметры компиляции пакетов, компонентов для сборки, важных путей для portage. Поскольку я ставлю ОС без всякой графики и прочего, на данном этапе мне достаточно такого конфига:
Коротко о некоторых параметрах:
CFLAGS=»-march=ivybridge -O2 -pipe» — здесь указал технологию процессора (ivybridge).
CPU_FLAGS_X86=»aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3″ — наборы инструкций процессора. Их я вычислил командой cpuid2cpuflags. Если в запущенной системе такой утилиты нет, можно сделать это после чрута, установив
MAKEOPTS=»-j6″ — имея 4-ядерный камень с 8-ю потоками выполнения, я выбрал 6 потоков компиляции. Мне хватает.
GENTOO_MIRRORS=»ftp://mirror.yandex.ru/gentoo-distfiles/» — выбрал зеркало пакетов. Всегда пользуюсь зеркалом Яндекса.
ACCEPT_KEYWORDS=»amd64″ — выбрал стабильную ветку для 64-битной системы.
amd64 — нестабильная. С x86 и
x86 всё аналогично.
Настроил дефолтный репозиторий ebuild-ов, как требует ХБ.
Скопировал информацию о действующих DNS провайдера.
Смонтировал необходимые ФС.
Чрутнулся в новую систему, обновил среду.
Команда ниже — для удобства. Советую выполнить.
Смонтировал остальные разделы уже в чруте.
Получил снимок репозитория, обновил его.
Есть новости дистрибутива. Стоит почитать.
Читать можно командой eselect news. Если не ввести номер, под которым размещена новость, будут открыты все сообщения и помечены прочитанными.
Список профилей системы.
Стоит выбрать stable профили.
По умолчанию включен устраивающий меня профиль. Проверил.
Установить другой можно командой:
Обновил мир. Поскольку я выбрал лёгкий профиль — без иксов, графики и прочего, обновление не заняло много времени — порядка пяти минут.
Можно поглядеть, какие флаги включены в профиле.
Описание флагов можно почитать тут:
Флаги задаются в переменной USE. На данном этапе никаких флагов я включать не буду.
Установил временную зону.
Список зон можно посмотреть директории:
Настроил нужные мне локали.
Выбрал системную локаль, обновил среду.
Локаль записалась сюда:
Установил сиходники ядра.
Проверил, указывает ли ссылка /usr/src/linux на директорию с исходниками ядра.
В дальнейшем список исходников можно посмотреть и выбрать так:
Для настройки ядра рекомендую обратиться к Хэндбуку, поскольку это самый сложный этап.
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel/ru
У меня имеется конфиг рабочего ядра, его я перенес в новую систему.
Скомпилировал ядро и модули.
Установил имя компьютера.
Настроил сеть. Использую статику. Вручную прописываю DNS провайдера. О других вариантах настройки лучше меня расскажет ХБ.
Сделал симлинк для запуска сетевого интерфейса, добавил его в загрузки.
Настроил системные часы. Использую систему UTC. Если на ПК стоит другая ОС, не использующая время в UTC, возникнут проблемы. Все ОС должны быть настроены на UTC. Винда, кстати, тоже умеет.
clock_systohc=»YES« — раскомментировал эту строку для синхронизации с «железным» временем.
По установке системных средств можно обратиться к ХБ.
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Tools/ru
Настроил точки монтирования.
Указал в make.conf платформу для grub2.
Добавил флаг mount для grub2 (требует os-prober)
Установил grub2 и os-prober.
Установил загрузчик на sdc, настроил конфиг.
Вышел из чрута и папки с новой системой.
Если что-то там не отмонтировалось — не беда. После перезагрузки с целевого диска я имею рабочую Gentoo без графики, с сетью, с учётной записью root и полностью готовую к настройке.
Как можно видеть, стандартная установка Gentoo едва ли вызовет сложности. И спасибо, что заглянули в мою шпаргалку!