Современная электронная библиотека ModernLib.Net

Linux From Scratch

ModernLib.Net / Интернет / Beekmans Gerard / Linux From Scratch - Чтение (стр. 3)
Автор: Beekmans Gerard
Жанр: Интернет

 

 


org/lfs-packages/4.0/kbd-1.06.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/kbd-1.06.tar.bz2 Kbd Patch (1.06-3) – 3 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/kbd-1.06-3.patch.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/kbd-1.06-3.patch.bz2 Less (374) – 189 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/less-374.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/less-374.tar.bz2 LFS-Bootscripts (1.10) – 27 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/lfs-bootscripts-1.10.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/lfs-bootscripts-1.10.tar.bz2 Libtool (1.4.2) – 653 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/libtool-1.4.2.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/libtool-1.4.2.tar.bz2 Lilo (22.2) – 292 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/lilo-22.2.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/lilo-22.2.tar.bz2 Linux (2.4.19) – 25,432 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/linux-2.4.19.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/linux-2.4.19.tar.bz2 M4 (1.4) – 249 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/m4-1.4.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/m4-1.4.tar.bz2 Make (3.79.1) – 794 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/make-3.79.1.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/make-3.79.1.tar.bz2 MAKEDEV (1.7) – 8 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/MAKEDEV-1.7.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/MAKEDEV-1.7.bz2 Man (1.5k) – 168 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/man-1.5k.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/man-1.5k.tar.bz2 Man Patch (1.5k) – 1 KB ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/man-1.5k.patch.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/man-1.5k.patch.bz2 Man-pages (1.52) – 569 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/man-pages-1.52.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/man-pages-1.52.tar.bz2 Modutils (2.4.19) – 213 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/modutils-2.4.19.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/modutils-2.4.19.tar.bz2 Ncurses (5.2) – 1,308 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/ncurses-5.2.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/ncurses-5.2.tar.bz2 Ncurses Patch (5.2-2) – 1 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/ncurses-5.2-2.patch.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/ncurses-5.2-2.patch.bz2 Netkit-base (0.17) – 49 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/netkit-base-0.17.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/netkit-base-0.17.tar.bz2 Net-tools (1.60) – 194 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/net-tools-1.60.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/net-tools-1.60.tar.bz2 Patch (2.5.4) – 149 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/patch-2.5.4.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/patch-2.5.4.tar.bz2 Perl (5.8.0) – 8,416 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/perl-5.8.0.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/perl-5.8.0.tar.bz2 Procinfo (18) – 22 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/procinfo-18.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/procinfo-18.tar.bz2 Procps (2.0.7) – 153 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/procps-2.0.7.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/procps-2.0.7.tar.bz2 Procps Patch (2.0.7) – 1 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/procps-2.0.7.patch.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/procps-2.0.7.patch.bz2 Psmisc (21) – 172 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/psmisc-21.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/psmisc-21.tar.bz2 Sed (3.02) – 221 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sed-3.02.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/sed-3.02.tar.bz2 Shadow (4.0.3) – 760 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/shadow-4.0.3.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/shadow-4.0.3.tar.bz2 Sh-utils (2.0) – 824 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0.tar.bz2 Sh-utils Hostname Patch (2.0-hostname) – 1 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0-hostname.patch.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0-hostname.patch.bz2 Sh-utils Patch (2.0) – 1 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0.patch.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/sh-utils-2.0.patch.bz2 Sysklogd (1.4.1) – 67 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sysklogd-1.4.1.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/sysklogd-1.4.1.tar.bz2 Sysvinit (2.84) – 76 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/sysvinit-2.84.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/sysvinit-2.84.tar.bz2 Tar (1.13) – 730 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/tar-1.13.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/tar-1.13.tar.bz2 Tar Patch (1.13) – 1 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/tar-1.13.patch.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/tar-1.13.patch.bz2 Texinfo (4.2) – 1,175 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/texinfo-4.2.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/texinfo-4.2.tar.bz2 Textutils (2.1) – 1,847 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/textutils-2.1.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/textutils-2.1.tar.bz2 Util-linux (2.11u) – 1,073 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/util-linux-2.11u.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/util-linux-2.11u.tar.bz2 Vim (6.1) – 2,823 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/vim-6.1.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/vim-6.1.tar.bz2 Vim Patch (6.1) – 1 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/vim-6.1.patch.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/vim-6.1.patch.bz2 Zlib (1.1.4) – 144 KB: ftp://ftp.linuxfromscratch.org/lfs-packages/4.0/zlib-1.1.4.tar.bz2 http://ftp.linuxfromscratch.org/lfs-packages/4.0/zlib-1.1.4.tar.bz2 Общий объем пакетов: 105,560 KB (103.88 MB)

