Руководство пользователя FreeBSD Handbook

       

Как работает коллекция портов FreeBSD?


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

Стандартный набор действий заключается в том, что вы должны ftp-уть tarball, расспоковать его, выполнить конфигурационный скрипт, и использовать стандартную программу 'make', чтобы скомпилировать и инсталировать программу.

Порты FreeBSD все еще используют механизм tarball, но используют , чтобы управлять "знанием" о том, как получить работающую программу на FreeBSD, вместо того, чтобы ожидать от пользователя, чтобы он добился этого сам. Порты также содержат их собственные , так что почти каждый порт м.б. построен одним и тем же способом.

Если вы смотрите на каркас порта (либо на вашей FreeBSD системе или на ) и ожидаете найти что-то сверхумное, то вы будете разочарованы парой простеньких файлов и директорий, которые вы там найдете. (Мы уделим этому минутку в секции ).

''Как такое может быть?'' - Я слышу ваш крик. ''Здесь нет даже исходных текстов!''

Не бойтесь, все скоро станет ясно. Давайте посмотрим, что произойдет, если мы попытаемся инсталировать порт. Я выбрал 'bash', также известный как Bourne-Again Shell, так как это кажется наиболее типичным.

Замечание: Если вы пытаетесь сделать это дома, вам необходимо зайти как root.

# cd /usr/ports/shells/bash # make install Checksums OK. ===> Extracting for bash-1.14.5 ===> Patching for bash-1.14.5 ===> Applying FreeBSD patches for bash-1.14.5 ===> Configuring for bash-1.14.5 ===> Building for bash-1.14.5 [lots and lots of compiler output here...] ===> Installing for bash-1.14.5 make -f bash-Makefile bindir=/usr/local/bin prefix=/usr/local install (cd ./documentation/; make ) rm -f builtins.txt nroff -man builtins.1 > builtins.txt install -c -o bin -g bin -m 555 bash /usr/local/bin/bash install -c -o bin -g bin -m 555 bashbug /usr/local/bin/bashbug ( cd ./documentation/ ; make mandir=/usr/local/man/man1 man3dir=/usr/local/man/man3 infodir=/usr/local/info install ) [ -d /usr/local/man/man1 ] mkdir /usr/local/man/man1 [ -d /usr/local/info ] mkdir /usr/local/info ../support/install.sh -c -m 644 bash.1 /usr/local/man/man1 ../support/install.sh -c -m 644 builtins.1 /usr/local/man/man1/bash_builtins.1 ../support/install.sh -c -m 644 features.info /usr/local/info/bash.info gzip -9nf /usr/local/man/man1/bash.1 /usr/local/man/man1/bash_builtins.1 ===> Registering installation for bash-1.14.5

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

>> bash-1.14.5.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://slc2.ins.cwru.edu/pub/dist/.

Программа 'make' заметила, что вы не имеете локальной копии исходных текстов и попыталась FTP-уть их (вы начинаете удивляться? 8-)). В моем случае я уже имею исходники, так что здесь нет необходимости их доставать .

Давайте посмотрим, что программа 'make' делала.

  1. Находит исходный код Если он не доступен локально, пытается взять его с FTP узла.
  2. Выполняет , чтобы проверить, что tarball не был подделанным, случайно обрезанным и т.д..
  3. Распаковывает tarball во временную рабочую директорию.
  4. Применяет всякие , необходимые, чтобы получить исходники компилируемыми и исполнимыми под FreeBSD.
  5. Выполняет конфигурационный скрипт, необходимый для процесса построения и корректно отвечает на вопросы.
  6. (Последнее!) Компилирует код.
  7. Устанавливает исполняемые программы и другие файлы, man страницы, и др. в соответствующие директории в /usr/local, где они не будут перемешиваться с системными программами. Это позволяет быть уверенным, что все порты, которые вы инсталируете, будут находиться в одном и том же месте, а не валяться где попало.
  8. Регистрирует установку в базе данных. Это означает, что если вам программа не понравилась, вы можете просто все следы о программе в системе.

Посмотрите, можете ли вы обнаружить эти действия в выводимой информации.

И если вы еще не были удивленны, то вы должны это сделать сейчас!

| |

Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT


Содержание раздела