Linux From Scratch
ModernLib.Net / Интернет / Beekmans Gerard / Linux From Scratch - Чтение
(стр. 5)
Автор:
|
Beekmans Gerard |
Жанр:
|
Интернет |
-
Читать книгу полностью
(438 Кб)
- Скачать в формате fb2
(126 Кб)
- Скачать в формате doc
(134 Кб)
- Скачать в формате txt
(122 Кб)
- Скачать в формате html
(130 Кб)
- Страницы:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
|
|
Установка Texinfo-4.2
Приблизительное время компиляции: 0.47 SBU Необходимое дисковое пространство: 19 MB
Инсталляция Texinfo Для установки Texinfo выполните:
LDFLAGS=-static ./configure –prefix=$LFS/static \ –disable-nls && make && make install
Содержимое Texinfo Последняя проверка: версия 4.2. Программы info, infokey, install-info, makeinfo, texi2dvi и texindex Описания info info читает документы Info, обычно находящиеся в /usr/share/info. Документы Info documents схожи с man pages, но содержат больше, чем простое объяснение опций программы. infokey infokey компилирует в бинарный формат исходный файл персонализаций Info. install-info install-info обновляет записи info. Когда запускается info, выводится список тем (т.е. доступных документов info). install-info обновляет этот список. Если файлы info удалены вручную, необходимо также удалить тему в оглавлении. Для этого и используется данная программа. Она работает аналогично в случае добавления новых документов. makeinfo makeinfo транслирует документы Texinfo в различные форматы. Доступны: файлы info, простой текст и HTML. texi2dvi texi2dvi выводит документы Texinfo texindex texindex используется для сортировки оглавлений Texinfo. Зависимости Texinfo Последняя проверка: версия 4.0. Bash: sh Binutils: ar, as, ld, ranlib Diffutils: cmp Fileutils: chmod, install, ln, ls, mkdir, mv, rm Gcc: cc1, collect2, cpp0, gcc Grep: egrep, fgrep, grep Make: make Sed: sed Sh-utils: basename, echo, expr, hostname, sleep Texinfo: makeinfo Textutils: cat, tr
Установка Textutils-2.1
Приблизительное время компиляции: 0.95 SBU Необходимое дисковое пространство: 49 MB
Инсталляция Textutils Для инсталляции Textutils выполните:
CPPFLAGS=-Dre_max_failures=re_max_failures2 \ ./configure –prefix=$LFS/static \ –disable-nls && make LDFLAGS=-static && make install
Содержимое Textutils Последняя проверка: версия 2.0. Программы cat, cksum, comm, csplit, cut, expand, fmt, fold, head, join, md5sum, nl, od, paste, pr, ptx, sort, split, sum, tac, tail, tr, tsort, unexpand, uniq и wc Описание cat cat выводит файлы на стандартный вывод. cksum cksum выводит контрольную сумму CRC и объем в байтах каждого указанного файла. comm comm построчно сравнивает два отсортированных файла. csplit csplit выводит части файла, разделенные заданными строками, в файлы xx01, xx02, ..., и размер каждой части на стандартный вывод. cut cut выводит указанные строки из указанных файлов на стандартный вывод. expand expand конвертирует знаки табуляции в файле в пробелы и выводит результат на стандартный вывод. fmt fmt форматирует каждый абзац в указанных файлах и выводит результат на стандартный вывод. fold fold делает переносы вводимых строк из указанных файлов (по умолчанию, со стандартного ввода) и выводит результат на стандартный вывод. head head выводит первые x (по умолчанию 10) строк каждого указанного файла на стандартный вывод. join join соединяет строки двух файлов в поля. md5sum md5sum выводит или проверяет контрольные суммы MD5. nl nl выводит каждый указанный файл на стандартный вывод, добавляя номера строк. od od выводит файл в различных форматах, по умолчанию в восьмеричном, на стандартный вывод. paste paste выводит строки, соответствующие заданным образцам из указанных файлов и разделенные символами табуляции, на стандартный вывод. pr pr разделяет файлы на страницы или колонки для распечатки. ptx ptx составляет оглавление файла. sort sort выводит на стандартный вывод построчно отсортированное слияние файлов. split split разбивает входной файл на части заданного размера PREFIXaa, PREFIXab, ... sum sum выводит контрольную сумму и количество занимаемых блоков каждого указанного файла. tac tac выводит каждый указанный файл на стандартный вывод last line first. tail tail выводит последние xx (по умолчанию 10) строк каждого указанного файла на стандартный вывод. tr tr заменяет, вставляет, и/или удаляет символы из стандартного ввода, выводя результат на стандартный вывод. tsort tsort выводит полностью упорядоченные списки, учитывая уже проведенную сортировку указанных файлов. unexpand unexpand конвертирует пробелы в каждом файле в символы табуляции, выводя результат на стандартный вывод. uniq uniq удаляет повторяющиеся строки из отсортированного файла. wc wc выводит количество строк, слов и размер в байтах каждого указанного файла и сумму результатов, если указано более одного файла. Зависимости Textutils Последняя проверка: версия 2.0. Autoconf: autoconf, autoheader Automake: aclocal, automake Bash: sh Binutils: ar, as, ld, ranlib Diffutils: cmp Fileutils: chmod, install, ls, mv, rm Gettext: msgfmt, xgettext Gcc: cc, cc1, collect2, cpp0, gcc Glibc: getconf Grep: egrep, fgrep, grep M4: m4 Make: make Gawk: gawk Net-tools: hostname Perl: perl Sed: sed Sh-utils: basename, echo, expr, sleep, uname Tar: tar Texinfo: install-info, makeinfo Textutils: cat, tr
Установка Util-linux-2.11u
Приблизительное время компиляции: 0.09 SBU Необходимое дисковое пространство: 9 MB
Инсталляция Util-linux Мы не собираемся компилировать весь пакет целиком, т.к. на данном этапе нам нужны только программы mount и umount. Для инсталляции Util-linux выполните:
./configure && make -C lib && make -C mount LDFLAGS=-static mount umount && cp mount/{mount,umount} $LFS/static/bin
Зависимости Util-linux Последняя проверка: версия 2.11n. Bash: sh Binutils: as, ld Diffutils: cmp Fileutils: chgrp, chmod, cp, install, ln, mv, rm Gettext: msgfmt, xgettext Gcc: cc, cc1, collect2, cpp, cpp0 Glibc: rpcgen Grep: grep Make: make Sed: sed Sh-utils: uname, whoami Textutils: cat
Глава 6. Установка основных компонентов системы
Вступление
В этой главе мы всерьез займемся установкой системы LFS. Сначала мы войдем в созданную в предыдущей главе мини-систему Linux, создадим несколько вспомогательных вещей и перейдем к поочередной инсталляции всех пакетов. Инсталляция программ довольно однообразна. Вероятно, можно было бы дать общие инструкции установки, а более подробно пояснять установку тех пакетов, которые требуют иного подхода. Однако мы решили предоставить полное руководство по установке для каждого пакета с целью минимизации возможных ошибок. Если вы собираетесь воспользоваться оптимизациями компилятора в данной главе, см. соответствующее руководство по адресу http://hints.linuxfromscratch.org/hints/optimization.txt. Оптимизации компилятора позволяют ускорить выполнение той или иной программы, однако иногда они создают трудности при компиляции. В случае если пакет не компилируется с использованием оптимизаций, попробуйте скомпилировать его без них. Настоятельно рекомендуется строго соблюдать порядок инсталляции пакетов в данной главе для того, чтобы не включить в программу ссылку на каталог /static. По той же причине, ни в коем случае не компилируйте несколько пакетов одновременно. Параллельная компиляция хоть и позволяет сэкономить время (особенно на двухпроцессорных системах), однако в этом случае в программу может быть встроена ссылка на каталог /static. После удаления данного каталога, программа будет давать сбои.
Отладочные символы
Большинство программ и библиотек по умолчанию компилируются с символами отладки. ( с опцией gcc -g). При отладке программы или библиотеки, скомпилированной с отладочной информацией, отладчик предоставляет не только адреса в памяти, но и имена алгоритмов и переменных. Однако включение символов отладки значительно увеличивает размер программы или библиотеки. Для того, чтобы получить представление о размере отладочных символов, взглянем на пример: оболочка bash, скомпилированная с отладочными символами: 1200 KB оболочка bash, скомпилированная без отладочных символов: 480 KB файлы glibc и gcc (/lib и /usr/lib) с отладочными символами: 87 MB файлы glibc и gcc скомпилированная без отладочных символов: 16 MB Размеры могут различаться в зависимости от использованного компилятора Си и библиотеки. При сопоставлении размера программы, скомпилированной с отладочными символами и без них, разница составляет примерно 2 – 5 раз. Так как большинство пользователей никогда не используют отладчик, удаление этих символов позволит значительно сэкономить дисковое пространство. Для удаления символов отладки из бинарного файла (файл a.out или бинарный файл ELF), выполните
strip –strip-debug filename. Допускается использование символа
*для обработки нескольких файлов (например,
strip –strip-debug $LFS/static/bin/*). Для удобства, в главе 9 описана программа, удаляющая отладочные символы со всех программ и библиотек системы. Для получения дополнительных сведений по оптимизации, см. руководство: http://hints.linuxfromscratch.org/hints/optimization.txt.
Вход в среду chroot
Для последующей инсталляции пакетов необходимо войти в среду chroot. Для этого войдите в систему в режиме пользователя root, т.к. только root он имеет право выполнять команду
chroot. После перехода в режим пользователя root, выполните следующую команду для входа в среду chroot:
chroot $LFS /static/bin/env -i \
HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/static/bin \
/static/bin/bash –login
Команда
envс опцией
-iочистит значения всех переменных среды chroot. Затем только переменные HOME, TERM, PS1 и PATH будут заданы. Конструкция TERM=$TERM устанавливает значение TERM для среды chroot равным значению TERM вне этой среды; эта переменная необходима для корректной работы программ типа vim и less. Если вы нуждаетесь в других переменных, например CFLAGS или CXXFLAGS, самое время задать их снова. Отныне нет необходимости использовать переменную LFS, т.к. все действия выполняются в файловой системе LFS (то, что оболочка считает / , на самом деле является /mnt/lfs). Обратите внимание, что все команды, начиная с данной главы, следует выполнять из среды chroot. Если по какой-то причине (например, перезагрузка системы) вы вышли из этой среды, прежде чем возобновить инсталляцию, заново войдите в нее и монтируйте файловую систему proc (см. далее). Заметьте, что приглашение bash выглядит следующим образом: «I have no name!» Это нормально, т.к. пакет Glibc еще не был установлен.
Изменение прав
Первое что мы сделаем в режиме пользователя
root– передадим права файлов и директорий, установленных в Главе 5, пользователю
root. Это необходимо, т.к. когда в дальнейшем мы оставим директорию /static добавим несколько пользователей, один из них может оказаться владельцем программы со статическими ссылками, а это не самая лучшая идея. Выполните следующую команду для передачи прав на все программы, скомпилированные с использованием статических ссылок:
chown -R 0:0 /static
Эта команда использует «0:0» вместо «root:root», т.к. оболочка не может резольвировать имя «root», т.к. пакет glibc еще не был установлен.
Создание директорий
Давайте создадим структуру файловой системы LFS. Начнем с создания более или менее стандартного дерева с помощью следующих команд:
mkdir -p /{bin,boot,dev/pts,etc/opt,home,lib,mnt,proc} &&
mkdir -p /{root,sbin,tmp,usr/local,var,opt} &&
for dirname in /usr /usr/local
do
mkdir $dirname/{bin,etc,include,lib,sbin,share,src}
ln -s share/{man,doc,info} $dirname
mkdir $dirname/share/{dict,doc,info,locale,man}
mkdir $dirname/share/{nls,misc,terminfo,zoneinfo}
mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
done &&
mkdir /var/{lock,log,mail,run,spool} &&
mkdir -p /var/{tmp,opt,cache,lib/misc,local} &&
mkdir /opt/{bin,doc,include,info} &&
mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}} &&
ln -s ../var/tmp /usr
По умолчанию директории создаются с правами доступа 755, однако это подходит не для всех директорий. Мы сделаем два изменения: для домашнего каталога root и для каталога временных файлов.
chmod 0750 /root &&
chmod 1777 /tmp /var/tmp
Первое изменение гарантирует, что не все пользователи имеют доступ к директории /root directory – аналогичные действия выполняет обычный пользователь со своим домашним каталогом. Второе изменение дает любому пользователю право на запись в директории /tmp и /var/tmp, однако не разрешает удалять из них файлы других пользователей. Удаление чужих файлов определяется параметром «sticky bit» – наивысший двоичный знак в двоичной маске 1777. Итак, после создания директорий переместите tar-архивы исходных кодов пакетов, загруженных по инструкциям Главы 3, в некоторый самостоятельно созданный подкаталог в /usr/src. Соответствие FHS При создании директорий мы основывались на стандарте FHS (см. http://www.pathname.com/fhs/). Помимо созданных каталогов данный стандарт ставит условием наличие каталогов /usr/local/games и /usr/share/games, но, по нашему мнению, для базовой системы они не нужны. Однако можете смело привести свою систему к полному соответствию с FHS. Что касается структуры каталога /usr/local/share, стандарт FHS строго не оговаривает его содержимое, так что мы решили создать в нем необходимые, по нашему убеждению, подкаталоги.
Монтирование файловой системы proc
Для обеспечения корректной работы некоторых программ, необходимо установить файловую систему proc в среде chroot. Так как файловая система может быть монтирована сколько угодно раз и в каких угодно местах, проблем с тем, что файловая система proc уже монтирована в вашем базовом дистрибутиве, возникнуть не должно. Тем более, что proc – виртуальная файловая система. Для монтирования файловой системы proc в /proc, выполните:
mount proc /proc -t proc
Вероятно, следующие предупреждения команды mount будут выведены на экран: warning: can't open /etc/fstab: No such file or directory not enough memory
Не обращайте на них особого внимания – наша система полностью не установлена, и некоторые файлы отсутствуют. Само монтирование файловой системы будет выполнено, и на данном этапе нам больше ничего не требуется.
Создание символической ссылки mtab
Следующий шаг – создание символической ссылки /etc/mtab на /proc/mounts. Для этого выполните:
ln -sf /proc/mounts /etc/mtab
Создание этой символической ссылки предотвращает возможные проблемы при монтировании / только для чтения, когда информация в /etc/mtab устарела. Символическая ссылка на /proc/mounts позволяет всегда иметь свежую информацию о монтированных устройствах. Примечание: Использование данной символической ссылки предполагает, что в ядро вашей системы встроена поддержка файловой системы proc. Данная поддержка встроена по умолчанию, не удаляйте ее, если вы не уверены в своих действиях, т.к. множество других вещей кроме символической ссылки /etc/mtab зависят от нее. Вкратце, убедитесь, что поддержка файловой системы proc включена в ядре.
Создание символических ссылок bash и sh
Некоторые программы при компиляции прописывают ссылки на пока не существующие программы. Для предотвращения связанных с этим проблем, создадим символические ссылки /bin/bash и /bin/sh, указывающие на программу bash, скомпилированную с использованием статических ссылок. Для создания символических ссылок /bin/bash и /bin/sh, выполните:
ln -s /static/bin/bash /bin/bash &&
ln -s bash /bin/sh
Создание файлов passwd и group
Для возможности входа в систему под учетной записью root и для распознавания оболочкой имени «root», необходимо создать соответствующие записи в файлах /etc/passwd и /etc/group. Для создания файла /etc/passwd, выполните:
echo «root:x:0:0:root:/root:/bin/bash» > /etc/passwd
Пароль для root ( "x" всего лишь метка заполнения) будет задан позже. Для создания файла /etc/group, выполните:
cat > /etc/group << «EOF»
root:x:0: bin:x:1: sys:x:2: kmem:x:3: tty:x:4: tape:x:5: daemon:x:6: floppy:x:7: disk:x:8: lp:x:9: dialout:x:10: audio:x:11:
EOF
Созданные группы не относятся ни к какому стандарту – их использует скрипт MAKEDEV, см. след. секцию. Помимо группы «root», стандарт LSB рекомендует наличие только группы «bin», с GID <идентификатор группы> равным 1. Все остальные названия групп и их GID пользователю разрешается выбирать произвольно, т.к. грамотно написанные программы не зависят от номеров GID, а используют название группы.
Создание устройств (Makedev-1.7)
Приблизительное время компиляции: 0.07 SBU Необходимое дисковое пространство: 50 KB
Создание файлов устройств Примите к сведению, что при распаковке архива MAKEDEV-1.7.bz2 не создается директория для перехода, т.к. архив содержит только файл скрипта. Подготовим создание файлов устройств следующей командой:
cp MAKEDEV-1.7 /dev/MAKEDEV && cd /dev && chmod 754 MAKEDEV
Большинство пользователей захотят сразу же создать файлы устройств командой:
./MAKEDEV -v generic
Однако, если вы планируете использовать devpts, выполните:
./MAKEDEV -v generic-nopty
Если вы не уверены в своих действиях, для создания всех необходимых устройств лучше выполнить команду
./MAKEDEV -v generic. В случае, если вы уверены, что собираетесь использовать devpts, вторая команда пропускает создание ненужных устройств. MAKEDEV создает устройства с hda[1-20] по hdh[1-20] и многие другие подобные файлы дисковых узлов, однако имейте ввиду, что из-за ограничений ядра на максимальное количество разделов многие из них будут недоступны. Пояснения команд
./MAKEDEV -v generic:Эта команда создает огромное количество файлов устройств. Обычно, это все, что вам нужно. Однако существует вероятность, что некоторые специфические файлы для ваших аппаратных устройств отсутствуют. Их можно создать командой ./MAKEDEV -v <устройство>. Опция
generic-noptyв создает, в основном, те же устройства, что и опция
generic, за исключением тех, которые не нужны при использовании devpts. Содержимое MAKEDEV Последняя проверка: версия 1.5. Программы MAKEDEV Описания MAKEDEV MAKEDEV – скрипт, создающий необходимые статические связи с устройствами, обычно располагающимися в каталоге /dev. Детальная информация о связях с устройствами может быть найдена в дереве исходных кодов ядра Linux в Documentation/devices.txt. Зависимости MAKEDEV Последняя проверка: версия 1.5. Bash: sh Fileutils: chmod, chown, cp, ln, mknod, mv, rm Grep: grep Sh-utils: expr, id
Установка Linux-2.4.19
Приблизительное время компиляции: 0.02 Необходимое место на диске: 142 MB
Установка заголовочных файлов ядра На данном этапе мы не будем компилировать ядро – мы сделаем это после установки всех пакетов. Однако, в связи с тем, что некоторые пакеты требуют заголовочных файлов ядра, мы распакуем ядро, настроим его и скопируем заголовки туда, где их будут искать пакеты при компиляции. Скопируем заголовки ядра, выполнив следующие команды:
ln -s /static/bin/pwd /bin/pwd && make mrproper && make include/linux/version.h && make symlinks && mkdir /usr/include/asm && cp include/asm/* /usr/include/asm && cp -R include/asm-generic /usr/include && cp -R include/linux /usr/include && touch /usr/include/linux/autoconf.h && rm /bin/pwd
Пояснения команд
ln -s /static/bin/pwd /bin/pwd: В исходных кодах ядра путь к программе pwd прописан как /bin/pwd, поэтому создадим временную символическую ссылку, а в конце удалим ее.
make mrproper: Выполнение данной команды обеспечивает чистое дерево исходников ядра. Команда разработчиков ядра рекомендует выполнять эту команду перед каждой компиляцией ядра, даже если вы только что распаковали исходные коды из tar-архива.
make include/linux/version.hи
make symlinks: Создадим файл include/linux/version.h file и символическую ссылку include/asm для конкретной платформы.
mkdir /usr/include/asm,
cp include/asm/* /usr/include/asmи
cp -R include/asm-generic /usr/include: Эти команды копируют заголовочные файлы ядра ассемблера для конкретной платформы в /usr/include/asm и /usr/include/asm-generic.
cp -R include/linux /usr/include: Эта команда копирует кросс-платформенные файлы заголовков в /usr/include.
touch /usr/include/linux/autoconf.h: Создаем пустой файл autoconf.h. Так как на данном этапе мы не конфигурируем ядро, необходимо вручную создать этот файл для некоторых заголовочных файлов ядра, использующих его, чтобы избежать ошибок при компиляции. Почему мы копируем заголовки ядра, а не создаем для них символические ссылки? Раньше было принято создавать символические ссылки директорий /usr/include/{linux,asm} на /usr/src/linux/include/{linux,asm}. Однако, это была плохая идея, как объясняет Линус Торвальдс в списке рассылки ядра Linux (Linux Kernel Mailing List, отрывок): Тем, кто компилирует новые ядра, настоятельно рекомендую: – не создавать символических ссылок (кроме той, которую создает само ядро, «linux/include/asm», символическая ссылка, которая используется при внутренней компиляции ядра.) Да, именно так делаю я. В моем каталоге /usr/src/linux есть заголовки старого ядра 2.2.13, несмотря на то, что я не использовал ядро 2.2.13 уже очень давно. Однако именно с этими заголовками компилировался пакет glibc, соответственно именно эти заголовки соответствуют файлам объектов библиотеки. Также именно такое положение вещей являлось рекомендуемым на протяжении последних пяти лет. Я не могу понять, почему вся эта заморочка с символическими ссылками все еще существует, как зомби. Практически во всех дистрибутивах есть эта неработающая символическая ссылка, и люди до сих пор помнят, что исходники ядра Linux должны находится в «/usr/src/linux», несмотря на то, что это уже давно не так.
Наиболее важная часть сообщения Линуса заключается в том, что файлы заголовков должны быть именно теми,
с которыми компилировался пакет glibc. Это те заголовки, которые следует использовать в будущем при компиляции других пакетов, т.к. именно они соответствуют файлам библиотек объектного кода. Копируя заголовки, мы удостоверяемся, что они останутся доступными, если позже мы решим обновить ядро. Заметьте, что нет ничего страшного в том, что исходные коды ядра находятся в директории /usr/src/linux. Главное, чтобы у вас не было символических ссылок /usr/include/{linux,asm}. Содержимое Linux Последняя проверка: версия 2.4.18. Файлы поддержки Ядро Linux и его заголовочные файлы Описания Ядро Linux Ядро – основа любой системы Linux. Когда компьютер включается и загружает Linux, первое, что загружается – ядро. Ядро инициализирует аппаратные компоненты системы: последовательные и параллельные порты, звуковые и сетевые карты, контроллеры IDE и SCSI и многое другое. In a nutshell the kernel makes the hardware available so that the software can run. linux kernel headers Это файлы, которые мы копируем в /usr/include/{linux,asm} в 5-й главе. Они должны соответствовать тем, с которым был скомпилирован glibc, и поэтому
недолжны быть заменены при смене ядра. Они имеют ключевое значение для компиляции многих программ. Зависимости Linux Последняя проверка: версия 2.4.17. Bash: sh Binutils: ar, as, ld, nm, objcopy Fileutils: cp, ln, mkdir, mv, rm, touch Findutils: find, xargs Gcc: cc1, collect2, cpp0, gcc Grep: grep Gzip: gzip Make: make Gawk: awk Modutils: depmod, genksyms Net-tools: dnsdomainname, hostname Sed: sed Sh-utils: basename, date, expr, pwd, stty, uname, whoami, yes Textutils: cat, md5sum, sort, tail
Установка 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на
0в файле login/Makefile. Это необходимо, потому что сам пакет Glibc еще не установлен, и выявление идентификационного номера пользователя <userid> из имени пользователя невозможно. К примеру, команда
chown root fileне будет работать, в то время как при замене имени пользователя на userid, программа будет выполнена.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
|
|