355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Gerard Beekmans » Linux From Scratch » Текст книги (страница 7)
Linux From Scratch
  • Текст добавлен: 24 сентября 2016, 07:05

Текст книги "Linux From Scratch"


Автор книги: Gerard Beekmans


Жанр:

   

ОС и Сети


сообщить о нарушении

Текущая страница: 7 (всего у книги 18 страниц)

Установка Man-pages-1.52

Приблизительное время компиляции: 0.01 SBU Необходимое дисковое пространство: 6 MB

Инсталляция Man-pages

Для инсталляции Man-pages выполните:

make install

Содержимое Man-pages

Последняя проверка: версия 1.52.

Файлы поддержки

Различные страницы руководства, не поставляемые с пакетами

Описания

Страницы руководства

Примеры предоставляемых страниц руководства – описания всех функций C and C++, файлов /dev/ и многое другое.

Зависимости Man-pages

Последняя проверка: версия 1.47.

Bash: sh Fileutils: install Make: make

Установка Glibc-2.2.5

Приблизительное время компиляции: 14.71 SBU Необходимое дисковое пространство: 369 MB

Инсталляция Glibc

Перед установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.

Перед выполнением инсталляционных инструкций войдите в каталог glibc-2.2.5 и распакуйте архив glibc-linuxthreads в каталоге glibc-2.2.5, а не в /usr/src.

Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Glibc рекомендуется компилировать с настройками по умолчанию. Следовательно, если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета Glibc. Изменяя оптимизации для Glibc, вы действуете на свой страх и риск.

Также не стоит запускать скрипт configure с опцией –enable-kernel. Это может вызвать ошибки сегментации при ссылке на него пакетов вроде fileutils, make и tar.

Вообще, чтобы не рисковать, рекомендуем компилировать Glibc в точности как указано в этом разделе.

Для инсталляции Glibc выполните:

patch -Np1 -i ../glibc-2.2.5-2.patch && touch /etc/ld.so.conf && mkdir ../glibc-build && cd ../glibc-build && ../glibc-2.2.5/configure –prefix=/usr –disable-profile –enable-add-ons –libexecdir=/usr/bin && echo «cross-compiling = no» > configparms && make && make install && make localedata/install-locales && exec /static/bin/bash –login

Вместо выполнения make localedata/install-locales можно установить только те локали, которые вам необходимы с помощью команды localedef. Более подробную информацию можно найти в файле INSTALL в директории glibc-2.2.5. Не забудьте создать директорию /usr/lib/local, т.к. localedef предполагает ее наличие.

На данном этапе мы не будем инсталлировать страницы руководства потоков (The Linux Threads man pages), т.к. они требуют функционирующего пакета Perl. Мы вернемся к их инсталляции после установки Perl.

Во время стадии configure на экран будет выведено следующее предупреждение:

configure: warning: *** These auxiliary programs are missing or too old: msgfmt *** some features will be disabled. *** Check the INSTALL file for required versions.

Отсутствие файла msgfmt (из пакета gettext, который мы установим позже в данной главе) не вызовет никаких проблем. Файл msgfmt используется для генерирования бинарных файлов перевода, которые позволяют системе общаться на другом языке. Так как эти файлы перевода уже сгенерированы, в использовании msgfmt нет необходимости. Нам понадобился бы msgfmt лишь в том случае, если мы изменили исходники файлов перевода (файлы *.po в подкаталоге po), т.к. нам пришлось бы заново генерировать бинарные файлы.

Пояснения команд

patch -Np1 -i ../glibc-2.2.5-2.patch: Этот патч переводит все упоминания о $(PERL) на /usr/bin/perl в файле malloc/Makefile. Это необходимо, т.к. Glibc не может определить местонахождение программ Perl, так как пакет Perl еще не был установлен. Данный патч также заменяет все упоминания о root на в файле login/Makefile. Это необходимо, потому что сам пакет Glibc еще не установлен, и выявление идентификационного номера пользователя из имени пользователя невозможно. К примеру, команда chown root file не будет работать, в то время как при замене имени пользователя на userid, программа будет выполнена.

Данный патч также устраняет некоторые другие ошибки, например, «errlist», «dns resolver», «xdr_array», «calloc», «thread exit», «udivdi3», «math test», «restrict_arr» и «divbyzero». Для получения более подробной информации, см. http://www.zipworld.com.au/~gschafer/lfs-tweaks.html.

