Gentoo

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

Gentoo Linux

Рабочий стол Live CD дистрибутива Gentoo Linux 2008.0
Разработчик

Международное сообщество разработчиков

Семейство ОС

GNU/Linux

Исходный код

Открытый исходный код

Последняя версия

2008.0 — 6 июля 2008

Тип ядра

Монолитное ядро Linux

Лицензия

GNU GPL

Состояние

Актуальное

Веб-сайт

www.gentoo.org

Gentoo Linux (дже́нту, ге́нту) — один из дистрибутивов GNU/Linux, созданный Даниэлом Роббинсом на основе разработок дистрибутива Enoch.

Содержание

[править] Название

Gentoo (произносится «дженту», хотя в русскоязычной среде часто можно услышать «генту») — это английское название вида пингвинов Pygoscelis papua. Согласно Книге рекордов Гиннеса 98 этому виду пингвинов принадлежит рекорд скорости плавания (36 км/ч).

[править] История

Gentoo появился на основе разработок собственного дистрибутива Даниэла Роббинса под названием Enoch Linux. Уже тогда основной целью дистрибутива являлась собственная сборка (подобная Linux from Scratch), оптимизированная под конкретное аппаратное обеспечение и содержащее минимальный, необходимый пользователю, набор программ.

Эксперименты над сборками GCC показали, что производительность получаемого пакета увеличивалась (в зависимости от аппаратного обеспечения) от 10 до 200 % по сравнению с бинарными сборками gcc, поставляемыми другими дистрибутивами. Наработки, увеличивающие производительность, были включены в официальный выпуск gcc 2.95, благодаря чему другие дистрибутивы также получили дополнительный прирост в производительности. Начиная с этого момента, Enoch начал приобретать репутацию «быстрого» дистрибутива, после чего было принято решение сменить название на Gentoo Linux.

После ряда проблем разработки Даниэл приостановил разработку Gentoo и переключился на FreeBSD, из которой позднее были привнесена идеология портов — система управления пакетами с помощью сценариев сборки (ebuild), позднее названная Portage.

31 марта 2002 года вышла первая версия дистрибутива.

[править] Предупреждение для новичков

Хотя основной мотив использования Gentoo Linux — увеличение скорости работы системы за счёт оптимизации под конкретное аппаратное обеспечение[источник не указан 44 дня], прирост производительности более ощутим на современных компьютерах. При этом компиляция системы на старом процессоре[1] может занять до недели чистого машинного времени. Это имеет простое объяснение: чем старше процессор — тем ближе его набор инструкций к стандартному минимальному, а выигрыш в производительности достигается в основном за счёт использования более мощных инструкций новых процессоров. Для старых процессоров может быть разумнее устанавливать кросс-компилированные пакеты, т. е. бинарные пакеты, предварительно скомпилированные на более мощной системе. Также возможно использовать распределённую компиляцию (distcc), а также ускорение процесса компиляции за счёт использования кеша (ccache, будьте осторожны с использованием, может вызвать проблемы как на этапе сборки так и на этапе выполнения программ).

Гораздо больше Gentoo Linux приспособлен для максимального использования возможностей новейших процессоров, для установления рекордов производительности[источник не указан 44 дня].

[править] Основные особенности

  • Мощная и гибкая технология Portage, совмещающая в себе возможности конфигурирования, настройки, а также автоматизированную систему управления пакетами. Последняя создавалась под влиянием системы управления пакетами в ОС FreeBSD, называемой портами.
  • Оптимизация системы под конкретное аппаратное обеспечение и нужды пользователя. Это достигается посредством сборки программ из исходных текстов с использованием так называемых USE-флагов оптимизации и подключением/отключением необходимых модулей. Для удобства все опции могут быть внесены в конфигурационные файлы как для системы в целом (/etc/make.conf), так и для конкретных программ (/etc/portage/package.use). В случае необходимости изменения флагов, например, в случае подключения поддержки системы печати (cups) или потребности в дополнительных функциях (kerberos, pda), они будут учтены при следующем обновлении, и все программы, где используются эти флаги, включая все зависимости, — автоматически пересобраны. Таким образом, любое обновление программ или системы осуществляется очень просто, например для всей системы в целом обычно используют emerge -vDNu world, обновление только системных программ emerge -vDNu system.
  • Собственная init-система, расширенная и удобная система инициализационных файлов, в частности, вместо числовых используются именованные уровни запуска (runlevels), при этом с указанием зависимости от прочих сценариев. Для управления используется команда rc-update.
  • Маски́рование (masking) — возможность использовать как стабильные (по умолчанию), так и экспериментальные, но более свежие/функциональные версии программ. При этом сохраняется возможность откатиться на любую из старых версий (также следует учитывать, что есть ряд пакетов и подсистем не поддерживающих возврат к старым версиям, что связано с особенностями их функционирования, например библиотека glibc).

