Текст книги "Linux From Scratch"
Автор книги: Gerard Beekmans
Жанр:
ОС и Сети
сообщить о нарушении
Текущая страница: 2 (всего у книги 18 страниц)
May 11th, 2002 [markh]: Various XML fixups; mainly altering
May 9th, 2002 [gerard]: Appendix A – Glibc: Filled in the missing descriptions.
May 6th, 2002 [gerard]: Chapter 06 – Shadow: Fixed the symlink location of vigr to /usr/sbin
May 2nd, 2002 [gerard]: Chapter 06 – Procps: Changed the two single quotes to two double quotes (the two single quotes can be mistaken for one double quote which will cause an error).
May 2nd, 2002 [gerard]: Changed the cd dir && ln -sf commands to one single command (such as ln -sf bash $LFS/bin/sh Same goes for cd dir && mv/cp constructions which are now replaced with constructions like mv $LFS/usr/bin/{bzcat,bzip2} $LFS/bin
May 2nd, 2002 [markh]: Removed the «Removing old NSS library files» section.
1 мая 2002 [gerard]: Removed all Glibc-2.0 workarounds – gzip patch, sh-utils patch, copying of libnss files. Also removed the export VAR=VALUE...unset VAR constructions and changed them to VAR=VALUE ./configure constructions.
26 апреля 2002 [marcheerdink]: Глава 06 Findutils: добавлен libexecdir=/usr/bin к команде make. Исправляет неверный путь libexecdir в updatedb.
25 апреля 2002 [gerard]: Глава 06 Glibc: добавлена заметка от том, что вручную можно установить только нужные локали, а не все. Для этого необходимо создать директорию /usr/lib/locale.
21 апреля 2002 [gerard & markh]: Обновлен пакет MAKEDEV-1.5
12 апреля 2002 [markh]: Добавлена организация директорий к cvs и разделен index.xml.
10 апреля 2002 [marcheerdink]: Обновлены следующие пакеты: bison-1.35, diffutils-2.8.1, texinfo-4.2, util-linux-2.11q
9 апреля 2002 [marcheerdink]: Добавлено –disable-perl-regexp к configure-опциям grep, чтобы избежать ссылки на несуществующую статическую библиотеку pcre.
8 апреля 2002 [gerard]: Добавлено зеркало http://ftp.de.linuxfromscratch.org (в дополнение к ftp://ftp.de).
Списки рассылки и архивыНа сервере linuxfromscratch.org размещены следующие списки рассылки общего доступа:
lfs-support
lfs-dev
lfs-announce
lfs-security
lfs-book
lfs-chat
alfs-discuss
blfs-dev
blfs-book
blfs-support
lfs-support
Список рассылки lfs-support предоставляет поддержку пользователям, собирающим систему LFS в рамках данной книги. Поддержку по дальнейшим этапам работы с LFS ищите в списке blfs-support.
lfs-dev
В списке рассылки lfs-dev обсуждаются вопросы, строго связанные с книгой LFS. Если у вас есть проблемы с книгой, если вы хотите сообщить об ошибке в ней, или хотите дать совет по улучшению данной книги, этот список для вас.
Все просьбы о поддержке направляйте в lfs-support или blfs-support.
lfs-announce
lfs-announce – модерируемый список. На него можно подписаться, но нельзя отправлять сообщения. Он используется в основном для сообщения о выходе новых стабильных релизов. Список lfs-dev сообщает о выходе нестабильных релизов, релизов в разработке. Если вы подписались на lfs-dev, особого смысла подписываться на lfs-announce нет, т.к. все сообщения из него дублируются в lfs-dev..
lfs-security
В списке lfs-security обсуждаются проблемы безопасности. Все вопросы по безопасности системы и отдельных пакетов направляйте в этот список.
lfs-book
Список lfs-book используют редакторы Книги LFS для координирования вопросов эксплуатации, например проблемы XML и т.д. Однако дискуссии о том, что добавлять и что удалять из книги, проводятся в списке lfs-dev.
lfs-chat
Список lfs-chat – место отдыха членов группы LFS (вы один из них) и разной болтовни, необязательно связанной с компьютерами. Оффтопиков не существует.
alfs-discuss
Список alfs-discuss обсуждает развитие Автоматизированной Linux From Scratch, сокращенно ALFS. Цель этого проекта – создание автоматического инсталлятора системы LFS, позволяющего значительно ускорить процесс компиляции, т.к. не нужно вводить команды вручную..
blfs-dev
Список blfs-devобсуждает развитие книги BLFS (Beyond <После>LFS). Направляйте сообщения об ошибках и ваши советы по улучшению Книги BLFS в этот список.
Просьбы помочь со сборкой программ вне книги LFS направляйте в список blfs-support.
blfs-book
Список blfs-book используют редакторы Книги BLFS для координирования вопросов эксплуатации, например проблемы XML и т.д. Однако дискуссии о том, что добавлять и что удалять из книги, проводятся в списке blfs-dev.
blfs-support
Список blfs-support предоставляет помощь по установке программ, не вошедших в Книгу LFS. Разрешается обсуждать любые программы, не являющиеся базовыми программами системы LFS.
Архивы
Все списки рассылки архивируются и могут быть просмотрены на http://archive.linuxfromscratch.org/mail-archives или скачены с http://ftp.linuxfromscratch.org/mail-archives или ftp://ftp.linuxfromscratch.org/mail-archives.
Как отправить сообщение в список
Совсем необязательно подписываться на список для того, чтобы отправить в него сообщение. В таком случае, не забудьте указать в сообщении, что вы не подписаны на этот список рассылки, чтобы при ответе участники списка указали ваш адрес в поле CC:. (это позволит вам получать ответы на ваше сообщение).
Адрес списка рассылки выгляди следующим образом: [email protected] где listname – один из списков, описанных выше. Например, [email protected], [email protected] and [email protected].
Как подписаться на список рассылки
Для того чтобы подписаться на список рассылки, пошлите email по адресу [email protected]. В поле заголовка впишите subscribe listname, где listname – имя списка.
Если вы хотите подписаться сразу на несколько списков рассылки, оставьте поле заголовка сообщения пустым, а команды перенесите в тело сообщения, например:
To: [email protected] Subject: subscribe lfs-dev subscribe blfs-support subscribe alfs-discuss
После отправки сообщения, программа Listar пришлет вам письмо с просьбой подтвердить подписку. После отправки подтверждения подписки, Listar вышлет вам письмо, уведомляющее о том, что вы подписаны на соответствующий список рассылки, и приветствие от данного списка.
Как отменить подписку
Для отмены подписки пошлите email по адресу [email protected]. В поле заголовка введите unsubscribe listname.
Если вы хотите отменить подписку нескольких списков рассылки, оставьте поле заголовка сообщения пустым, а команды перенесите в тело сообщения, например:
To: [email protected] Subject: unsubscribe lfs-dev unsubscribe blfs-support unsubscribe alfs-discuss
После отправки сообщения, программа Listar пришлет вам письмо с просьбой подтвердить отмену подписки. После отправки подтверждения отмены подписки, Listar вышлет вам письмо, уведомляющее о том, что подписка аннулирована.
Другие режимы списка
Для установления режимов списка, пользователь должен отправить email по адресу [email protected]. Режимы задаются командами, прописанными в поле заголовка сообщения.
Команда Set command включает режим. Команда Unset command его выключает.
Слово «listname» в примере, приведенном ниже, следует заменить на имя списка, для которого необходимо установить режим. Если необходимо установить несколько режимов (для одного или нескольких списков) с помощью одного сообщения, оставьте заголовок сообщения пустым и перенесите все команды в тело сообщения.
Режим обзора
Включить режим: set listname digest Выключить режим: unset listname digest
После подписки на список рассылки, пользователь может включить режим обзора. В данном случае вместо получения отдельных сообщений из списка, пользователь будет ежедневно получать email, содержащий все сообщения списка за этот день.
Существует другой режим обзора, digest2. В этом случае, пользователь будет получать как обзорное сообщение, так и все сообщения списка отдельно. Режим включается командой set listname digest2, и выключается командой unset digest2.
Режим «Vacation»
Включить режим: set listname vacation Выключить режим unset listname vacation
В случае вашего временного отсутствия, вы вероятно не захотите получать сообщения от списка рассылки. Для этого, вам не обязательно отменять подписку, вы можете включить режим «vacation». В отличие от аннулирования подписки, данный режим позволит вам избежать необходимости подтверждать подписку и отмену от подписки.
Сервер новостейВсе списки рассылки linuxfromscratch.org доступны также через сервер NNTP. Все сообщения, посланные в список, копируются в соответствующую группу новостей и наоборот.
Адрес сервера новостей – news.linuxfromscratch.org.
FAQЕсли вы столкнетесь с трудностями, если у вас возникнут вопросы или вы найдете опечатку в книге, обратитесь к странице ЧАсто задаваемых ВОпросов.
http://www.linuxfromscratch.org/faq/
Как с нами связатьсяУбедительная просьба направлять все сообщения в списки рассылки. См. Глава 1 – Списки рассылки и архивы для получения информации об имеющихся списках.
Если вам необходимо связаться с Герардом Бикмансом лично, пишите на [email protected]
Прим. переводчика – Все вопросы по переводу просьба направлять Денису Каледину, [email protected]
Глава 2. Важная информация
Про $LFSУбедительная просьба прочесть этот раздел внимательно: переменная LFS будет часто использоваться далее. $LFS всегда необходимо заменять на путь директории, где монтирован раздел LFS. Как создать такой раздел и куда его монтировать, описано в Главе 4. Допустим, например, что раздел LFS монтирован на /mnt/lfs.
Когда вас просят выполнить ./configure –prefix=$LFS/static , на самом деле вам необходимо исполнить ./configure –prefix=/mnt/lfs/static.
Необходимо запомнить, что так следует поступать везде, где вы видите переменную $LFS – как в командной строке, так и в создаваемых или редактируемых файлах.
Однако можно существенно облегчить задачу. Для того чтобы использовать $LFS, а не прописывать каждый раз путь к директории, создайте переменную среды LFS следующей командой:
export LFS=/mnt/lfs
Теперь, если вас просят выполнить команду ./configure –prefix=$LFS/static, можно печатать как есть, не заменяя $LFS на путь к директории. После нажатия клавиши Enter, оболочка сама подставит вместо $LFS значение этой переменной, как мы ее определили командой export.
Если вы собираетесь использовать $LFS, никогда не забывайте задавать переменную LFS. В случае если она не задана, оболочка проигнорирует $LFS и выполнит остаток команды. Например, если выполнить команду echo «root:x:0:0:root:/root:/bin/bash» > $LFS/etc/passwd , не задав переменную LFS, оболочка заново создаст файл /etc/passwd. Иными словами, уничтожит текущую базу паролей системы.
Для того чтобы всегда быть уверенным в том, что переменная LFS задана, добавьте ее в файлы /root/.bash_profile и /root/.bashrc. Теперь каждый раз когда вы входите в систему под учетной записью root, или получаете его права с помощью команды su , переменная LFS будет задана автоматически.
Про SBUSBU или Static Bash Units <Статические единицы Bash> используются для определения времени, необходимого для компиляции программы. Почему мы не используем привычные единицы времени, такие как секунды, минуты, часы?
Проблема заключается в том, что использование привычных единиц времени в данном случае дает слишком неточные результаты. Люди инсталлируют LFS на множестве различных систем, и время, затраченное на компиляцию определенной программы будет разным для каждой системы. На одной системе пакет компилируется за 20 минут, на другой системе тот же самый пакет собирается за 3 дня (заметьте, это не преувеличение). Поэтому мы решили использовать SBU.
Как это работает: первым пакетом, который вам будет предложено скомпилировать в Главе 5 будет оболочка Bash со статическими ссылками. Время, потраченное на его компиляцию, будет взято за базис и названо SBU. Время компиляции других программ попадет в прямую зависимость от времени, затраченного на компиляцию Bash. К примеру, компиляция GCC-3.2 занимает примерно 9.5 SBU, и проверено, что это число довольно постоянно на разных системах. Теперь мы умножим 9.5 на число секунд, потраченных на компиляцию Bash (значение SBU), и получим приблизительное время в секундах, необходимое для компиляции GCC.
Примечание: Использование SBU не подходит для многопроцессорных систем. В случае если вы счастливый обладатель такого компьютера, время компиляции, подсчитанное с помощью SBU будет неточным.
Где хранить загруженные программыНа протяжении этой книги мы допускаем, что все скаченные пакеты находятся в директории $LFS/usr/src.
Несмотря на то, что не имеет принципиального значения, где сохранены пакеты, убедительная просьба расположить их по крайней мере на разделе LFS, т.к необходимо иметь доступ к ним, когда вы входите в $LFS с помощью команды chroot или когда вы загружаетесь в систему LFS. Директория $LFS/usr/src – довольно логичное место для хранения исходных кодов, однако это не является необходимым условием. Можно создать подкаталог в $LFS/usr/src для хранения tar-архивов, отделив таким образом tar-архивы от временных директорий компиляции. Опять же, решать вам.
Следующая глава содержит список программ для скачивания. Так как раздел LFS еще не создан, сохранить их там мы пока не можем. На данном этапе сохраните их в другом месте, и переместите на раздел LFS, когда его создадите.
Как инсталлировать программыПрежде чем начать, примите к сведению, что все команды в этой книге подразумевают, что вы используете оболочку Bash. Команды могут работать и с другими оболочками, но этого мы гарантировать не можем. Не хотите проблем – используйте Bash.
Перед тем как инсталлировать пакет, его надо распаковать. Обычно пакеты заархивированы в формате gzip или bzip2. Мы не собираемся каждый раз объяснять, как распаковать пакет. Мы объясним это в данном разделе раз и навсегда.
Для начала перейдите в каталог $LFS/usr/src:
cd $LFS/usr/src
Если файл запакован в tar и gzip, разархивируйте его следующим образом, в зависимости от имени файла:
tar -xvzf filename.tar.gz
tar -xvzf filename.tgz
Если файл запакован в tar и bzip2:
bzcat filename.tar.bz2 | tar -xv
Большинство программ tar способны использовать файлы формата bzip2 напрямую. Они используют параметры -I, -y, или -j, которые аналогичны параметру -z для файлов в формате gzip. Команда, приведенная выше, универсальна и не зависит от того, как ваша система интерпретирует tar.
Если файл запакован просто в формате tar, выполните
tar -xvf filename.tar
При распаковке архива в текущем каталоге создается подкаталог (мы подразумеваем, что архивы распаковываются в директории $LFS/usr/src). Войдите в созданный подкаталог перед выполнением инсталляционных инструкций. Повторим еще раз: каждый раз при установке программы, вы должны распаковать ее архив и перейти в созданный архиватором подкаталог.
Иногда вы столкнетесь с патчами. Обычно они просто запакованы с использованием gzip или bzip2. Перед тем как ими воспользоваться, распакуйте их.
Если файл запакован в формате gzip, распакуйте его следующей командой:
gunzip filename.gz
Если файл запакован в формате bzip2, распакуйте его следующей командой:
bunzip2 filename.bz2
После инсталляции пакета можно либо удалить директорию его исходных кодов, либо сохранить ее. Настоятельно рекомендуем удалять эту директорию. Если этого не сделать и повторно использовать директорию исходников (например, повторно использовать исходники из Главы 5 в Главе 6), получится не совсем то, чего вы ожидали. Деревья исходных кодов в Главе 5 содержат настройки базового дистрибутива, которые не всегда подойдут к системе LFS, после того как вы войдете в среду chroot. Даже выполнение make clean не гарантирует чистого дерева исходников.
Так что просто удаляйте каталог исходных кодов сразу же после их инсталляции, однако на будущее сохраняйте скаченный tar-архив.
Исключение их этого правила – дерево исходных кодов ядра. Не удаляйте ее, т.к. она понадобится в дальнейшем. До того момента никакая программа не будет использовать это дерево, так что оно не помешает. Однако если у вас дефицит дискового пространства, можете смело удалить каталог с исходниками ядра и повторно распаковать этот архив позже.
Поддерживаемые платформыМы стараемся сделать LFS как можно более универсальной. Однако, примите к сведению, что основная разработка ведется на платформе x86. Мы постараемся включить информацию о различиях компиляции для других платформ, например для PPC. Если вы столкнетесь с проблемой компиляции на платформе, отлично от x86, в любом случае отправьте сообщение об этом в список рассылки. Более того, если вам удастся решить проблему, дайте нам знать – пошлите сообщение в список lfs-dev. Проверив правильность решения, мы включим его в книгу.
Как попросить о помощиВ том случае, если при прочтении этой книги вы столкнетесь с проблемой, недокументированной в FAQ, многие участники проекта LFS в списках рассылки и на канале IRC будут рады помочь. Получить общее представление о списках рассылки LFS вы можете в разделе Глава 1 – Списки рассылки и архивы. Чтобы нам было легче диагностировать и решать вашу проблему, постарайтесь привести как можно больше деталей в запросе.
Что необходимо указать
Помимо краткого описания проблемы, не забудьте указать нижеприведенные вещи:
версию используемой книги,
название пакета или секции, с которой у вас проблемы,
сообщение об ошибке или симптомы проблемы,
отклонялись ли вы от шагов, описанных в книге
(Заметьте, что если вы отклонялись от книги, это не значит, что мы не попытаемся помочь, ведь весь смысл LFS – в возможности выбора. Просто напросто ваше признание поможет нам найти решение.)
Проблемы configure
Если при выполнении скрипта 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://www.tuxedo.org/~esr/faqs/smart-questions.html. Следую советам статьи, вы научитесь правильно задавать вопросы и ваши шансы получить квалифицированный ответ возрастут.
II. Часть II – Установка системы LFS
Глава 3. Необходимые пакеты
ВступлениеНиже приведен список пакетов программ, необходимых для построения базовой системы. Указанные номера версий соответствуют стабильным версиям программ, на которых основана эта книга.
Все ссылки указаны на главный сервер LFS. Можно также воспользоваться FTP-зеркалами, см. Глава 1 – Зеркала.
LFS FTP-архив содержит версии программ, используемые в книге. Для того чтобы узнать о появлении новой версии, посетите официальные места загрузки программ, см. Приложение A. Если вам удастся установить новую версию программы, используя инструкции этой книги, мы будем рады узнать об этом.