Дек 032010
 

Оптимизируем процесс компиляции пакетов в gentoo linux.
Я приведу свой пример, настройка оптимизации, вы можете взять мой пример как базовый и доработать под свои нужды.

cat /etc/make.conf

CFLAGS=»-march=core2 —O2 —pipe»
Так как я решил использовать 64битный код, то выбрал core2.
Уровень оптимизации —O2 , На этом уровне применяются все виды оптимизации, которые не требуют вычисления оптимального выбора между размером и скоростью кода

CXXFLAGS=»${CFLAGS}»
Я отставил неизменной.

CHOST=»x86_64-pc-linux-gnu»
Указываем что за процессор и в коком бите будет система 32 ли 64.

MAKEOPTS=»-j9″
Обычно эту опцию путают с количеством процессоров (ядер) , это чуть не так, тут всего лишь указывается число параллельно запускаемых процессов компиляции.

Цифровой параметр выбирается от количество процессоров(ядер) формула расчета загадочной цифры 9 такова, у меня 4-х ядерный процессор. значит 4*2+1 получиться 9, но сильно
повышать не стоит, некоторые пакеты не соберутся.

FEATURES=»parallel-fetch»
Это функция дает прирост в компиляции, пока происходит сборка одного пакета, уже качался следующий.

GENTOO_MIRRORS=»http://mirror.yandex.ru/gentoo-distfiles»
указываем репозитарий, зеркало в сети.

SYNC=»rsync://rsync-ru.greenmice.info/gentoo-portage»
Эта переменная указывает на сервер rsync (сервер удаленной синхронизации) дерева портов.

DISTDIR=»/distfiles»
Директория с исходными кодами пакетов, у меня вынесено на отдельный диск, ибо не засорять корень.

ACCEPT_KEYWORDS=»amd64″
Этот параметр указывает портажам из какой ветки брать пакеты, в данном случаем из стабильной. доступные опции (x86 /~x86 amd64/~amd64). то есть если параметр ~ то значит пакеты будут все идти из нестабильной ветки (тестовой).

FEATURES=»ccache» # активации
CCACHE_DIR=»/var/tmp/ccache» # директория хранения
CCACHE_SIZE=»2G» # размер
~По умолчанию компилятор не обращает внимания на ранее скомпилированные файлы и производит полную перекомпиляцию всего приложения во время повторного запуска процесса сборки.
Ccache – это кэширующий препроцессор, который позволяет избежать повторной компиляции уже скомпилированных ранее файлов.
В Gentoo Linux достаточно набрать команду emerge ccache. Во Freebsd по сложнее, но это другая статейка.
Проверяем реальный кэш после 5-й пересборки мира.
CCACHE_DIR=»/var/tmp/ccache» ccache —s

CC=»gcc»
CXX=»g++»

Указываем какие компиляторы использовать.

EMERGE_DEFAULT_OPTS=»-v —keep-going»
Настройки компиляции пакетов

FEATURES=»collision-protect»
Разруливает ситуации когда один и тот же файл ставят разные пакеты.

FEATURES=»metadata-transfer«
повышает скорость просмотр зависимостей основного дерева

VIDEO_CARDS=»nvidia»
#можно указать ati radeon
Думаю можно и не объяснять, если вы взялись за установку gentoo linux , то поймете.

ALSA_CARDS=»hda-
intel
также указываем звуковую карточку.

HTTP_PROXY=»http://user:passw@proxy.addres:port»
FTP_PROXY=»http://user:passw@proxy.addres:port»
RSYNC_PROXY=»http://user:passw@proxy.addres:port»

Указываем проксю по умолчанию.
Или указываем в файле
/etc/env.d/99local

INPUT_DEVICES=»mouse keyboard evdev»

Указываем устройства подключенные к компьютеру типа : мышки, клавиатуры, джойстики и т.д.

LIRC_DEVICES=»asusdh»
Если у вас есть пульт ДУ , то можно указать флаг вашего пульта. Что бы при установки lirc библиотек он подтянул нужный вам драйвер.