touch /etc/ld.so.conf: Один из заключительных шагов установки Glibc installation – выполнение команды ldconfig для обновления динамического кэша загрузки. Если этот файл не существует, инсталляция завершится с ошибкой, что не может прочесть файл. Для избегания подобной ошибки, мы просто создаем пустой файл (в случае пустого файла, Glibc будет по умолчанию использовать каталоги /lib и /usr/lib).

–disable-profile: Отменяет компиляцию библиотек с профильной информацией. Если вы собираетесь использовать профили, пропустите эту опцию.

–enable-add-ons: Включает дополнительные модули, в нашем случае linuxthreads.

–libexecdir=/usr/bin: Инсталлирует программу pt_chown в каталог /usr/bin.

echo «cross-compiling = no» > configparms: Этой командой мы даем понять, что компилируем пакет только для нашей системы. Кросс-компиляция используется, например, для того, чтобы скомпилировать пакет для системы Apple Power PC на Intel-совместимом компьютере. Glibc по умолчанию полагает, что мы кросс-компилируем, потому что не может скомпилировать тестовую программу для проверки, т.к. сам пакет Glibc еще не установлен.

exec /static/bin/bash –login: Данная программа запустит новый сеанс оболочки bash вместо текущего. Мы, таким образом, избавимся от приглашения «I have no name!» командной строки, которое было вызвано невозможностью bash получить имя пользователя из userid (из-за отсутствия Glibc).

Содержимое Glibc

Последняя проверка: версия 2.2.5.

Программы

catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump и zic

Описания

catchsegv

catchsegv может быть использования для слежения за состоянием стека, когда выполнение программы прерывается из-за ошибки распределения памяти.

gencat

gencat генерирует каталоги сообщений.

getconf

getconf отображает значения переменных, зависящих от системной конфигурации.

getent

getent позволяет получить записи административной базы данных.

glibcbug

glibcbug создает сообщение об ошибке в glibc и отправляет по указанному адресу сообщения об ошибках.

iconv

iconv осуществляет преобразование наборов символов.

iconvconfig

iconvconfig создает конфигурационные файлы для модулей iconv.

ldconfig

ldconfig настраивает привязки времени исполнения динамического линкера.

ldd

ldd выводит список разделяемых библиотек, необходимых заданным программам.

lddlibc4

lddlibc4 используется ldd при работе с объектными файлами.

locale

locale – скрипт на Perl, разрешающий (или запрещающий) компилятору использование локалей POSIX для встроенных операций.

localedef

localedef компилирует спецификации локалей.

mtrace

mtrace выводит путь multicast от источника к получателю (запрос IP trace).

nscd

nscd – демон, предоставляющий кэш для большинства запросов DNS.

nscd_nischeck

nscd_nischeck проверяет нужен или нет защищенный режим для запроса NIS+.

pcprofiledump

pcprofiledump выводит информацию, полученной из профиля PC.

pt_chown

pt_chown устанавливает владельца, группу и права доступа подчиненного псевдотерминала в соответствии с основным псевдотерминалом, переданном в описании `3'. Это вспомогательная программа для функции `grantpt'. Не предназначается для прямого запуска из командной строки.

rpcgen

rpcgen генерирует код C для реализации протокола RPC.

rpcinfo

rpcinfo делает запрос RPC к серверу.

sln

sln символически связывает dest и source. Программа собрана статически. Использование sln полезно для создания символических ссылок на динамические библиотеки, если система динамического связывания по какой-то причине нефункциональна.

sprof

sprof выводит информацию о разделяемом объекте.

tzselect

tzselect получает от пользователя информацию от его местоположении и выводит на стандартный вывод значение текущей временной зоны.

xtrace

xtrace отслеживает исполнение программы, выводя исполняемые в данный момент функции.

zdump

zdump – сохраняет значение временной зоны.

zic

zic – компилятор временных зон.

Библиотеки

ld.so, libBrokenLocale.[a,so], libBrokenLocale_p.a, libSegFault.so, libanl.[a,so], libanl_p.a, libbsd-compat.a, libc.[a,so], libc_nonshared.a, libc_p.a, libcrypt.[a,so], libcrypt_p.a, libdl.[a,so], libdl_p.a, libg.a, libieee.a, libm.[a,so], libm_p.a, libmcheck.a, libmemusage.so, libnsl.a, libnsl_p.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libpthread_p.a, libresolv.[a,so], libresolv_p.a, librpcsvc.a, librpcsvc_p.a, librt.[a,so], librt_p.a, libthread_db.so, libutil.[a,so] и libutil_p.a

