Gentoo linux установка пакетов

пакеты gentoo

При установке пакетов в gentoo вы можете столкнуться с различного рода проблемами, которые обязательно рано или поздно появятся. Далее мы подробно разберем какие могут возникнуть ситуации и как с ними бороться.

Список установленных вами пакетов храниться в файле world, там будут отображаться только те пакеты которые вы устанавливали сами.

Для установки пакетов используется менеджер «emerge»:
emerge имя_пакета

Для более детального контроля над установкой:

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

Например чтобы вывести всю информацию о пакете(use флаги, полное имя, размер а также задать вопрос устанавливать ли пакет) введите следующую команду:
sudo emerge -av имя_пакета

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

Буква возле слова «ebuild» означает действие которое будет происходить с пакетом:

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

Если к пакету необходимо применить дополнительные USE флаги можно указать их прямо в команде с помощью локальной переменной:
USE=»флаг1 флаг2″ sudo emerge имя_пакета

Для установки 32-битных пакетов:
nano /etc/portage/package.use
категория_пакета/имя_пакета abi_x86_32

Если необходимо установить определенную версию пакета и не обновлять его. Необходимо скрыть все версии выше нужной, например все версии выше 14.0.3:
sudo nano /etc/portage/package.mask
>категория_пакета/имя_пакета-14.0.3

> -все, что новее указанной версии;
>= -все, что новее или равно указанной версии;
sudo emerge -av имя_пакета

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

Это значит что пакет не был протестирован с вашей архитектурой или считается не совсем стабильным для нее:
nano /etc/portage/package.keywords
категория_пакета/имя_пакета

amd64 знак =, > или другие тоже нужно писать.

Это значит что пакет считается еще нестабильным или уже устаревшим и замаскирован, или он несовместим с вашим профилем:
nano /etc/portage/package.unmask
категория_пакета/имя_пакета

Это значит что пакету требуется лицензия которую он не может принять по умолчанию.
nano /etc/portage/package.license
категория_пакета/имя_пакета

Данная ошибка говорит о следующем, чтобы собрать вышеуказанный список пакетов, нужно пакет >=dev-lang/python-2.7.12:2.7 собрать с юзфлагом «sqlite», для этого:
echo «>=dev-lang/python-2.7.12:2.7 sqlite» >> /etc/portage/package.use/custom

(06 Apr 2014)
# Multiple issues and dead for ages (#327735).
# You can use cpupower (from sys-power/cpupower or
# sys-apps/linux-misc-apps). Removal in a month.

Данная ошибка означает, что пакет sys-power/cpufreqd, объявлен как плохой и будет удален через месяц, но он установлен в вашей системе, поэтому его необходимо удалить, а за место него установить предложенный пакет sys-power/cpupower или sys-apps/linux-misc-apps.

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

[ebuild N ] app-doc/doxygen-1.8.13-r1::gentoo USE=»clang debug -doc -dot -doxysearch -latex -qt5 (-sqlite)» 4,784 KiB
[ebuild N ] dev-cpp/libcmis-0.5.2_pre20160820:0.5::gentoo USE=»-man -static-libs <-test>» 0 KiB
[ebuild N ] app-text/libwpg-0.3.1:0.3::gentoo USE=»-doc -static-libs» 0 KiB
[ebuild N ] app-text/libwps-0.4.4-r1::gentoo USE=»debug doc -static-libs -tools» 0 KiB
[ebuild N ] app-text/libmwaw-0.3.8::gentoo USE=»-doc -static-libs» 0 KiB
[ebuild N ] media-libs/libfreehand-0.1.1::gentoo USE=»-doc -static-libs» 0 KiB

Чтобы изменить флаги в отдельном пакете необходимо его добавить в package.use
При добавлении необходимо указать знаки ,=,(все, что старее, новеее или равно указанной версии)

[ebuild N ] app-doc/doxygen-1.8.13-r1::gentoo USE=»clang debug -doc -dot -doxysearch -latex -qt5 (-sqlite)» 4,784 KiB