Глава 4. Готовим новый раздел

Вступление

      В этой главе речь пойдет о создании раздела для системы LFS. Мы создадим сам раздел, файловую систему на нем, и монтируем его.

Создаем новый раздел

      Возможно построить систему LFS на одном разделе с уже установленным дистрибутивом. Несмотря на то, что для первой установки LFS данный шаг не рекомендуется, это удобно, если у вас дефицит дискового пространства. Если вы решили рискнуть, см. совет по Инсталляции LFS на один раздел с сосуществующими системамина http://hints.linuxfromscratch.org/hints/lfs_next_to_existing_systems.txt.
      Перед тем как перейти к установке LFS необходимо иметь пустой Linux native раздел. Для установки LFS рекомендуется раздел размеров не менее 1 GB. Это дает возможность хранить tar-архивы с программами и компилировать пакеты. Если вы планируете использовать LFS в качестве основной Linux-системы, вам придется отвести для нее больше места для инсталляции дополнительного программного обеспечения. Если Linux-native раздел для LFS уже существует, можете смело пропустить эту подсекцию.
      В связи с тем, что оперативная память компьютера может одновременно уместить ограниченное количество информации, рекомендуется отвести место на диске для файлов swap. Файл swap – это место, где хранится информация из памяти, которую можно вызвать в любой момент. LFS и ваш дистрибутив могут совместно использовать это дисковое пространство. Другими словами, если у вас уже есть swap-раздел, нет особого смысла создавать еще один. Если же у вас его нет, создайте его программой fdisk. В любом случае, запомните обозначение swap-раздела (например, hda2), это понадобится при создании файла /etc/fstab.
      Программа cfdisk (аналогичная fdisk) запускается с соответствующим обозначением жесткого диска в качестве аргумента (например /dev/hda, в случае если новый раздел следует создать на жестком диске primary master с IDE интерфейсом). С помощью этой программы создайте раздел Linux native. Обратитесь к документации программы fdisk ( руководства man обычно неплохое начало для поиска информации) для получения информации о создании разделов Linux native и записи таблиц разделов.
      Запомните обозначение раздела, оно будет выглядеть как например hda11. Этот раздел мы впоследствии будем называть разделом LFS.

Создаем файловую систему на новом разделе

      После того как новый раздел создан, создадим на нем файловую систему. На данный момент стандартная файловая система – ext2, однако так называемые журналируемые файловые системы становятся очень популярными. Мы будем подразумевать, что вы собираетесь использовать ext2. Инструкции по созданию других файловых систем см. на http://beyond.linuxfromscratch.org/view/cvs/postlfs/filesystems.html.
      Для создания файловой системы ext2, используйте команду mke2fs. Наименование раздела LFS – единственная опция к команде, и файловая система создана.
       mke2fs /dev/xxx
 
      Замените «xxx» на наименование раздела LFS (например hda11).

Монтируем раздел

      Итак, файловая система создана и готова к эксплуатации. Для того чтобы получить доступ к разделу (возможность чтения и записи информации на нем), необходимо его монтировать. Если точка монтирования /mnt/lfs, перейти к этому разделу можно с помощью команды cd /mnt/lfs. Мы будем подразумевать, что точка монтирования раздела – /mnt/lfs. Выбор директории для точки монтирования не принципиален, просто запомните, что вы выбрали.
      Создайте директорию /mnt/lfs:
       mkdir -p /mnt/lfs
 
      Монтируем LFS раздел:
       mount /dev/xxx /mnt/lfs
 
      Замените «xxx» наименованием раздела (например hda11).
      Эта директория (/mnt/lfs) и есть значение переменной LFS variable из Главы 2. Если вы планируете использовать переменную среды LFS, самое время выполнить export LFS=/mnt/lfs.
      Если вы решили выделить LFS несколько разделов (к примеру $LFS и $LFS/usr), монтируйте их следующим образом:
       mkdir -p /mnt/lfs && mount /dev/xxx /mnt/lfs && mkdir /mnt/lfs/usr && mount /dev/yyy /mnt/lfs/usr
 
      Естественно, замените /dev/xxx и /dev/yyy на соответствующие наименования разделов.

