О gentoo для совсем начинающих, но совсем не чайников.

О gentoo для совсем начинающих, но совсем не чайников.

Цель данного текста - коротко и сжато объяснить, как устроен дистрибутив gentoo, на что стоит смотреть при установке. Предполагается, что читатель знает, что такое юникс вообще и линукс в частности и способен читать хотя бы Quick Install Guide (http://www.gentoo.org/doc/en/gentoo-x86-quickinstall.xml).

Gentoo не имеет инсталлятора, в отличие от большинства популярных дистрибутивов. То есть имеет, на самом деле, но, судя по отдельным отзывам, лучше бы не имел. Для того, чтобы поставить gentoo на компьютер необходимо наличие на этом компьютере любого линукса, сетевого соединения и места на диске. Я ставил gentoo первый раз ис под Федорина горя. Собственно, gentoo live CD имеет к gentoo весьма отдаленное отношение - это просто загрузочный диск с линуксовым ядром, шеллом и несколькими системными утилитами вроде fdisk, net-setup и иже. Собственно поэтому я бы советовал восспользоваться не им, а Resque CD (http://www.sysresccd.org/Main_Page), потому что с чего ставить все равно, а утилит там побольше и ядро побогаче, например, поддерживает Reiser4, а также можно грузить и 32 и 64-битное ядро.

Основой Gentoo является 2 файла, это stage3-XXX-tar.gz portage.latest.tar.gz. И то и другое желательно использовать последнее. Обратите внимание, первый файл зависит от платформы (и битности) желаемой системы, второй нет. В первом файле содержится собственно готовый к запуску линукс, только что без ядра. В него уже установлены необходимые для запуска пакеты, в частности шелл, компилятор, система установки пакетов (portage). Кроме того на сегодняшний день в поставке имеется компилятор версии 4.1, а не 4.3, который предпочтительнее на процессорах последнего поколения и старая (относительно) версия glibc.

Файл portage.latest.tar.gz содержит описание всех доступных пакетов. Не сами пакеты, а их описания. Вот тут можно немного поговорить о том, как в Gentoo ставятся пакеты и что они из себя представляют. В системе живет каталог /usr/portage, в котором по полочкам разложено все, что вообще можно поставить. Обычно, одного и того же пакета можно поставть по нескольку версий, соответственно на каждую версию отводится собственный файлик:

ls /usr/portage/sys-devel/gcc
ChangeLog              gcc-3.1.1-r2.ebuild  gcc-3.4.6-r2.ebuild  gcc-4.2.3.ebuild     gcc-4.3.1.ebuild     Manifest
files                  gcc-3.2.2.ebuild     gcc-4.0.4.ebuild     gcc-4.2.4.ebuild     gcc-4.3.1-r1.ebuild  metadata.xml
gcc-2.95.3-r10.ebuild  gcc-3.2.3-r4.ebuild  gcc-4.1.0-r1.ebuild  gcc-4.2.4-r1.ebuild  gcc-4.3.2.ebuild
gcc-2.95.3-r9.ebuild   gcc-3.3.6-r1.ebuild  gcc-4.1.2.ebuild     gcc-4.3.0.ebuild     gcc-4.3.2-r2.ebuild

Вот каждый из этих "ebuild" можно установить средствами дистрибутива. Не стану углубляться в подробности (сам нифига не понимаю), но внутри этого файла находится инструкция, по сути скрипт, откуда скачать исходные тексты пакета, как их пропатчить, если это необходимо, куда поставить, а так же информация о зависимостях (например нельзя ставить gcc-4.3.0 и выше, если не установлено glibc-2.8 или выше)

В Quick Install Guide нехорошим словом поминается команда emerge --sync. Ее предназначение - обновить вышеупомянутое дерево пакетов до самого что ни есть распоследнего, сегодняшнего варианта. В системе ежедневно появляются новые пакеты, в том числе новые версии уже существующих и уже установленных. Ничего при этом не устанавливается, просто появляется возможность пакеты проапгредить.

Все без исключения пакеты в Gentoo собираются из исходных текстов, то есть для них запускается configure "" make "" make install. Нет, понятие бинарного пакеты существует, конечно, но на самом деле у него фаза компиляции просто не выполняется, она уже выполнена. Принципиального отличия для того, кто ставит пакет, нету.

В системе портежей (система установки пакетов в Gentoo) есть еще 3 особенности.

Первая - управление всеми система сборки - файлик /etc/make.conf. В нем указано, для какой системы собираются пакеты, указаны флаги компиляции, с которыми надо пакеты собирать, указаны зеркала - хранилища исходных текстов пакетов и т.п. Обсуждать формат подробно я не буду. для этого документация есть. Самое интересное, что там есть, это так называемые USE-флаги. На самом деле каждый пакет может быть собран с какими то особенностями, см. параметры скрипта configure. Разумеется, для каждого пакета эти параметры свои, например nginx и php можно собрать с поддержкой fastcgi, а можно без нее, а для bash такая возможность вовсе не определена. Так вот в USE-флагах как раз и задается такая возможность - включить или выключить поддержку какой то опции. Для тех пекетов, которые эту опцию не понимают, наличие флага не имеет никакого значения. Чтобы узнать, какие флаги поддерживаются пакетом, надо "попытаться" его поставить с визуализацией, что будет ставиться:

emerge -pv gcc

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] sys-devel/gcc-4.3.2-r2  USE="gtk mudflap nls openmp (-altivec) -bootstrap -build -doc (-fixed-point) -fortran -gcj (-hardened) -ip28 -ip32r10k -libffi (-multilib) -multislot (-n32) (-n64) -nocxx -nopie -objc -objc++ -objc-gc -test -vanilla" 74 kB

Смотрим список включенных и выключенных флагов, огорчаемся и идем редактировать make.conf. Повторяем попытку до удовлетворения. Есть способ сделать то же самое быстрее, но для этого надо ставить дополнительные пакеты, оставим пока.
Список флагов в системе единственный, живет он только в make.conf и это идеологически правильно. Тем не менее иногда хочется, чтобы все пакеты имели вот этот главный список, а отдельные собирались с другими флагами. Это дурная политика, но сделать это можно даже несколькими способами. Первый, просто установив переменную окружения:
USE="-fortran objc objc++" emerge gcc
Работает до первого обновления пакета. Второй способ - конфигурационный файл /etc/portage/package.use

cat /etc/portage/package.use
net-misc/openssh        -ldap
media-sound/amarok      -python

Идея простая, пусть все, что может, собирается с поддержкой ldap, а openssh без нее. Про политику я уже упоминал, но вот для сервера, например, я бы добавил туда строчку "app-misc/mc -X" :-)

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

