RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

Глава 2. Важная информация

Содержание
О $LFS
О SBU
О тестировании
Как просить о помощи

О $LFS

Пожалуйста, внимательно прочитайте этот раздел. В этой книге будет часто использоваться переменная LFS. $LFS должно будет всегда заменяться на каталог примонтированого раздела для будущей системы LFS. О том, как создать такой раздел, будет подробно написано в главе 3. К примеру, пусть раздел LFS будет смонтирован в /mnt/lfs.

Когда Вас попросят выполнить команду ./configure --prefix=$LFS/tools, следует выполнить ./configure --prefix=/mnt/lfs/tools.

Важно всегда использовать ее подобным образом: в командной строке или в создаваемых файлах.

Но можно облегчить задачу, задав переменную окружения LFS. Таким образом, $LFS будет автоматически восприниматься системой как /mnt/lfs. Это достигается командой:

export LFS=/mnt/lfs

Теперь, когда Вас просят выполнить команду ./configure --prefix=$LFS/tools, надо набрать ее как есть. Ваш интерпритатор сам заменит "$LFS" на "/mnt/lfs" когда Вы нажмете Enter после ввода команды.

О SBU

Многие люди хотят заранее знать. сколько займет сборка и установка того или иного пакета. Но "Linux from Scratch" собирается на разных системах. и невозможно точно указать этот отрезок времени: самый большой пакет (Glibc) может собраться менее чем за 20 минут на быстрой системе, но может собираться и больше трех дней на медленной. В связи с этим я решил использовать для указания времени сборки и установки пакета SBU (Static Binutils Unit): время статической сборки и установки пакета Binutils.

Это используется следующим образом: первым пакетом, который надо будет собрать в этой книге, является статически скомпонованый Binutils в главе 5, и время его компиляции берется за "Static Binutils Unit" или "SBU". Время компиляции всех других пакетов выражается через эту единицу.

К примеру, сборка статически скомпонованной версии GCC занимает 4.4 SBU. Это значит, что если Вашей системе понадобилось 10 минут на сборку статической версии Binutils, то сборка GCC займет 44 минуты. Как Вы увидите, время сборки большинства пакетов меньше, чем у Binutils.

Примите к сведению, что если системный компилятор основной системы базируется на GCC-2, то указанный SBU будет неверным. Это происходит по причине того, что SBU основан на самом первом из скомпилированых пакетов, который собран с помощью старого GCC, а при сборке остальной части системы будет использоваться GCC-3.3.1 который работает на 30% медленнее.

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

О тестировании

Многие из пакетов поддерживают тестирование. Запуск его для только что собранного пакета будет хорошей идеей, так как можно будет проверить корректность компиляции. Тестирование содержит несколько тестов для проверки функциональности пакета. Это в какой-то мере может гарантировать полное отсутствие ошибок в программе.

Некоторые тестирования более важны. чем другие. К примеру, тестирование пакетов с основными средствами, GCC, Binutils и Glibc (библиотека C), которые играют решающую роль для общей функциональности системы. Но учтите, что тестирование GCC и Glibc может занять весьма продолжительное время, особенно на медленном оборудовании.

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

Примечание: Общей проблемой при запуске тестов для Binutils и GCC является запуск вне терминала (PTY, для краткоти). Симптомом ее является большое количество неудачных тестов. Это может происходить по многим причинам. Наиболее распространенная: Ваша основная система не имеет корректно установленной файловой системы devpts. Я более подробно опишу это в главе 5.

Как просить о помощи

Если Вы столкнетесь с проблемой при использовании этой книги, и Ваша проблема не будет описана в ЧАВО ( http://www.linuxfromscratch.org/faq), то множество людей в Internet Relay Chat (IRC) и в списках рассылки будут рады Вам помочь. Обзор списков рассылки LFS Вы можете найти в главе 1. Для получения помощи в диагностике и устранении проблемы надо будет дать наиболее полную информацию о ней в своем вопросе.

Что необходимо указать

Помимо краткого сообщения об ошибке, не забудьте привести следующую информацию:

  • Версия используемой книги (для этой 5.0),
  • Основной дистрибутив и его версию,
  • Пакет или раздел, с которыми у Вас возникли проблемы,
  • Сообщение об ошибке или симптомы проблемы,
  • Отклонялись ли Вы от шагов, описаных в книге.

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

Проблемы конфигурации

Если что-то пошло не так при выполнении скрипта configure, то посмотрите в файле config.log. Этот файл содержит ошибки, которые не были выведены на экран. Включите информацию из этого файла в просьбу о помощи.

Проблемы при компиляции

Для того, чтобы помочь найти причину проблемы, важен как вывод на экране, так и содержание некоторых файлов. Вывод на экране из скрипта ./configure и команды make содержат много полезной информации. Не стоит слепо включать в свое сообщение весь вывод, но и не следует включать слишком мало информации. Ниже приведен вывод на экран команды make:

gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\" -DLIBDIR=\"/mnt/lfs/usr/lib\"
-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
-g -O2 -c getopt1.c
gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o expand.o file.o function.o getopt.o implicit.o job.o main.o misc.o read.o remake.o rule.o signame.o variable.o vpath.o default.o remote-stub.o version.o opt1.o -lutil job.o: In function `load_too_high': /lfs/tmp/make-3.79.1/job.c:1565: undefined reference to `getloadavg' collect2: ld returned 1 exit status make[2]: *** [make] Error 1 make[2]: Leaving directory `/lfs/tmp/make-3.79.1' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/lfs/tmp/make-3.79.1' make: *** [all-recursive-am] Error 2

В этом случае большинство людей включают в сообщение строку:

make [2]: *** [make] Error 1

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

В Интернете есть отличная статья о том, как надо правильно задавать вопросы, написанная Эриком С. Раймондом. Ее можно найти на http://catb.org/~esr/faqs/smart-questions.html. Прочтите эту статью и примите ее к сведению при задавании вопросов, тогда шансы получить полный и квалифицированный ответ значительно возрастут.

Проблемы при тестировании

Многие пакеты поддерживают тестирование, и я, в зависимости от его важности, буду советовать Вам запускать его. Иногда пакеты выдают ошибки. Если это случилось, посмотрите страничку LFS Wiki на http://wiki.linuxfromscratch.org , возможно, там уже нашли способ ее решения. Если там уже знают о проблеме, Вам не стоит беспокоится.

Поиск

 

Найди своих коллег!