чтобы в этом пакете включить флаг doc и выключить флаг clang, необходимо прописать следующее:
echo ‘>=app-doc/doxygen-1.8.13-r1 doc -clang’ >> /etc/portage/package.use

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

REQUIRED_USE=»foo? ( bar )» Если foo установлен, то bar должен быть установлен.
REQUIRED_USE=»foo? ( !bar )» Если foo установлен, то bar не должен быть установлен.
REQUIRED_USE=»foo? ( || ( bar baz ) )» Если foo установлен, то bar или baz должен быть установлен.
REQUIRED_USE=»^^ ( foo bar baz )» Только один из foo, bar или baz должен быть установлен.
REQUIRED_USE=»|| ( foo bar baz )» Хотя бы один из foo bar или baz должен быть установлен (но можно больше).
REQUIRED_USE=»?? ( foo bar baz )» Установка необязательна, но только один из foo bar или baz может быть установлен.

Источник



Установка Gentoo Linux

Gentoo Linux (произносится дже́нту [ˈdʒɛntuː], сленг — ге́нта, джента, ге́нту; по названию быстроплавающего папуанского пингвина) — это GNU/Linux дистрибутив, который довольно популярен и имеет гибкую, мощную технологию Portage. Данный дистрибутив совмещает в себе, возможность конфигурировать, настраивать и автоматизировать систему управления пакетами. Дэниель Роббинсом, положил начало Gentoo Linux с дистрибутива Enoch Linux который разрабатывал в 1999 году. Очень сильной особенностью генты, — есть то, что ее можно оптимизировать под конкретное аппаратное железо и добиться максимальной производительности.

Установка Gentoo Linux

Я за 5 лет администрирования Linux, только работал с deb’s и rpm’s ОС. Что касается Unix — то немного работал с FreeBSD. Спорный вопрос стоит с Mac OS X, многие будут говорить что это Unix, некоторые — что нет, из-за того, что BSD ядро, переписали и по мнению многих — не осталось ничего от предшественника. Я считаю что они заблуждаются (по крайней мере я хочу так верить) и это Unix система. Но тема не об этом… Пришло время до установки gentoo linux. Это моя первая установка. Я буду описывать процесс установки в очень подробной форме, чтобы многие смоги воспроизвести мои действия и «пощупать» данный дистрибутив.

Идем на официальный сайт и качаем один из образов:

  • Minimal Installation CD с amd64 aka x86_64 архитектурой.
  • Minimal Installation CD с x86 архитектурой.

У для меня подходит 1-й вариант. Я выкачал данный CD и подключил его в VMware, я буду использовать именно такую установку, но вы можете записать данный образ на диск или флешку и продолжить установку по моей статье.

Live загрузка gentoo

Т.к у меня — это виртуальная машинка, я запустил на ней ssh:

И сменил пароль для root, чтобы подключится к данной машине (я ленивый и не хочу все команды вводить руками).

Разбивка диска на разделы

Можно использовать различные варианты:

  • fdisk — Я описывал как это делается в своей статье — Утилита FDISK в Unix/Linux
  • cfdisk
  • parted — Я описывал как это делается в своей статье — Установка/Использование parted в Unix/Linux

Я буду юзать parted утилиту. Она уже имеется в системе. Для начала, я проверяю какое блочное устройство у меня используется в качестве диска:

Видим, что это — /dev/sda, что собственно и логично т.к у меня один диск. Начнем разбиение диска:

Проверяем какая партиция используется:

И это собственно логично!

Разметка готова! Я выполню разбивку следующим образом:

Данный раздел я буду использовать для загрузки. Сейчас я, выделю 2 Гб свопика:

А под все остальное, все оставшееся место:

И смотрим что получилось:

Не могу привести разметку. Не было необходимости!

Все имеется, но осталось подключить swap + отформатировать разделы:

Этим мы отформатировали свап раздел.

Действием что выше, подключили свап!

И последними командами, я форматнул разделы.

PS: Как я уже говорил я буду использовать MBR и дальше я буду приводить примеры по нему (при первой возможности, я дополню данный материал и для GPT).

Создаем папку для boot-а:

Смаунчено все и почти готово к установке.