LINGUAS=»ru en»
указываем поддержку языка у системы. я указал два, потому, что в некоторых пакетах нету поддержки Русского языка.

FETCHCOMMAND=»/usr/bin/getdelta.sh \${URI}»
этот параметр дает вам экономию трафика, но для этого нужно еще установить пакет getdeltap.

USE=»-gnome samba —cups bash-completion unicode 7zip xorg esd xvmc dxr3 audiofile vidix aalib vcd hal xvid lua bzip2 dbus» и т.д.
Ставим глобальные использованные флаги системы, это нам понадобиться при установки пакетов. Потому что у каждого пакета есть зависимости, и в зависимости от выбранного профиля, некоторые будут закрыты, вот тут мы их и открывает.
Можно конечно и подойти к этому вопросу с другой стороны, отдельно на каждый пакет выставить в определенные зависимости, может вам к примеру к пакету mc не нужно поддержки samba.
Все это будет проделываться в специальной директории, /etc/portage/ , но это уже другая история.

source /usr/local/portage/layman/make.conf
PORTDIR_OVERLAY=»/usr/local/portage»

если мы захотим использовать сторонние репозитарии, то нам нужно создать директории и файлы в них, очередность строк ВАЖНА!!!

ACCEPT_LICENSE=»AdobeFlash-10,1 Nero-EULA-US AdobeFlash-10 skype-eula dlj-1,1″
этот параметр я как понял новый тип маскировки пакетов, типа что мы разрешаем припроентарное ПО на нашей машине. Можно также отдельно создать файл отдельно с лицензиями.
/etc/portage/package.license .

APACHE2_MODULES=»actions alias auth_basic auth_digest» и т.д.
Можно также указать специальные модули для апача.

  10 комментариев to “Оптимизация gentoo make.conf”

  1. […] настраиваем make.conf, в этой статейки я подробно описал каждую опцию make.conf […]

  2. Спасибо за пояснения.

  3. Спасибо.

  4. Статейка ничего. нормлаьно.
    Но есть одно но!
    Измените ковычки » на правильные ,а то рядовой пользователь gentoo на бедакурит у себя в сситеме.

  5. Спасибо за статью, узнал много нового, как начинающий гентушник, очень толково. Но у меня вопрос, откуда Вы всё это знаете? :) Вряд ли это годы медитаций сидя на горе. Или достаточно просто подробно изучить make.conf.example? Я бы хотел найти источники информации, образовываться.

    • Практически годы медитации под горой!!!
      Гента не та система с корой можно начинать знакомство с линуксом.
      Если в первые в линуксе, то поставь debian или suse.

      • Я поставил. И Debian, и Suse, кстати) Но понял, что не люблю не понимать, как и что происходит, windows-way достал до тошноты. У меня есть пара установленных Gentoo за спиной, правда, получились какие-то хрипящие мутанты, но работают. Я даже генты админю (почтовый сервер и шлюз, мне их «подарили»), но скиллы поднимать надо. Хочется знать всё с основ, но, как я понимаю, тут дело просто в образовании, много знаний попросту косвенных. Красноглазить приходится много.

        • Нет дело не в образовании, а в терпении постигать что-то новое!

          • Ну не знаю, при чём тут терпение… Если есть интерес, сожрёшь любые информации :) За два дня перебрал вот ядро, от и до, сознательно, чисто из интереса. Весьма полезный опыт. Но как бы я до этого добрался без уже имеющегося относительно большого опыта — не знаю.
            Вот по такими статьям, как тут, в частности, и образовываюсь.

  6. Прям не ужтали за два дня все ядро про штудировали?!
    Ну вы тогда вундеркинд и вам не составит труда работать и постигать секреты мастерства *nix подобных систем!!!
    make.conf и .config это еще не все ядро!

 Leave a Reply

(required)

(required)

45 Запросов к базе. 0,399 Генерации страницы, 36MB Использование памяти.
Вы зашли с IP: 54.198.210.67