Описания

ld.so

ld.so – вспомогательная программа для исполняемых файлов разделяемых библиотек.

libBrokenLocale, libBrokenLocale_p

Используется многими программами, например Mozilla, для использования поврежденных локалей.

libSegFault

libSegFault управляет сигналами ошибок распределения памяти, также пытается их перехватить.

libanl, libanl_p

libanl – библиотека асинхронных запросов DNS.

libbsd-compat

libbsd-compat предоставляет переносимость, необходимую для запуска некоторых программ в Linux.

libc, libc_nonshared, libc_p

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

Библиотека C (в общем случае, любая библиотека) существует как в динамическом, так и статическом виде. Вкратце, когда программа использует статическую библиотеку, код из библиотеки копируется в исполняемый файл. При использовании динамической библиотеки, код из библиотеки не добавляется в исполняемый файл, а загружается только во время исполнения программы. Это позволяет уменьшить размер программ. За подробностями обращайтесь к документации библиотеки C.

libcrypt, libcrypt_p

libcrypt – криптографическая библиотека.

libdl, libdl_p

libdl – библиотека интерфейсов динамической линковки.

libg

libg – библиотека времени исполнения g++.

libieee

libieee – IEEE библиотека операций с числами с плавающей запятой.

libm, libm_p

libm – математическая библиотека.

libmcheck

libmcheck – содержит код, выполняемый при загрузке.

libmemusage

libmemusage – используется memusage для сбора информации о памяти, используемой программой.

libnsl, libnsl_p

libnsl – библиотека сетевых сервисов.

libnss_compat, libnss_dns, libnss_files, libnss_hesiod, libnss_nis, libnss_nisplus

Основная идея – поместить реализацию различных сервисов доступа к базам данных в отдельные модули. Преимущества:

поставщики могут добавлять новые сервисы, не включая их в C библиотеку GNU,

модули могут быть независимо обновлены,

Библиотека C имеет меньший размер.

libpcprofile

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

libpthread, libpthread_p

POSIX библиотека потоков.

libresolv, libresolv_p

Библиотека позволяет DNS-серверам создавать, посылать и интерпретировать пакеты.

librpcsvc, librpcsvc_p

Библиотека предоставляет различные сервисы RPC.

librt, librt_p

Библиотека предоставляет большинство интерфейсов, описанных POSIX.1b Realtime Extension.

libthread_db

Библиотека полезна для создания отладчиков для многопотоковых приложений.

libutil, libutil_p

Содержит код «стандартных» функций, используемых многими утилитами Unix.

Зависимости Glibc

Последняя проверка: версия 2.2.5.

Bash: sh Binutils: ar, as, ld, ranlib, readelf Diffutils: cmp Fileutils: chmod, cp, install, ln, mknod, mv, mkdir, rm, touch Gcc: cc, cc1, collect2, cpp, gcc Grep: egrep, grep Gzip: gzip Make: make Gawk: gawk Sed: sed Sh-utils: date, expr, hostname, pwd, uname Texinfo: install-info, makeinfo Textutils: cat, cut, sort, tr

Установка GCC-3.2

Приблизительное время компиляции: 13.26 SBU Необходимое дисковое пространство: 221 MB

Инсталляция GCC

Перед установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.

Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). GCC рекомендуется компилировать с настройками по умолчанию. Следовательно, если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета GCC. Изменяя оптимизации для GCC, вы действуете на свой страх и риск.

Для инсталляции GCC выполните приведенные ниже команды, собирающие компиляторы языка Си и С++. Также можно установить компиляторы других языков программирования из пакета GCC. В случае, если вы хотите инсталлировать все компиляторы из пакета GCC, уберите опцию –enable-languages=c,c++ из команды configure. Для получения информации о доступных компиляторах, см документацию пакета GCC.

Примечание: инсталляция других компиляторов не тестировалась разработчиками проекта LFS.

patch -Np1 -i ../gcc-3.2.patch && mkdir ../gcc-build && cd ../gcc-build && ../gcc-3.2/configure –prefix=/usr –enable-shared –enable-languages=c,c++ –enable-threads=posix –with-slibdir=/lib –enable-__cxa_atexit –enable-clocale=gnu && make bootstrap && make install && ln -s ../usr/bin/cpp /lib && ln -s ../bin/cpp /usr/lib && ln -s gcc /usr/bin/cc

Пояснение команд