В последнее время для программ, требующих долгой компиляции, распространяются официальные бинарные сборки программ, например, openoffice-bin, mozilla-firefox-bin. Также есть много ресурсов с неофициальными сборками.

[править] Установка

Установка Gentoo может быть произведена различными способами. Наиболее распространенный — установка с минимального диска и архива stage3. Как и многие другие дистрибутивы, Gentoo можно установить также с LiveCD или из другого работающего Linux-дистрибутива.

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

Начиная с версии 2006.0 была выпущена графическая (GTK+) программа-установщик, которая значительно упрощает установку системы[1]. В отличие от стандартного способа установки с минимального загрузочного диска, прорамма-установщик использует stage1.

[править] Catalyst

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

[править] Стадии

Обычно установка производится начиная с одной из трех «стадий» (stage-архивов):

  • Stage1: Должна быть подготовлена минимальная система для установки и должны быть собраны все основные компоненты целевой системы.
  • Stage2: Минимальная система для установки уже подготовлена, однако базовые компоненты целевой системы по-прежнему должны быть собраны самостоятельно.
  • Stage3: Минимальная система для установки уже подготовлена и базовые компоненты целевой системы уже собраны.

С ноября 2005 года, официально поддерживается только установка из stage3[2] Несмотря на то, что архивы с первыми двумя стадиями все еще доступны для скачивания, инструкции для установки с их использованием были удалены из «настольной книги».[3] и добавлены в Gentoo FAQ.

[править] Live USB

Существуют документированные способы создания Live USB-версии Gentoo вручную или с помощью UNetbootin.

[править] Философия Gentoo

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

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

При желании выяснить, как происходит сборка пакета, они могли бы заглянуть в относительно понятный сборочный файл (ebuild) и все узнать из него. Желая подстроить процесс сборки, они применяли бы флаги использования (USE). При желании добавить пакет, они бы создавали новый сборочный файл, включаемый в общее дерево. При желании использовать пакет, они бы просто говорили: „Явись!“ (emerge), — а все связанные с ним пакеты настраивались бы автоматически.

Людям понравилась концепция Portage, и Gentoo Linux стал быстро развиваться. Мы получили известность как дистрибутив „из исходников“, но суть концепции Gentoo — не в этом. „Из исходников“ — важный и ключевой аспект Gentoo, который был и останется необходимым, но не единственный и не главный. Основополагающая задача — создание технологии, позволяющей как нам, так и другим делать то, что хочется, без ограничений.

Чтобы подытожить суть Gentoo, представим себе пользователя, сидящего перед системой Linux. Чего он или она захочет сделать? Философия Gentoo — позволить этому пользователю делать то, что он или она пожелает, не вставая на его пути.

В то время, когда был рождён Gentoo, камнем преткновения было отсутствие лёгкого способа сборки пакетов из исходных текстов в соответствии с указаниями пользователя. Сейчас этот вопрос мы хорошо отработали, а что ещё не слишком развито — это поддержка заранее собранных пакетов, хотя Portage поддерживает сборку готовых бинарных пакетов почти с самого начала. Именно этим мы занимаемся сейчас.

Важно, чтобы наши инструменты поддерживали бинарные пакеты, поскольку те широко используются и очень востребованы в сообществе Linux. Без поддержки бинарных пакетов мы не могли бы заявлять, что наш инструментарий создан, чтобы давать пользователю возможность сделать всё, что он захочет. Целенаправленно исключив поддержку бинарных пакетов, мы попытались бы вмешаться в подход пользователя к решению конкретных задач, взамен навязывая свою собственную волю или взгляд на то, как ему следует подходить к решению. А избегая сборки бинарных пакетов сами, мы не приблизились бы к уверенности в том, что наши инструменты хорошо с ними работают, не смогли бы ручаться, что другие тоже смогут собирать бинарные пакеты, и даже не смогли бы продемонстрировать, что наши инструменты хорошо работают с бинарными пакетами. Кроме этих философских причин, есть много чисто практических соображений, чтобы создавать бинарные пакеты.

Философия Gentoo в одном абзаце такова. Каждому пользователю приходится выполнять определённую работу. Цель Gentoo — разработка инструментов и систем, позволяющих пользователю заниматься своим делом как можно эффективнее и в своё удовольствие, так, как он сочтет нужным. Наши инструменты должны приносить радость и помогать пользователю оценить по достоинству все богатство Linux и сообщества свободного программного обеспечения, а также гибкость свободных программ. Такое возможно только тогда, когда инструменты создаются, чтобы отражать и проводить волю пользователя, оставляя для него открытыми все возможности с самого начала (с исходного кода). Когда инструмент заставляет пользователя действовать определённым образом, инструмент работает против него, а не на него. Все мы сталкивались с ситуациями, когда инструменты стремились навязать нам свою собственную волю. Такой подход — полная противоположность, несовместимая с философией Gentoo.

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

