Программы обычно расспространаятся на Интернет как , состоящие из 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' делала.
Посмотрите, можете ли вы обнаружить эти действия в выводимой информации.
И если вы еще не были удивленны, то вы должны это сделать сейчас!
| |
|