eselect profile list
Available profile symlink targets:
  [1]   hardened/x86/2.6
  [2]   selinux/2007.0/x86
  [3]   selinux/2007.0/x86/hardened
  [4]   default/linux/x86/2008.0
  [5]   default/linux/x86/2008.0/desktop *
  [6]   default/linux/x86/2008.0/developer
  [7]   default/linux/x86/2008.0/server
  [8]   hardened/linux/x86

Выбранный помечен звездочкой. Дальше eselect profile --help :)

Есть также возможность форсировать разрешение или запрещение каких то пакетов локально, именно для конкретного компьютера, для этого служат файлики /etc/portage/package.mask и /etc/portage/package.unmask. Например:

cat /etc/portage/package.unmask
>=sys-apps/portage-2.2_rc16
>=sys-apps/lm_sensors-3.0.2

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

Третья особенность - наличие двух "алиасов", не пакетов, а именно системных списков. Это system и world. Первый список черт знает, где хранится, и, насколько я понимаю, не изменяется. По сути - это содержимое stage3. А вот второй - просто текстовый список пакетов, установленных вашими кривыми ручками. Набрал emerge gcc, и система запомнила, что этому пользователю нужен для счастья компилятор. Когда появится обновление, компилятор будет обновлен, а gnome не будет, потому что я его никогда не ставил. Это полезно с двух точек зрения. Во первых, можно одним ударом обновить (emerge -uD world) или полностью пересобрать (emerge -e world) всю систему, не задумываясь, что я там ставил на прошлой неделе.
Во-вторых, не следует забывать об полезном флаге --oneshot, то есть пакет поставить, но в списки не заносить. Бывает, что пакет по каким то причинам собрать не удалось, но сам по себе пакет не нужен, он ставится потому, что от него что то зависит. Мы устраняем проблему и пересобираем вредный пакет, вроде все хорошо, но потом это всплывет при обновлении. Например, отчего то не собрался у меня kdelibs, при обновлении упорно ставится 4-я версия. А мне он не нужен, мне нужна последняя третья. Сей список живет в /var/lib/portage/world, редактировать его руками я не видел рекомендации, но редактировал. Ничего, работает )

Установка пакетов делается командой emerge, описываеть я ее не буду, без меня много желающих.

Для удобства работы рекомендую поставить пакеты gentoolkit и eix, здорово упрощает жизнь. Первый позволяет искать зависимости, второй - быстрый поиск по описаниям.