–enable-threads=posix: Эта опция включает обработку исключений в многопоточном коде на С++.

–enable-__cxa_atexit: Эта опция позволит использовать shared-библиотеки C++ и программы, написанные на C++, с другими дистрибутивами Linux.

–enable-clocale=gnu: Существует опасность, что у некоторых пользователей будут компилироваться ABI-несовместимые библиотеки С++, если glibc localedata не установлен полностью. Использование опции –enable-clocale=gnu гарантирует корректную компиляцию во всех случаях. Если вы не хотите использовать эту опцию, удостоверьтесь, что по крайней мере, устанавливается локаль de_DE. Когда GCC находит эту конкретную локаль, выполняется верный режим локали (gnu).

Содержимое GCC

Последняя проверка: версия 3.1.

Программы

c++, c++filt, cc (link to gcc), cc1, cc1plus, collect2, cpp, cpp0, g++, gcc, gccbug, gcov и tradcpp0

Описания

cc, cc1, cc1plus, gcc

Компилятор C. Компилятор переводит код из текстового формата в формат, понятный компьютеру. После того, как исходный код скомпилирован в объектный файл, линкер создаст исполняемый файл из одного или нескольких объектных.

c++, cc1plus, g++

Компилятор C++, эквивалент cc, gcc etc.

c++filt

Язык C++ позволяет осуществлять перезагрузку функций, делая возможным написание многих функций с одним именем (с разным набором параметром). Все имена функций C++ закодированы в низкоуровневые метки ассемблера (этот процесс известен как mangling). c++filt совершает обратное действие: низкоуровневые имена переводятся (demangling) в имена, понятные пользователю, так что линкер избегает конфликта между перезагруженными функциями.

collect2

collect2 помогает в компиляции конструкторов.

cpp, cpp0

cpp осуществляет препроцессинг исходных файлов, например включает в них содержимое заголовочных файлов. Просто добавьте в ваш исходный файл строку вроде #include . Препроцессор вставит содержимое заголовочного файла.

gccbug

gccbug – скрипт, облегчающий создание сообщений об ошибках.

gcov

gcov анализирует программы, чтобы помочь в создании более эффективного и быстрого кода путем его оптимизации.

tradcpp0

На данный момент описания нет.

Библиотеки

libgcc.a, libgcc_eh.a, libgcc_s.so, libiberty.a, libstdc++.[a,so], libsupc++.a

Описания

libgcc, libgcc_eh, libgcc_s

Файлы поддержки gcc времени исполнения.

libiberty

libiberty – коллекция подпрограмм, используемых различными программами GNU, включая getopt, obstack, strerror, strtol и strtoul.

libstdc++

libstdc++ – библиотека C++. Она используется программами на C++ и содержит часто используемые функции. Таким образом, программисту не нужно писать стандартные функции (например, вывод строки текста на экран) с нуля при каждом создании программы.

libsupc++

libsupc++ предоставляет поддержку языка программирования C++. Помимо прочего, libsupc++ содержит функции для обработки исключений.

Зависимости GCC

Последняя проверка: версия 2.95.3.

Bash: sh Binutils: ar, as, ld, nm, ranlib Diffutils: cmp Fileutils: chmod, cp, ln, ls, mkdir, mv, rm, touch Find: find Gcc: cc, cc1, collect2, cpp0, gcc Grep: egrep, grep Make: make Patch: patch Sed: sed Sh-utils: basename, dirname, echo, expr, hostname, sleep, true, uname Tar: tar Texinfo: install-info, makeinfo Textutils: cat, tail, tr

Установка Zlib-1.1.4

Приблизительное время компиляции: 0.07 SBU Необходимое дисковое пространство: 1 MB

Инсталляция Zlib

Для инсталляции Zlib выполните:

./configure –prefix=/usr –shared && make LIBS="libz.so.1.1.4 libz.a" && make LIBS="libz.so.1.1.4 libz.a" install && mv /usr/lib/libz.so.* /lib && ln -sf ../../lib/libz.so.1 /usr/lib/libz.so && cp zlib.3 /usr/share/man/man3

Содержимое Zlib

Последняя проверка: версия 1.1.4.

Библиотеки

libz[a,so]

Описания

libz

Библиотека zlib, используемая многими программами, и реализующая методы (де)компрессии данных.

Зависимости Zlib

Зависимости еще не проверялись.

Установка Findutils-4.1

Приблизительное время компиляции: 0.10 SBU Необходимое место на диске: 3 MB