Глава 5. Подготовка системы LFS

Вступление

      В этой главе мы скомпилируем и установим минимальную Linux-систему. Эта система будет располагать инструментами, необходимыми для сборки окончательной системы LFS в следующей главе.
      Файлы, скомпилированные в данной главе, будут инсталлированы в директорию $LFS/static, для того, чтобы отделить их от тех файлов, которые будут установлены в следующей главе. Так как эти программы можно рассматривать как временные, нет необходимости засорять ими нашу будущую систему LFS.
      Ключ к пониманию работы Linux – четкое знание о том, для чего нужен системе и пользователю каждый пакет программ, и что он делает. Для этого после инструкций по установке по каждому пакету приведены короткие описания входящих в него программ.
      Перед использованием ко многим пакетам необходимо применить патчи. Мы будем делать это только там и тогда, где необходимо, так что не стоит волноваться, если инструкции по применению патча отсутствуют.
      Во время инсталляции некоторых пакетов, на экран будут выводиться многочисленные предупреждения компилятора. В них нет ничего страшного, не обращайте на них внимание. Это просто предупреждения – в основном, связанные с некорректным, но не запрещенным использованием синтаксиса C или C++. Дело в том, что стандарты C довольно часто менялись, а некоторые пакеты все еще используют старый стандарт, однако это не проблема.
      Прежде чем начать, убедитесь, что переменная LFS задана корректно. Для проверки выполните:
       echo $LFS
 
      Убедитесь, что вывод на экране соответствует точке монтирования раздела LFS (например /mnt/lfs).