Скачиваем STAGE

  • stage1 — самостоятельная подготовка минимальной системы для установки, и основные компоненты тоже придется самостоятельно собирать из исходников. Все выкачивается из интернета и компилируется из сорцов под железо чем самым, достигается максимальная оптимизация. Но на это все, вы потратите много времени ( собственно — это логично, т.к ВСЕ-ВСЕ будет компилироватся из исходного кода и под конкретную железяку). Для примера, чтобы собрать KDE на средней машине — вам потребуется около 55 часов.
  • stage2 — Минимальная система для установки уже создана (base layout), а вам остается только самостоятельно собрать основные компоненты из сорцов, которые будут качаться из интернета. На установку требуется меньше времени, но система менее оптимизированная.
  • stage3 — иногда называют Gentoo Reference Platform (так званая, эталонная платформа). Выкачивается архив со стейтом3 — который несет в себе систему. Установка заключается в компилировании ядра ( у меня заняло около 1ч, т.к у меня 2 проца + 2 Гб РАМ) и после чего, ставим весь необходимый софт из сорцов или бинарных пакетов.

Мною был выбран — stage3. Выкачиваем самый свежий (на момент написание статьи):

PS: Т.к ссылка что выше, не стабильная, то можно воспользоваться консольным браузером, например:

Находим нужный файл ( я покажу пример что и выше) и скачиваем его:

Использование links браузера

Скачали, нужно распаковать скачанный архив:

Почти все готово к установке.

Преднастройка до установки GENTOO LINUX

Для быстроты установки, выберем зеркало для установки:

Выбираем зеркало для установки ( ближайшее).

Сейчас нужно настроить DNS:

Монтируем необходимые ФС:

Выполняем переход в созданное окружение:

Создаем папку для портажей:

Делаем слепок дерева portage:

Приступаем к настройке часового пояса

  • Region — ваш регион.
  • City — ваш город.

У меня данная команда, выглядела:

Приступаем к настройке самих часов:

И приводим к виду:

Давайте посмотрим список локалей которые доступны:

Видим что стоит на 2. Надо выбрать en_US:

И можно переходить у установке генты.

Выбираем правильный профиль:

Сейчас стоит на 1. Чтобы изменить, используйте (взято для примера):

Выше, я выбрал 7-й пункт что подразумеваем использования KDE 5 plasma, для такого изменения необходимо изменить make.conf, А именно — дописать нужные «USE» параметры. Но для начала, посмотрим какие имеются в использовании:

Просмотрели, ознакомились и пришло время внести изменения:

В переменной «USE», указываются значения, которые влияют на параметры компиляции. Например, параметр «qt5», включает компиляцию с поддержкой «qt5″», для всех программ, которые могут поддерживать «qt5». А минус перед параметром, например, «-gtk» отключает поддержку «gtk».

Я пропустил данный этап и оставил все как и было!

Можно просмотреть информацию:

Все подготовлено, можно приступить к компиляции генты.

Установка Gentoo Linux

Я пришел к самому интересному, сборки генты.

-===СПОСОБ 1 — использовать genkernel==-

Устанавливаем исходных кодов ядра и програмульки genkernel:

PS: Можно собрать все руками (выкачать и скомпилить ядро). Я выполняю установку через genkernel.

немного модифицируем конфиг:

Приводим к виду:

MAKEOPTS — определяет, сколько параллельных процессов компиляции должно запускаться при установке пакета. Выставляем данный параметр по количество процессоров или ядер (Не всегда, но его устанавливают на 1 больше) .

Настроим ядро для установки с различными компонентами:

Получил вот такую псевдографику:

Настройка ядра в Gentoo Linux

Сейчас, необходимо включить поддержку ext2-4 (смотря что вы используете), для этого:

Потом нажимаем на сохранить и нажимаем на «save» и потом на «exit». Да начнется после этого — компилирование ядра….

Если ничего не хотите настраивать и оставить все как есть, то выполните:

-===СПОСОБ 2 ==-

PS: Еще не уверен в полной документации!

А можно, не устанавливать его и собрать все ручками, например (я ядро выкачал через «emerge gentoo-sources -av», но можно скачать его руками — так вы можете получить более новые версии):

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