Грабли и советы.

Для пользователей sysresccd хитрая особенность. На диске есть 64-битное ядро. Разумеется, для установки 64-битной системы надо загружаться в него. Далее действовать, как указано в инструкции по установке. Но перед тем, как ставить систему на голую машину, надо разбить диски на разделы. Для этого традиционно используется fdisk. Так вот он на сидироме 32-битный! Он запускается, даже работает, а вот считает неправильно. Делаю раздел 10 мегабайт, а получаю 500К. Загрузите обычное ядро, разбейте диск, потом перегружайтесь в 64 бита.
Все равно придется пересобирать glibc. Не так страшен он сам, как туева хуча локалей, которые он генерит. Для экономии времени сразу создайте файл /etc/locale.gen:

cat /etc/locale.gen
# /etc/locale.gen: list all of the locales you want to have on your system
#
# The format of each line:
# <locale> <charmap>
#
# Where <locale> is a locale located in /usr/share/i18n/locales/ and
# where <charmap> is a charmap located in /usr/share/i18n/charmaps/.
#
# All blank lines and lines starting with # are ignored.
#
# For the default list of supported combinations, see the file:
# /usr/share/i18n/SUPPORTED
#
# Whenever glibc is emerged, the locales listed here will be automatically
# rebuilt for you.  After updating this file, you can simply run `locale-gen`
# yourself instead of re-emerging glibc.

en_US UTF-8
ru_RU UTF-8

Если изначально планируется переход на 4.3 компилятор, то после перехода будет смысл пересобрать все пакеты, да желательно с флагами -march=native -mtune=native, которые в версии 4.1 не поддерживаются. А чем меньше будет пакетов установлено, тем быстрее они все пересоберутся. Посему я бы немного отошел о стандартной последовательности Quick Install Guide, а первым делом пересобрал glibc, затем gcc, затем выбрал бы нужный (gcc-congig и следим за инструкциями). Затем отредактировал бы /etc/make.conf - добавить флаг, потом пересобрал бы все emerge -e worls system, а уже затем стал бы ставить все остальное, включая ядро и такие утилиты, как syslog, cron и т.д.

Неплохой обзор архитектуры,

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

с такими противоречиями надо бежать в психдом

и это-то называется простые утилиты? "В настоящее время в перспективы Gentoo входит поддержка и создание ПО, близкого к идеалу - мощных и простых в использовании утилит" -- написано на этом же сайте. послушайте, тогда ЗАЧЕМ вообще ваш генту?

ты хоть сам себя понял, когда

ты хоть сам себя понял, когда писал этот текст?

P.S. Сообщения от анонимных пользователей публикуются администрацией, либо ждите либо регистрируйтесь.

ну ладно, подожду...

ну ладно, подожду...

Не мшало бы spell check сделать...

Все написано в принципе верно, хотя есть некоторые спорные моменты. Но складывается впечатление, что автор или очень торопился написать статью, или пока он ее писал, ему кто-то очень сильно мешал. :) Слишком много очепяток. Причем - именно опечаток, а не ошибок.

Автор это писал в качестве

Автор это писал в качестве инструкции для бородатых админов FreeBSD или RHEL, второпях. Ну и поделился, мало ли кому ещё пригодится.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Не надо сравнивать gentoo и FreeBSD

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

Видели мы ваше FreeBSD. То

Видели мы ваше FreeBSD. То ещё FreeBSD.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Не трогайте наше FreeBSD...

Не трогайте наше FreeBSD...

_________________________________________________________
Прежде чем задать вопрос, подумай, сможешь ли ты понять ответ.

фряха рулит)

фряха рулит)

Согласен с простотой в этом отношении

Согласен с простотой в этом отношении, FreeBSD, помоему намного проще

где опечатки?

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

эта статья требует исправления

Я пробовал сделать так: Посему я бы немного отошел о стандартной последовательности Quick Install Guide, а первым делом пересобрал glibc, затем gcc, затем выбрал бы нужный (gcc-congig и следим за инструкциями). Затем отредактировал бы /etc/make.conf - добавить флаг, потом пересобрал бы все emerge -e worls system, а уже затем стал бы ставить все остальное, включая ядро и такие утилиты, как syslog, cron и т.д., в результате получил множество ошибок на стадии компиляции.

ага у меня тоже много ошибок

