Linux From Scratch - Gerard Beekmans
Шрифт:
Интервал:
Закладка:
Установка Bzip2-1.0.2
Приблизительное время компиляции: 0.07 SBU Необходимое дисковое пространство: 6 MB
Установка Bzip2
Для инсталляции Bzip2 выполните:
make CC="gcc -static" && make PREFIX=$LFS/static install
Стоит заметить, что имеет смысл загрузить патч для программы Tar, который позволяет ей без труда запаковывать и распаковывать архивы с помощью bzip2/bunzip2. Однако этот патч не является частью базовой системы LFS. С обычной версией tar, для работы с bzip2/bunzip2 используются конструкции вида bzcat file.tar.bz | tar -xv или tar –use-compress-prog=bunzip2 -xvf file.tar.bz2. Вышеупомянутый патч предоставляет возможность использования опции -j, при помощи которой распаковать архив bzip2 командой tar -xvfj file.tar.bz2. Применение данного патча будет рассмотрено далее, при установке пакета Tar.
Пояснения команд
make CC="gcc -static": Таким образом мы сообщаем gcc, что компиляция bzip2 должна быть выполнена с использованием статических ссылок.
Содержимое Bzip2
Последняя проверка: версия 1.0.2
Программы
bunzip2 (ссылка на bzip2), bzcat (ссылка на bzip2), bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless и bzmore
Описания
bunzip2
bunzip2 распаковывает файлы, сжатые bzip2.
bzcat
bzcat (или bzip2 -dc) распаковывает указанные файлы на стандартный вывод.
bzcmp, bzdiff
bzcmp и bzdiff позволяют использовать cmp и diff для файлов, сжатых bzip2.
bzegrep, bzfgrep, bzgrep
bzegrep, bzfgrep, и bzgrep позволяют использовать egrep, fgrep, or grep для файлов, сжатых bzip2.
bzip2
bzip2 сжимает файлы, используя Burrows-Wheeler block sorting алгоритм сжатия текста и код Huffman. Сжатие, обычно: значительно лучше, чем достигаемое традиционными архиваторами, основанными на LZ77/LZ78, и достигает производительности PPM семейства статистических архиваторов.
bzip2recover
bzip2recover восстанавливает данные из поврежденных файлов bzip2.
bzless
bzless – подобный less фильтр, позволяющий поэкранный просмотр сжатых или текстовых файлов.
bzmore
bzmore – подобный more фильтр, позволяющий поэкранный просмотр сжатых или текстовых файлов.
Библиотеки
libbz2.a, libbz2.so (ссылка на libbz2.so.1.0), libbz2.so.1.0 (ссылка на libbz2.so.1.0.2) и libbz2.so.1.0.2
libbz2
libbz2 – библиотека, реализующая сжатие данных без потерь, используя block-sorting алгоритм Burrows-Wheeler.
Зависимости Bzip2
Последняя проверка: версия 1.0.1.
Bash: sh Binutils: ar, as, ld, ranlib Fileutils: cp, ln, rm Gcc: cc1, collect2, cpp0, gcc Make: make
Установка Diffutils-2.8.1
Приблизительное время компиляции: 0.39 SBU Необходимое дисковое пространство: 10 MB
Инсталляция Diffutils
Для инсталляции Diffutils выполните:
LDFLAGS=-static CPPFLAGS=-Dre_max_failures=re_max_failures2 ./configure –prefix=$LFS/static –disable-nls && make && make install
Пояснения команд
CPPFLAGS=-Dre_max_failures=re_max_failures2: Переменная CPPFLAGS считывается программой cpp (препроцессор Си). Значение этой переменной дает указание препроцессору заменить re_max_failures на re_max_failures2 во всех случаях перед тем, как передать файл исходного кода компилятору для компиляции. Известны случаи, когда этот пакет ведет себя некорректно при попытке использовать статические ссылки на системах со старой версией Glibc. Данная конструкция устраняет проблему.
Содержимое Diffutils
Последняя проверка: версия 2.8.1.
Программы
cmp, diff, diff3 и sdiff
Описания
cmp и diff
cmp и diff сравнивают пару файлов и сообщают об их различиях. Обе программы имеют дополнительные опции сравнения файлов в различных ситуациях.
diff3
Разница между diff и diff3 состоит в том, что diff сравнивает 2 files, а diff3 – 3.
sdiff
sdiff выполняет слияние 2 файлов и интерактивно выводит результаты.
Зависимости Diffutils
Последняя проверка: версия 2.7.
Bash: sh Binutils: ld, as Diffutils: cmp Fileutils: chmod, cp, install, mv, rm Gcc: cc1, collect2, cpp0, gcc Grep: egrep, grep Make: make Sed: sed Sh-utils: date, hostname Textutils: cat, tr
Установка Fileutils-4.1
Приблизительное время компиляции: 0.94 SBU Необходимое дисковое пространство: 40 MB
Инсталляция Fileutils
Некоторые программы из статически слинкованного пакета Fileutils могут вызвать ошибку сегментации на системах, где используется Glibc-2.2.3. Чаще всего эта проблема встречается на системах с процессорами AMD, однако было зафиксировано несколько случаев на Intel-системах. Если ваша система попадает под данную категорию, примените патч.
В некоторых случаях после применения патча компиляция пакета будет невозможна, даже если у вас процессор AMD и библиотеки Glibc-2.2.3 (или новее). В таком случае удалите директорию fileutils-4.1 и заново распакуйте tar-архив. Предполагается, что это связано с тем, что ваш базовый дистрибутив каким-то образом изменил библиотеки Glibc-2.2.3, однако на данный момент подробности недоступны.
Для того чтобы данный пакет корректно компилировался на системах с процессорами AMD и библиотеками Glibc-2.2.3, выполните следующую команду. Не делайте этого, если у вас не установлена Glibc-2.2.3. Более чем вероятно, это вызовет различные сбои при компиляции.
patch -Np1 -i ../fileutils-4.1.patch
Для инсталляции Fileutils выполните:
LDFLAGS=-static ./configure –disable-nls –prefix=$LFS/static && make && make install
Теперь можно проверить, удалось ли избежать проблемы с ошибкой сегментации. Выполните $LFS/static/bin/ls. Если программа работает, все в порядке. Если нет, повторите инсталляцию с применением патча, если вы инсталлировали пакет без него, или без применения патча, если до этого вы инсталлировали пакет с его применением.
Пояснения команд
patch -Np1 -i ../fileutils-4.1.patch: Эта команда решает проблему компиляции fileutils с использованием статических ссылок на системах с библиотеками glibc 2.2.3. Если этого не сделать, то впоследствии вы вероятно столкнетесь с ошибками сегментации при выполнении программ из пакета fileutils, когда войдете в систему LFS с помощью chroot в Главе 6.
Содержимое Fileutils
Последняя проверка: версия 4.1.
Программы
chgrp, chmod, chown, cp, dd, df, dir, dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, shred, sync, touch и vdir
Описания
chgrp
chgrp группу владельца указанных файлов, возможно указание как имени группы, так и ее номера.
chmod
chmod изменяет права доступа к указанному файлу, в соответствии с параметрами, заданными символьно или в восьмеричном представлении двоичного выражения новых прав.
chown
chown изменяет владельца и/или группу указанных файлов.
cp
cp копирует файлы.
dd
dd копирует файл (по умолчанию, со стандартного ввода на стандартный вывод) с указанным размером блока и опциональными преобразованиями.
df
df показывает количество свободного места на файловых системах, содержащих указанные файлы. Если файлы не заданы, показывается свободное место на всех смонтированных файловых системах.
dir, ls and vdir
dir и vdir – версии ls с разными форматами вывода по умолчанию. Эти программы выводят список заданных файлов и каталогов. Содержимое каталога сортируется по алфавиту. ls, по умолчанию, перечисляет файлы в столбцах если стандартный вывод – терминал, иначе идет перечисление по одному в строке. dir, по умолчанию, перечисляет файлы в столбцах. vdir, по умолчанию перечисляет файлы в полном формате.
dircolors
dircolors выводит значение LS_COLOR. Переменная LS_COLOR используется для установки цветовой схемы, используемой ls и прочими утилитами.
du
du выводит количество дискового пространства, занятого указанными файлами и каталогами (включая подкаталоги).
install
install копирует файлы, устанавливает права доступа и, если возможно, владельца и группу.
ln
ln создает жесткие или мягкие (символические) ссылки на файлы.
mkdir
mkdir создает каталог с заданным именем.
mkfifo
mkfifo создает FIFO с заданным именем.
mknod
mknod создает FIFO, символьный или блочный файл с заданным именем.
mv
mv перемещает файлы из одного каталога в другой или переименовывает их, в зависимости от заданных параметров.
rm
rm удаляет файлы или каталоги.
rmdir
rmdir удаляет пустые каталоги.
shred
shred безопасно удаляет файл, перезаписывая занимаемые им блоки, так что содержимое невозможно восстановить.
sync
sync принудительно записывает изменившиеся блоки на диск и обновляет superblock.
touch
touch изменяет время доступа и изменения каждого заданного файла на текущее время. Если файл не существует, то создается пустой файл.
Зависимости Fileutils
Последняя проверка: версия 4.1.
Bash: sh Binutils: ar, as, ld, ranlib Diffutils: cmp Fileutils: chmod, cp, install, ln, ls, mkdir, mv, rm, rmdir Gettext: msgfmt, xgettext Gcc: cc, cc1, collect2, cpp0, gcc Grep: egrep, fgrep, grep Make: make Perl: perl Sed: sed Sh-utils: basename, echo, expr, hostname, sleep, uname Texinfo: install-info Textutils: cat, tr
Установка Findutils-4.1
Приблизительное время компиляции: 0.12 SBU Необходимое дисковое пространство: 8 MB
Инсталляция Findutils
Перед установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.
Для инсталляции Findutils выполните:
patch -Np1 -i ../findutils-4.1.patch && CPPFLAGS=-Dre_max_failures=re_max_failures2 ./configure –prefix=$LFS/static && make LDFLAGS=-static && make install
Пояснения команд
patch -Np1 -i ../findutils-4.1.patch: Этот патч исправляет некоторые ошибки при компиляции, избегая конфликта переменных и исправляя синтаксис.