И начинаем сборку:

Параметр «-j3», выставляется по количеству ядер ( идеально, ставить «количество ядер +1»). И да, у меня данной действие заняло около 12 минут!

Потом, устанавливаем модули:

И перемещяем ядро:

Где, arm64 — это архитектура! У вас может отличатся. ПРИМЕР:

Я указал утилиту «time» для того чтобы посмотреть за сколько оно скомпилируется.

Настройка GENTOO LINUX после установки

Ставим vim и еще ПО которое вспомнил:

И, приведем к следующему виду:

Еще открываем один файл:

И, приведем к следующему виду:

Ставим logrotate, syslog, vixie, udev:

Добавим syslog в автозагрузку:

Добавим vixie в автозагрузку:

Добавим ssh в автозагрузку:

Добавим в автозагрузку демоны:

Настрою STATIC IP для моей сетевой карты

Немного отредактируем конфиг :

Приводим к виду:

Смотрим что имеется (я за интерфейсы) и запускаем:

Настрою DHCP для моей сетевой карты

Приступим к настройке сети:

И приводим к виду:

PS: eno33554952 — это сетевой интерфейс.

И делаем так, чтобы оно работало:

Переходим к загрузчику.

Используем загрузчик

Их существует несколько, но я буду использовать классический вариант — grub.

-===СПОСОБ 1 — Установка и настройка grub==-

Выполняем экспорт списка всез UUID разделов:

И просмотрим его:

У меня вышел вот такой вывод:

Для установки GRUB2 сначала задайте для переменной GRUB_PLATFORMS одно или более значение в системном make.conf. Если не определять переменную, то GRUB2 сам определит, какая платформа установлена в системе. Он определит pc (для MBR стиля установки) для архитектур x86/amd64:

ИЛИ, ЭТО МОЖНО СДЕЛАТЬ ОДНОЙ КОМАНДОЙ:

Чтобы автоматически определять другие ОС ( например windows, Linux), нужно установить следующий пакет:

Если будет использоваться винда, то еще ставим:

Установим загрузчик для BIOS:

Создаем папку под граб:

Для установки GRUB2 в MBR, используем:

При помощи следующей команды, генерируем конфиг под grub:

Установим загрузчик для EFI:

Чтобы автоматически определять другие ОС ( например windows, Linux), нужно установить следующий пакет:

Создаем папку под граб:

При помощи следующей команды, генерируем конфиг под grub:

Если хотите, можно просмотреть:

Включение или отключение конфигурационных скриптов
Каталог /etc/grub.d/ содержит скрипты, которые использует grub-mkconfig для генерации файла grub.cfg. По умолчанию содержимое этого каталога должно выглядеть примерно так:

GRUB2 использует все установленные скрипты, которые помечены как выполняемые (по умолчанию они все включены). Чтобы отключить любой из этих скриптов, просто удалите бит выполнения с скрипт-файла используя команду chmod. В следующем примере все скрипты, кроме 00_header и 10_linux, отключены:

После редактирования скриптов (или удаления бита выполнения), перегенерируйте конфигурационный файл GRUB2 используя grub-mkconfig:

Установка GRUB2 на EFI совместимую систему, используем:

-===СПОСОБ 2 — Установка и настройка LILO==-

Не будет использоваться в рамках данной статьи. Просто описал что он имеются.

-===СПОСОБ 3 — Установка и настройка efibootmgr==-

Не будет использоваться в рамках данной статьи. Просто описал что он имеются.

Последние шаги

Меняем пароль от пользователя root:

Создаем нового пользователя для входа:

Назначаем ему пароль:

И так, уже почти все готово….. Выйдем из виртуальной среды:

Все примаунченое — уже не нужно, по этому — выполним отмантирование:

PS: В принципе, можно не выполнять демонтирование, т.к оно само отпадет при ребуте.

И, собственно, сама перезагрузка ОС:

Ну что, вот и установленная гента.

Установка sudo

Я не буду говорить зачем нужно sudo, тут и так понятно. Для начала, логинимся как рут и потом выполняем:

Выставим права sudo для моего пользователя:

Круто, да? Я думал что будет сложно, но потратив около 10-12ч на все — я понял что все просто.

В следующей статье, я опишу установку графической среды ( GUI), а на этом — я завершаю данную тему «Установка Gentoo Linux».

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

Установка и настройка 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 едва ли вызовет сложности. И спасибо, что заглянули в мою шпаргалку!

    Источник

    Gentoo Linux. Portage: первые шаги

    Portage является одним из самых заметных нововведений Gentoo в управлении программным обеспечением. Благодаря высокой гибкости и чрезвычайно богатым возможностям, Portage зачастую считается лучшим средством управления программным обеспечением для Linux.

    Portage полностью написана на Python и Bash, и в результате полностью прозрачна для пользователей, поскольку это языки сценариев.

    Большинство пользователей будут работать с Portage посредством утилиты emerge . Для просмотра всех доступных опций, обратитесь к странице руководства :

    Дерево Portage

    Ebuilds

    Когда в документации Gentoo говорится о пакетах (packages), подразумеваются названия программного обеспечения, которое доступно для пользователей Gentoo в дереве portage. Дерево portage — это коллекция ебилдов (ebuilds), файлов, содержащих всю необходимую для поддержки программного обеспечения информацию (установка, поиск, запрос, . ). По умолчанию, эти ебилды находятся в директории /usr/portage .

    Каждый раз, при работе portage с программным обеспечением, будет использоваться база ебилдов. Поэтому, важно регулярно обновлять дерево portage, так-как там содержится информация о новых программах, обновлениях безопасности и т.д.

    Обновление дерева Portage

    Обычно дерево portage обновляется с помощью rsync (программа для UNIX-подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодирование данных при необходимости). Обновление выполняется довольно просто, потому как emerge умеет работать с rsync:

    В случае, если обновить дерево с помощью rsync не удается (например, шлюз блокирует порт rsync 873/tcp), можно использовать emerge-webrsync для обновления с помощью снапшотов (snapshots). Это — ежедневно генерируемые Gentoo снимки дерева portage:

    Поддержка программного обеспечения

    Поиск программного обеспечения

    Есть несколько способов поиска программ в дереве portage. Одним из способов является использование emerge. По умолчанию, emerge —search возвращает имена пакетов, названия которых удовлетворяют (полностью или частично) заданное условие поиска .

    Например, чтобы найти все пакеты, содержащие «pdf» в названии:

    Для поиска по описаниям, используйте —searchdesc ( или -S) :

    Обратите внимание, что результат содержит подробную информацию. Поля довольно информативны, поэтому вдаваться в подробности их значения не имеет смысла :

    vrbehr/cups-pdf/
    Description: Provides a virtual printer for CUPS to produce PDF files.
    License: GPL-2

    Установка программного обеспечения

    Когда название требуемого программного обеспечения уже известно, установка его не составляет труда. Производится она всего одной командой emerge. Например, для установки gnumeric:

    Поскольку многие приложения зависят от других, попытка установить определенный пакет программного обеспечения так-же может привести к установке нескольких зависимостей. Не волнуйтесь, portage умеет обрабатывть зависимости. Чтобы выяснить, что portage будет устанавливать, добавьте аргумент —pretend . Например:

    Во время установки пакета, Portage скачивает необходимый исходный код из интернета (если необходимо) и по умолчанию сохраняет его в каталоге /usr/portage/distfiles/ . После этого пакет будет распаковываться, компилироваться и затем устанавливаться. Для загрузки исходного кода без его установки, добавьте аргумент —fetchonly к команде emerge:

    Поиск документации для установленного пакета

    Многие пакеты содержат собственную документацию. Устанавливать пакет документации или нет определяет USE флаг doc . Чтобы посмотреть, используется флаг doc для пакета или нет, используйте emerge -pv ИМЯ_ПАКЕТА :

    Чтобы включить установку документации только для некоторых пакетов, внесите требуемый пакет в /etc/portage/package.use с указанием использовать флаг doc.

    После установки пакета, его документацию, как правило, можно найти в подкаталоге с именем пакета в каталоге /usr/share/doc/ . Также, список всех установленных файлов можно вывести с помощью команды equery , которая является частью пакета app-portage/gentoolkit .

    Удаление программного обеспечения

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

    Внимание: Portage не проверяет зависимость остальных пакетов от удаляемого пакета, но предупреждает при попытке удаления важного для системы пакета.

    Когда пакет будет удален из системы, зависимости этого пакета, которые были установлены автоматически при его установке, останутся в системе. Чтобы Portage мог найти и удалить все ненужные зависимости, используйте emerge —depclean , функциональность которого описана далее.

    Обновление системы

    Для поддержания системы в актуальном состоянии (не говоря уже об установке последних обновлений безопасности), необходимо регулярно ее обновлять. Так как Portage работает на основании ебилдов в дереве portage, первым что нужно сделать — это обновить дерево портежей. Когда дерево обновлено, система может быть обновлена с помощью: emerge —update @world . В следующем примере, аргумент —ask используется для отображения списка пакетов, которые будут обновляться, и запроса подтверждения на их обновление:

    Portage будет искать более новые версии установленных приложений. Тем не менее, он будет проверять только версии явно установленных пакетов (перечисленных в /var/lib/portage/world) — это не полная проверка их зависимостей. Чтобы обновить пакеты вместе с из зависимостями — добавьте аргумент —deep :

    Тем не менее, это не означает «все пакеты»: некоторые пакеты в системе требуются во время процесса компиляции и сборки пакетов. Но, как только пакет будет установлен, эти зависимости станут не актуальны. Portage называет их «зависимостями сборки» (build dependencies). Чтобы включить их в цикл обновления, добавьте —with-bdeps=у :

    Поскольку обновления безопасности, случаются и в пакетах явно не установленных в системе (но которые установлены в качестве зависимостей других программ), рекомендуется время от времени запускать эту команду.

    Если были изменены параметры USE, рекомендуется также добавить аргумент —newuse . Portage проверит требуется ли установка новых пакетов или перекомпиляця существующих:

    Метапакеты

    Некоторые пакеты в дереве портежей не имеют реального содержания, но используются для установки набора других пакетов. Например, пакет kde-base/kde-meta полностью устанавливает среду KDE, устанавливая различные пакеты kde в качестве зависимостей.

    Удаление такого пакет из системы с использованием emerge —unmerge не будет иметь большого эффекта, так как все зависимости останутся в системе.

    Portage также имеет функционал для удаления ненужных зависимостей. Но, поскольку доступность программного обеспечения динамически зависима, важно, чтобы сначала была обновлена вся система полностью, в том числе и новые изменения, применяемые при изменении USE флагов. После этого можно запустить emerge —depclean и удалить ненужные зависимости. По завершении, возможно будет необходимо пересобрать пакеты, динамически связанные с удаленными пакетами.

    Все это осуществляется следующими тремя командами:

    revdep-rebuild является частью пакета app-portage/gentoolkit . Не забудьте его установить:

    Лицензии

    Начиная с версии 2.1.7 Portage, можно разрешать или запрещать установку программного обеспечения на основании требуемой лицензии. Все пакеты в дереве содержат запись, указывающую на лицензию их ебилдов. Запуск emerge —search PACKAGENAME покажет информацию о лицензии пакета.

    По умолчанию, Portage разрешает все лицензии, за исключением End User License Agreements (EULAs), которая требует чтения и подписания соглашения о принятии.

    Переменная, которая управляет разрешенными лицензиями, называется ACCEPT_LICENSE . Установить ее значение можно в файле /etc/portage/make.conf . В следующем примере, показано ее значение по умолчанию:

    При этой конфигурации, пакеты, требующие EULA, не будут устанавливаться.

    ACCEPT_LICENSE можно установить глобально в файле /etc/portage/make.conf или для отдельного пакета в /etc/portage/package.license .

    Например, для того чтобы разрешить для app-crypt/truecrypt использовать лицензию truecrypt-2.7, добавьте в файл /etc/portage/package.license следующее:

    В этом примере разрешается установка версий app-crypt/truecrypt требующих лицензию truecrypt-2.7, но не версий с лицензией truecrypt-2.8.

    Важно: Лицензии хранятся в /usr/portage/licenses/, а группы лицензий в /usr/portage/profiles/license_groups. Первая запись каждой строки ПРОПИСНЫЕ буквы названия группы лицензий, и каждая последующая запись это индивидуальная лицензия.

    Группы лицензий, определенные в ACCEPT_LICENSE начинаются со знака @. Обычно требуется разрешать установку только свободного программного обеспечения и документации . Для этого удалите все принятые в настоящее время лицензии (с помощью — * ), а затем разрешите лицензии только из группы @FREE следующим образом:

    В этом случае, «FREE», в основном, определяется FSF и OSI. Пакеты, лицензии которых не соответствует этим требованиям, не будут установлены.

    Когда Portage ругается

    Терминология

    Как отмечалось ранее, Portage чрезвычайно мощный инструмент и поддерживает множество функций, которые отсутствуют в других инструментах управления ПО. Чтобы понять это, мы объясним некоторые аспекты Portage, не вдаваясь в излишние подробности.

    С помощью Portage разные версии отдельного пакета могут сосуществовать в одной системе. В то время как другие системы управления стремятся называть пакеты в соответствии с версией (например freetype и freetype2), Portage использует технологию под названием SLOTs (слоты). Пакет присваивает определенный слот своей версии. Пакеты с разными слотами способны сосуществовать в одной системе. Например, пакет freetype имеет ебилды с SLOT=»1″ и SLOT=»2″.

    Есть также пакеты, выполняющие одинаковые функции, но различающиеся реализацией. Например, metalogd, sysklogd и syslog-ng являются системными службами журналирования. Приложение, которое полагается на наличие в системе «системного журнала» не может зависеть, например от metalogd, а остальные программы от syslog-ng. В Portage предусмотрены виртуальные пакеты: каждая служба журналирования числится как «исключительная» зависимость службы журналирования в виртуальном пакете журналирования ( virtual/logger ). Так что приложения могут зависеть от пакета virtual/logger. При установке пакета virtual/logger будет устанавливаться служба журналирования, указанная первой в его списке, если конечно пакет службы журналирования еще не был установлен.

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

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

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

    Заблокированные пакеты

    В файлах ebuild содержатся определенные поля, сообщающие Portage о зависимостях. Есть два возможных вида зависимостей: «зависимость сборки», объявленная в DEPEND и «зависимость выполнения», объявленная в RDEPEND. Когда одна из них явно помечает пакет или виртуальный пакет как несовместимый, возникает блокировка.

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

    Для решения блокировки, пользователи могут или не устанавливать пакет, или удалить конфликтующий пакет. В данном примере, можно отказаться от установки postfix или удалить ssmtp.

    Иногда бывают также блокирующие пакеты с конкретными атомами, например <media-video/mplayer-1.0_rc1-r2 . В этом случае, обновление до более новой версии блокирующего пакета снимет блокировку.

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

    Замаскированные пакеты

    — gnome-base/gnome-2.8.0_pre1 (masked by:

    x86 keyword)
    — lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
    — sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
    — dev-util/cvsd-1.0.2 (masked by: missing keyword)
    — games-fps/unreal-tournament-451 (masked by: package.mask)
    — sys-libs/glibc-2.3.2-r11 (masked by: profile)
    — net-im/skype-2.1.0.81 (masked by: skype-eula license(s))

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

    arch keyword Приложение не протестировано для помещения в стабильную ветвь. Подождите несколько дней или недель и попробуйте еще раз. -arch keyword или -* keyword Приложение не работает на вашей архитектуре. Если вы считаете, что оно работает, сообщите об ошибке на нашем сайте Bugzilla. missing keyword Приложение не было проверено на вашей архитектуре. Попросите группу портирования в архитектуру проверить пакет, или протестируйте его за них и представьте свои выводы на нашем сайте Bugzilla. package.mask В пакете было обнаружено повреждение, нестабильность или уязвимость, и он был намеренно отмечен как do-not-use (не для использования). profile Пакет не подходит для текущего профиля. Установка приложения может повредить систему, или просто несовместима с профилем, используемым настоящее время . license Лицензия пакета не совместима с настройками ACCEPT_LICENSE. Добавьте лицензию или группу лицензий в принятые, в /etc/portage/make.conf или /etc/portage/package.license

    Необходимые изменения USE флагов

    Такое предупреждение или ошибка возникает, когда пакет, требуемый для установки, зависит не только от другого пакета, но и требует, чтобы пакет был собран с особым USE флагом (или набором USE флагов). В данном примере, пакет app-text/feelings должен быть собран с USE=»test», но этот USE флаг не установлен в системе.

    Для решения этой проблемы, добавьте требуемый USE флаг в глобальные USE флаги в /etc/portage/make.conf, или установите его для конкретного пакета в /etc/portage/package.use.

    Недостающие зависимости

    . Problem with ebuild sys-devel/gcc-3.4.2-r2
    . Possibly a DEPEND/*DEPEND problem.

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

    Неоднозначное имя ебилда

    * dev-tinyos/listen [ Masked ]
    Latest version available: 1.1.15
    Latest version installed: [ Not Installed ]
    Size of files: 10,032 kB
    Homepage: https://www.tinyos.net/
    Description: Raw listen for TinyOS
    License: BSD

    * media-sound/listen [ Masked ]
    Latest version available: 0.6.3
    Latest version installed: [ Not Installed ]
    Size of files: 859 kB
    Homepage: https://www.listen-project.org
    Description: A Music player and management for GNOME
    License: GPL-2

    . The short ebuild name «listen» is ambiguous. Please specify
    . one of the above fully-qualified ebuild names instead.

    Приложение, которое выбрано для установки, имеет имя соответствующее более чем одному пакету. Для решения этого — укажите наименование категории. Portage будет информировать пользователя о возможных совпадениях для выбора одного из них.

    Циклические зависимости

    ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
    ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2

    Два (или более) устанавливаемых пакета зависят друг от друга и поэтому не могут быть установлены. Это, скорее всего, ошибка в одном из пакетов в дереве портежей. Пожалуйста, через некоторое время заново синхронизируйте дерево портов и попробуйте снова. Также может быть полезным проверить Bugzilla на решение возникшей проблемы, и если его нет, сообщить об ошибке.

    Ошибка загрузки

    Portage не смог загрузить исходный код данного приложения и попытается продолжить установку других приложений (если возможно). Эта ошибка может быть из-за неправильно синхронизированного зеркала или потому что неверно указан источник загрузки в ебилде. Сервер, где находятся исходные коды, также может почему-то сломаться.

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

    Защита профилем

    Пользователь запросил удаление пакета, входящего в состав базовых пакетов системы. Он включен в профиле как обязательный, и, следовательно, не может быть удален из системы.

    Ошибка проверки digest

    digest — md5 сумма файлов, необходимых для установки пакетов.

    Это признак того, что что-то не так с деревом Portage. Зачастую это происходит потому, что разработчик совершил небольшую ошибку при добавлении пакета в дерево.

    Когда проверка digest не удается, не пытайтесь пересоздать его для пакета лично. Это не решит проблему, а почти наверняка сделает только хуже!

    Вместо этого, подождите несколько часов пока дерево не обновится. Вполне вероятно, что ошибка была замечена сразу, но ее исправление может занять некоторое время для синхронизации дерева портежей на зеркалах. Проверьте Bugzilla и посмотрите, есть ли сообщения о возникшей проблеме или поспрашивайте на IRC канале #gentoo. Если упоминаний нет, нужно сообщить о нерабочем пакете.

    После того, как ошибка будет исправлена, повторно синхронизируйте дерево портежей, чтобы обновить исправленный digest.

    Важно: Это не означает повторную синхронизацию дерева несколько раз в течение короткого периода времени! Как указано в политике Rsync (а также при работе «emerge —sync»), пользователи, которые синхронизируются слишком часто будут заблокированы! На самом деле, лучше подождать до следующей плановой синхронизации, и не перегружать rsync сервера ресинхронизациями.

    Источник

    Читайте также:  Правила установки санитарно защитной зоны
Adblock
detector