ага у меня тоже много ошибок :(

ага а я пожалуй убунту поставлю

ага а я пожалуй убунту поставлю.. чё то больно уж здесь все сложно... нет парни я всё понимаю... но поставлю убунту..

Поставить убунту - отличная

Поставить убунту - отличная идея! Когда я только начинал переползать с винды на линукс - а было это два года назад - я поставил себе убунту. Ни разу не жалею! Как переходная система - самое оно! Правда, через год-полтора мне стало не хватать возможностей докручивания системы под себя. Посмотрел бисдю (у меня несколько серверов на ней крутится) - не понравилось, слишком на ней софт бородатый. Посмотрел linux from scratch - классная идея, но слишком всё "вручную" для меня. А вот генту похожа на то, что хочется - много пространства для маневра, но gcc и glibc пересобирать не обязательно :)

Вообще всё правильно

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

внимательно читаем тему

внимательно читаем тему

UTF-8

Огромная просьба всем начинающим\устанавливающим Gentoo:
Пожалуйста, локализируйте её в UTF-8 а не KOI8-R!

21 век на дворе, мне кажется, что уже пора!

http://www.gentoo.org/doc/ru/utf-8.xml

Удачи!

p.s. разумеется это относится в первую очередь к тем, кто почитал handbook и нашел там напутствие на KOI8-R.

к тем кто читал русский

к тем кто читал русский хэндбук образца 2006 го года?

Когда же будет русский

Когда же будет русский хендбук новый :(

Возьмите английский HandBook,

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

Хорошая статья для

Хорошая статья для начинающих. Приоткрыла мне глаза после скупо-написаной рукокниги о том, что я делаю.Ставил без инета по русскому хендбуку и нашел там грубейшее упущение, где после распаковки стажа и портажа нужно еще и дистфайлы копировать (интересно какие?). В русском руководстве этого нет! Хорошо в английском подсмотрел. Неужели некому поправить? А то это не просто конструктор, а какой-то квест получается "найди то, не знаю что". Откуда мне знать, что мне в дистр не положили? Благо посоветовали сбоку от хора, а то тут даже если захочешь не поставишь. Кстати, вопрос остается открытым: какие дистфайлы нужны для минимальной установки? Не плюйтесь, вроде везде искал. Либо пишут не явно, либо я не там гуглил...

Русский хендбук сильно

Русский хендбук сильно устарел - это везде написано. Некому, да и незачем, т.к. если знаний английского не хватает на хендбук, то на чтение остальных доков - точно не хватит.

минимальная установка - это что?
в принципе, если загрузчик уже есть, а ядро скопировать с livecd, то одного stage3 хватит )))))

спасибо за направление

спасибо за ответ! а как мне ядро на ливсд найти? или оно по папкам размазано? если не затруднит, дайте ссылку на материал...

А! вроде нашел. Вот, для потомков и таких же как я (Ж---> http://www.gentoo.ru/node/4583

это лишено смысла. Хочешь

это лишено смысла. Хочешь бинарники - возьми calculate, почти тот же генту(заявлена 100% совместимость) только можно ничего не собирать

Даёшь русский хендбук для Gentoo amd64

Извините, но у меня вопрос? Когда появится нормальный русский handbook для Gentoo amd64. А то целый день колупаюсь в поисках ответов по установке Gentoo. Пока устраивает Calculate Linux, но хочу перейти на Gentoo amd64.

iLinux

Как только кто-то его

Как только кто-то его переведет. Сейчас сложилась такая ситуация: у тех кто может это грамотно сделать есть дела и поважнее, те кто считает, что это нужно не могут этого сделать, а большинство спокойно юзает английскую версию, а если уж совсем плохо то устаревшую русскую, переводчики и форум.
ИМХО, если установка по английскому хендбуку напрягает, то профита от генту не будет

Чё-то как-то отстал от

Чё-то как-то отстал от времени, не заметил что русский хендбук обновился. Скучно стало, решил свою пересобрать, пощупать Grub2. Последнее обновление русского хендбука этого года уже, так что погоняем. Но лучше английский, он посвежее.

Grub2 не по нраву мне

С Grub2 что-то я не смог подружиться. Так и остался на grub:0 , прописал руками спокойно и нормально.
Ставил рядом с ubuntu-й gentoo. Собрал всё. В убунте был Grub2, решил его использовать. Запустил. Захожу - у меня ubuntu с ядром gentoo. Красота. В итоге из под gentoo поставил grub:0, руками прописал и всё ок. Может быть я не умею готовить grub2 - не знаю)

Всё хорово.

^_^

Где же автор раньше был... Эх....
Думаю для новичка это статья будет полезна, в силу того что позволит расставить в голове все по местам. Это очень важно. Автору спасибо.

Эм... Здесь и был. Статья

Эм... Здесь и был. Статья появилась за 4 года до твоей регистрации :)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".