Почему мы используем статические ссылки?

      (Спасибо Plasmatic'у за разъяснение этого вопроса в одном из списков рассылки LFS.)
      При компиляции программы, вместо того, чтобы при создании нового файла каждый раз переписывать все функции работы с ядром, аппаратными средствами, файлами, все базовые функции хранятся в библиотеках. glibc, которую мы установим позже, является одной из главных библиотек такого рода. Она содержит код для всех основных функций, таких как открытие файлов, печать информации на экран, получение ввода от пользователя. После компиляции программы эти библиотеки связываются ссылками с новой программой, чтобы она могла использовать любую функцию этих библиотек.
      Однако такие библиотеки могут оказаться довольно большими (например, libc.a обычно занимает 2.5 MB), и держать отдельную копию каждой библиотеки прикрепленной к программе не очень то и логично. Представьте себе простую команду вроде ls с лишними 2.5 MB, прикрепленными к ней! Вместо того, чтобы делать библиотеку частью программы, или связывать статической ссылкой, библиотеку можно хранить в отдельном файле, который будет подгружаться по мере необходимости. Это называется динамическими ссылками, т.к. библиотека загружается и выгружается динамически, по мере необходимости программы.
      Итак, у нас есть файл размером 1 KB и файл размером 2.5 MB. Пока мы не сэкономили дискового пространства (разве что освободили оперативную память до того, как библиотека понадобится). Настоящаявыгода от использования динамических ссылок состоит в том, что нам необходимо хранить лишь одну копию библиотеки. Если ls и rm используют одну и ту же библиотеку, то нам не нужно иметь две копии этой библиотеки. Обе команды могут пользоваться кодом из одного файла. Также и с оперативной памятью – две программы используют один код вместо того, чтобы загружать в память его дубликаты. Таким образом экономится не только место на диске, но и драгоценная оперативная память.
      Если динамические ссылки позволяют сэкономить столько места, почему же мы везде используем статические ссылки? Потому что, когда вы входите в новую (и далекую от совершенства) систему LFS с помощью команды chroot, динамические библиотеки будут недоступны, т.к. они находятся в дереве старого дистрибутива (например в /usr/lib). Эти каталоги будут недоступны из корневой директории системы LFS ($LFS).
      Для того чтобы скомпилированные программы работали в среде chroot, при компиляции убедитесь, что библиотеки связаны статическими ссылками, отсюда возникают опции –enable-static-link, –disable-shared, и -staticв Главе 5. Первое, что описывает Глава 6, это компиляция основных библиотек системы, glibc. После этого, мы перекомпилируем все программы, собранные в Главе 5, но в этот раз с динамическими ссылками, чтобы воспользоваться всеми преимуществами экономии дискового пространства.
      Именно поэтому мы и используем эти странные опции -static. Если скомпилировать пакеты без них, вы довольно быстро увидите, что случится, после того как вы войдете в парализованную систему LFS при помощи команды chroot.
      Для получения более детальной информации по динамически связанным библиотекам, обратитесь к книгам и Linux-ориентированным сайтам по программированию.

Создаем директорию $LFS/static

      Как уже говорилось во вступлении в данную главу, все, что будет инсталлировано в этой главе, попадет в директорию $LFS/static, чтобы не загрязнять раздел LFS кучей временных файлов. Нам необходимо лишь создать эту директорию:
       mkdir $LFS/static
 
      Для удобства можно поместить загруженные пакеты в директорию $LFS/static, например сохранить их в подкаталоге $LFS/static/src.

Установка всех компонентов в режиме непривилегированного пользователя

      Если при выполнении шагов, описанных в Главе 5, вы будете зарегистрированы в системе как root, есть вероятность, что некоторые файлы системы будут заменены файлами, которые будут скомпилированы в Главе 5. На это есть ряд причин, неопределенная переменная $LFS – одна из них. Замена файлов на вашей системе скорее всего приведет к возникновению всякого рода проблем, поэтому рекомендуется выполнять шаги Главы 5 от имени непривилегированного пользователя. Для чистоты эксперимента создадим новую учетную запись «lfs», которую будем использовать на стадии компиляции со статическими ссылками. Для добавления новой учетной записи, выполните следующие команды в режиме пользователя root:
       useradd -s /bin/bash -m lfs && passwd lfs
 
      Теперь скорректируем права на директорию $LFS/static, чтобы пользователь «lfs» имел к ней доступ на запись:
       chown -R lfs $LFS/static
 
      Теперь войдите в систему под учетной записью «lfs». Это можно сделать двумя способами: через новую виртуальную консоль или оконный менеджер, или командой su – lf s. После этого выполните следующие команды от имени пользователя «lfs» для создания благоприятной среды:
       cat > ~/.bash_profile << «EOF» umask 022 LFS=/mnt/lfs LC_ALL=POSIX CC='gcc -s' export LFS LC_ALL CC EOF source ~/.bash_profile
 
      Этот профиль устанавливает umask равным 022, чтобы созданные файлы и директории автоматически получали правильные права. Настоятельно рекомендуется использование этой установки на протяжении всей инсталляции LFS. Также были заданы переменные $LFS, $LC_ALL, и $CC. Про переменную $LFS мы уже не раз говорили. Переменная $LC_ALL используется для интернационализации.
      Если на вашем базовом дистрибутиве установлена библиотека glibc версии 2.2.4 и ранее, и на протяжении Главы 5 переменная $LC_ALL определена не как "C" или «POSIX», могут возникнуть проблемы при выходе повторном входе в среду chroot в Главе 6. Для того чтобы быть уверенным в том, что в среде chroot все будет работать корректно, присвойте этой переменной значение «POSIX» ("C" is an alias for «POSIX»).
      Использование переменной $CC вызвано необходимостью предотвратить компиляцию отладочных символов в статические пакеты. Таким образом экономится дисковое пространство и существенно сокращается время компиляции.

Установка Bash-2.05a

      Приблизительное время компиляции: 1 SBU Необходимое дисковое пространство: 24 MB
 
      Установка Bash
      Перед тем как установить Bash, убедитесь, что в вашем базовом дистрибутиве есть файлы /usr/lib/libcurses.a и usr/lib/libncurses.a. Если ваш дистрибутив – LFS system, оба файла должны быть на месте при условии, что вы в точности следовали инструкциям книги.
      Если этих файлов нет, следует установить пакет разработки Ncurses, его иногда называют ncurses-dev. Если этот пакет уже установлен, или вы только что его установили, проверьте наличие этих двух файлов еще раз. Зачастую файл libcurses.a отсутствует. В таком случае, создайте символическую ссылку libcurses.a, выполнив следующую команду в режиме пользователя root:
       ln -s libncurses.a /usr/lib/libcurses.a
 
      Теперь можно продолжить инсталляцию Bash:
       ./configure –enable-static-link \ –prefix=$LFS/static –with-curses && make && make install
 
      Если стадия make instal lвыдает следующие сообщения об ошибках:
      install-info: unknown option `–dir-file=/mnt/lfs/usr/info/dir' usage: install-info [–version] [–help] [–debug] [–maxwidth=nnn] [–section regexp title] [–infodir=xxx] [–align=nnn] [–calign=nnn] [–quiet] [–menuentry=xxx] [–info-dir=xxx] [–keep-old] [–description=xxx] [–test] [–remove] [–] filename make[1]: *** [install] Error 1 make[1]: Leaving directory `/mnt/lfs/usr/src/bash-2.05a/doc' make: [install] Error 2 (ignored)
 
      это означает, что у вас Debian-2.2 (potato), в котором используется старая версия пакета texinfo. Данная ошибка не критична: страницы документации будут заново установлены в Главе 6, при перекомпиляции bash с динамическими ссылками. В текущем релизе Debian (3.0; известном под названием Woody) эта проблема отсутствует.
      Пояснения команд
       –enable-static-link:Эта опция configure указывает на использование статических ссылок.
       –prefix=$LFS/static:Эта опция configure инсталлирует все файлы Bash в директорию $LFS/static, которая будет именоваться /static после того, как мы войдем в систему LFS с помощью команды chroot или перезагрузки.
       –with-curses:Эта опция связывает bash с библиотекой curses вместо устаревающей библиотеки termcap.
      Совершенно необязательно связывать статическую версию bash с libncurses (можно связать ее с termcap, т.к. в любом случае мы перекомпилируем Bash в Главе 6 с использованием libncurses), однако это хороший способ убедиться, что пакет Ncurses установлен корректно. В обратном случае, это повлечет за собой сбои при инсталляции пакета Texinfo, которому необходима библиотека ncurses, т.к. с termcap он ведет себя нестабильно.
      Символы &&в конце каждой строки указывают на то, что следующая команда должна быть выполнена лишь в том случае, если предыдущая команда возвратила значение 0 на выходе, т.е. успешно завершила операцию. В том случае если вы копируете и вставляете эти команды в оболочку, не забывайте убедиться, что если скрипт ./configure дал сбой, не выполняется команда make, а также, если команда make дала сбой, не выполняется команда make install, и т.д.
      Содержание Bash
      Последняя проверка: версия 2.05a.
      Программы
      bash, sh (ссылка на bash) и bashbug
      Описания
      bash
      bash – Bourne-Again SHell, широко используемый в Unix системах командный интерпретатор. Bash считывает данные со стандартного ввода, с клавиатуры. Пользователь вводит что-либо, интерпретатор распознает введенное и выполняет это, например запускает программу.
      bashbug
      bashbug – скрипт, помогающий пользователю составлять и отправлять сообщения об ошибках bash в стандартном формате.
      sh
      sh – символическая ссылка на bash. Будучи вызванным как sh, bash имитирует запуск старых версий sh для лучшего соответствия стандартам POSIX.
      Зависимости Bash
      Последняя проверка: версия 2.05a.
      Bash: bash, sh Binutils: ar, as, ld, ranlib, size Diffutils: cmp Fileutils: chmod, cp, install, ln, ls, mkdir, mv, rm Gcc: cc, cc1, collect2, cpp0, gcc Grep: egrep, grep Make: make Gawk: awk Sed: sed Sh-utils: basename, echo, expr, hostname, sleep, uname Texinfo: install-info Textutils: cat, tr, uniq

Установка Binutils-2.13

      Приблизительное время компиляции: 2.05 SBU Необходимое дисковое пространство: 160 MB
 
      Установка Binutils
      Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Binutils рекомендуется компилировать с настройками по умолчанию. Следовательно, если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета binutils. Изменяя оптимизации для binutils, вы действуете на свой страх и риск.
      Для инсталляции Binutils выполните:
       mkdir ../binutils-build && cd ../binutils-build && ../binutils-2.13/configure –prefix=$LFS/static –disable-nls && make LDFLAGS=-all-static && make install
 
      Пояснения команд
       mkdir ../binutils-build:В инструкциях установки Binutils рекомендуется создать отдельную директорию для сборки, вместо того, чтобы компилировать программу в директории исходников. Итак, мы создаем директорию binutils-build и будем работать из нее.
       –disable-nls:Эта опция выключает поддержку интернационализации (или i18n), которая не нужна нам на стадии статически связанных программ, т.к. часто дает сбои при использовании статических ссылок.
       LDFLAGS=-all-static:Присваиваем переменной LDFLAGS значение -all-static для того, чтобы использовать статические ссылки.
      Содержимое Binutils
      Последняя проверка: версия 2.12.1.
      Программы
      addr2line, ar, as, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings and strip
      Описания
      addr2line
      addr2line переводит программные адреса в имена файлов и номера строк. Given an address and an executable, используется отладочная информация исполняемого файла, чтобы определить, какое имя файла и номер строки связаны с данным адресом.
      ar
      ar создает и изменяет архивы, а также производит их распаковку. Архив – файл, содержащий несколько файлов в виде, позволяющем восстановить оригинал.
      as
      as используется для ассемблирования вывода the GNU C Compiler, gcc для использования с линкером ld.
      gasp
      gasp – Assembler Macro Preprocessor.
      gprof
      gprof отображает статистику системных вызовов.
      ld
      ld объединяет несколько объектных и архивных файлов и устанавливает символьные отношения. Последний шаг в сборке скомпилированной программы – запуск ld.
      nm
      nm перечисляет символы из объектных файлов.
      objcopy
      objcopy utility копирует содержимое одного объектного файла в другой. objcopy использует библиотеку GNU BFD для чтения/записи объектных файлов. Возможна запись конечного объектного файла в формате, отличном от исходного.
      objdump
      objdump выводит информацию об одном или нескольких объектных файлах. Опции указывают, какую информацию выводить. Эта информация полезна для программистов, разрабатывающих компиляторы, в противоположность тем, кому нужно просто скомпилировать и запустить программу.
      ranlib
      ranlib генерирует оглавление содержимого архива и сохраняет его в архиве. Список будет содержать все символы, определенные членами архива, that is a relocatable object file.
      readelf
      readelf выводит информацию об бинарных файлах типа elf.
      size
      size выводит размеры секций –и общий размер– каждого указанного объектного файла. По умолчанию, генерируется одна строка для каждого объектного файла или модуля в архиве.
      strings
      Для каждого заданного файла strings выводит последовательность отображаемых символов длиной минимум 4 знака (или указанной длины), завершающуюся непечатным символом. По умолчанию, выводятся лишь строки из инициализированных и загруженных частей объектных файлов. Для других типов файлов выводятся строки из всего файла.
      strings зачастую используется для определения содержимого нетекстовых файлов.
      strip
      strip удаляет все или указанные символы из объектных файлов. Список объектных файлов может включать архивы. Должен быть задан как минимум один объектный файл. Модификация указанных файлов приоритетнее, чем запись модифицированных копий под другими именами.
      Библиотеки
      libbfd.[a,so] и libopcodes.[a,so]
      Описания
      libbfd
      libbfd – библиотека Binary File Descriptor.
      li bopcodes
      libopcodes – библиотека для работы с опкодами, используется в сборке утилит вроде objdump. Опкоды – «читаемые» версии инструкций процессора.
      Зависимости Binutils
      Последняя проверка: версия 2.11.2.
      Autoconf: autoconf, autoheader Automake: aclocal, automake Bash: sh Binutils: ar, as, ld, nm, ranlib, strip Diffutils: cmp Fileutils: chmod, cp, ln, ls, mkdir, mv, rm, rmdir, touch Flex: flex Gcc: cc, cc1, collect2, cpp0, gcc Glibc: ldconfig Grep: egrep, fgrep, grep M4: m4 Make: make Gawk: gawk Sed: sed Sh-utils: basename, echo, expr, hostname, sleep, true, uname Texinfo: install-info, makeinfo Textutils: cat, sort, tr, uniq

Установка 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 семейства статистических архиваторов.

  • Страницы:
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15