Будущая задача Gentoo — продолжать борьбу за создание инструментов, близких к идеалу. Инструментов, удовлетворяющих нужды множества различных пользователей (каждого — со своими разнообразными целями) с простотой, идущей рука об руку с непревзойдённой мощью. Разве вы не любите пользоваться инструментами, которые отлично подходят для ваших нужд? Разве это не великолепное ощущение? Наша цель — передать это чувство как можно большему числу людей.»

Дэниел Робинс

  1. Имеются в виду процессоры уровня Pentium 3 и ниже {{подст:АИ}}.
  2. Gentoo Linux Newsletter (англ.) (14 ноября 2005). Проверено 9 ноября 2008.
  3. Gmane — Mail To News And Back Again (англ.). Sven Vermeulen (5 ноября 2005). Проверено 10 октября 2008.

[править] Полезные команды

1. Основные утилиты для управления пакетами

gentoolkit # основные утилиты: euse, equery, eclean, quickpkg... epm # аналог equery esearch # быстрый индексированный поиск по базе пакетов

2. Полезные утилиты и комманды

revdep-rebuild # Находит неработающие бинарники и устанавливает

  1. необходимые для их работы пакеты

euses xinerama # Описание USE флага xinerama

epm -qa # список установленных пакетов

equery l # список установленных пакетов equery list -d # дубликаты equery l kde-base/ # список установленных пакетов из раздела kde-base equery b /bin/ls # какому пакету принадлежит файл /bin/ls equery uses samba # с какими флагами был установлен пакет samba equery files mc # какие файлы принадлежат пакету mc equery depgraph mc # показать дерево зависимостей пакета mc equery -q d gtk+ # какие установленные пакеты зависят от gtk+ equery u mc # посмотреть значения USE флагов для mc

quickpkg mc # собрать бинарный пакет уже установленный в системе

eclean -p distfiles # какие исходные файлы устарели и не будут использоваться eclean distfiles # удалить устаревшие исходники из /usr/portage/distfiles

emerge depclean # удалить из системы все ненужные пакеты

  1. может привести к удалению нужных пакетов

emerge info # вывести текущие настройки (в т.ч. USE) emerge -s foo # поиск пакета по имени emerge -p -v foo # какие USE флаги влияют на эту программу и

  1. сколько Kb еще нужно докачать исходников

emerge -p -f bar # вывод url откуда можно тянуть sources emerge -p -e bar # показать все зависимости программы без glibc emerge -p -u foo # показать, что будет обновляться emerge -p depclean # вывести пакеты которых нет в world и от

  1. которых никто не зависит (для удаления)

emerge sync # обновление portage через rsync:// emerge -f foo # только выкачка sources без установки

emerge -p bar # вывод что нужно для установки программы emerge -p -t foo # вывод что нужно для установки программы

  1. (зависимости выводятся в виде дерева)

emerge -a bar # то-же что и -p, но после вывода информации

  1. спрашивает продолжить ли выполнять emerge

emerge -k foo # установка прекомпилированной программы из

  1. /usr/portage/package/All/ __ЕСЛИ__ там есть
  2. нужная версия программы

emerge -K bar # как и -k, но если нужной прекомпилированной

  1. версии нет, то используется какая есть

emerge foo # установка программы emerge -u bar # обновить пакет (возможно, на меньшую версию) emerge -uDN world # полный апгрейд системы emerge -C foo # удалить пакет (unmerge). зависимости при

  1. удалении __НЕ__ проверяются!!!

emerge --info # Посмотреть настройки portage

etcat -v bar # вывести все версии пакета ... в портаже etcat -u ИМЯ # с какими настройками USE (только из влияющих

  1. на эту программу) была установлена программа

emerge system # Обновить всю систему emerge -u system # Обновить всю систему

emerge -p --depclean # Показать какие неиспользуемые зависимости будут удалены

emerge -auvDN world # Пересборка всей системы после изменения USE флагов

emerge --depclean # Удалить условные зависимости, присутствующие в «старой»

  1. системе, но больше не нужные при новом составе USE-флагов.

Изменить USE флаг для одного приложения echo "category/moo some flags" >> /etc/portage/package.use

emerge -e system # Обновить всю систему включая компилятор (новый компилятор и/или смене CHOST)

etc-update # Обновление конфигурационных файлов (история не сохраняется) dispatch-conf # Обновление конфигурационных файлов (история изменений сохраняется)

emerge -a depclean # Удалить неиспользуемые зависимости emerge -auvDN world # Обновить все

[править] Ссылки

Источник — «http://ru.wikipedia.org/wiki/Gentoo»