Инсталляция Findutils

Перед установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.

Для инсталляции Findutils выполните:

patch -Np1 -i ../findutils-4.1.patch && ./configure –prefix=/usr && make libexecdir=/usr/bin && make libexecdir=/usr/bin install

Замечания по соответствию FHS

По умолчанию, база данных updatedb находится /usr/var. Если вы хотите полного соответствия со стандартом FHS, установите ее в другом месте. Приведенные ниже команды используют совместимый с FHS файл базы данных /var/lib/misc/locatedb.

patch -Np1 -i ../findutils-4.1.patch && ./configure –prefix=/usr && make localstatedir=/var/lib/misc libexecdir=/usr/bin && make localstatedir=/var/lib/misc libexecdir=/usr/bin install

Пояснения команд

patch -Np1 -i ../findutils-4.1.patch: Этот патч исправляет некоторые ошибки при компиляции, избегая конфликта переменных и поправляя синтаксис.

Содержимое Findutils

Последняя проверка: версия 4.1.

Программы

bigram, code, find, frcode, locate, updatedb и xargs

Описания

bigram

bigram используется вместе с code для создания поисковых баз старого типа. Больше информации об этих программах приведено на locatedb.5 man page.

code

code – предшественник frcode. Он использовался в старых поисковых базах.

find

find ищет файлы, отвечающие заданному критерию. Если критерий не задан, выводится список файлов в текущем каталоге и каталогах нижнего уровня.

frcode

frcode вызывается updatedb для сжатия списка файлов, используя front-compression и уменьшая размер базы данных в 4-5 раз.

locate

locate просматривает базу данных, содержащую сведения обо всех файлах и каталогах на файловой системе. Программа выводит имена файлов и каталогов в базе, совпадающие с заданным критерием. Если пользователь ищет файлы, программа просмотрит базу и сообщит, где находятся запрошенные файлы. Поиск даст результаты, только если база часто обновляется, иначе будет выдана устаревшая информация.

updatedb

updatedb обновляет поисковую базу. Просматривается вся файловая система (включая все смонтированные, если не указано обратное), каждый найденный файл и каталог записывается в базу, используемую locate. Неплохо обновлять базу хотя бы раз в день, чтобы избежать ее устаревания.

xargs

xargs выполняет команду относительно списка файлов. Список должен содержать одно имя в строке.

Зависимости Findutils

Последняя проверка: версия 4.1.

Bash: sh Binutils: ar, as, ld, ranlib Diffutils: cmp Fileutils: chmod, cp, install, mv, rm Grep: egrep, grep Gcc: cc1, collect2, cpp0, gcc Make: make Patch: patch Sed: sed Sh-utils: basename, date, echo, hostname Textutils: cat, tr

Установка Gawk-3.1.1

Приблизительное время компиляции: 0.39 SBU Необходимое дисковое пространство: 15 MB

Инсталляция Gawk

Перед установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.

Предупреждение: Ни в коем случае не выполняйте команду make uninstall для этого пакета, если вы установили патч, изменяющий определение директории libexec. Правило uninstall в скрипте Makefile выполнит команду rm -rf /* . Так как мы определили директорию libexec как /usr/bin, скрипт выполнит rm -rf /usr/bin/*

Для инсталляции Gawk выполните:

patch -Np1 -i ../gawk-3.1.1-2.patch && ./configure –prefix=/usr –libexecdir=/usr/bin && make && make install

Пояснение команд

patch -Np1 -i ../gawk-3.1.1-2.patch: Этот патч изменяет определение местоположения директории libexec. Он позволит нам переопределить ее с помощью опции –libexecdir к скрипту configure.

Содержимое Gawk

Последняя проверка: версия 3.1.1.

Программы

awk, gawk, gawk-3.1.1, grcat, igawk, pgawk, pgawk-3.1.1, pwcat

Описания

awk

awk – символьная ссылка на gawk.

gawk, gawk-3.1.1

gawk – GNU реализация awk, языка поиска и обработки текстовых образцов.

grcat

grcat выполняет слияние базы групп, /etc/group.

igawk

igawk – скрипт, дающий gawk возможность включения файлов.

pgawk, pgawk-3.1.1

pgawk – профильная версия gawk.

pwcat

pwcat выполняет слияние базы паролей, /etc/passwd.

Зависимости Gawk

Последняя проверка: версия 3.1.0.

(Зависимости пока не проверены)


    Ваша оценка произведения:

Популярные книги за неделю