Добавление компонент из дистрибутива "вручную".
Будем считать, что дистрибутив вам доступен для просмотра и копирования.
Если он находится на CD, отдельной партиции винчестера или доступен по NFS -
смонтируйте его в любую подходящую директорию.
Если вы можете скопировать его через FTP или через флопики - выберите
ту часть, которая вас интересует (можете посмотреть "Содержание дистрибутива FreeBSD")
и скопируйте в подходящую директорию.
Что именно нужно копировать?
Если речь идет о "монолитных" частях дистрибутива (info, games, manpages и т.п), то забирайте все, что лежит в соответствующей директории дистрибутива. Если вам нужны исходники (директория src), то выберите - какой из архивов вас интересует и берите все файлы с таким названием. Например, если вам нужны исходники ядра, берите все файлы с именем ssys (ssys.aa, ssys.ab и т.д.). Кроме того, очень полезно взять еще файл install.sh из этой же директории.
Несколько слов о том, что это за файлы. На самом деле это архив *.tgz
(tar-архив сжатый GNU zip'ом), только порезанный на кусочки программой split. Эти кусочки можно "склеить" обратно в единый файл командой cat после чего обращаться с ним как и с другими файлами типа tgz.
Однако, вам этого делать не обязательно.
"Извлечение"
Просто запустите командный файл install.sh из этой директории:
sh install.sh
он сам выполнит последовательно команды cat, которая "сольет" кусочки в единый файл и tar (с соответствующими ключами), которая развернет получившийся архив в нужную директорию. Если вы хотите развернуть какой-либо архив из исходников, то install.sh нужно указать в качестве аргумента имя архива (без начальной буквы "s") или all, если вы хотите развернуть все исходники. Например, для тех же исходников ядра:
sh install.sh sys
Более "тонкая" работа.
Все вышеописаные действия можно сделать и с помощью программы sysinstall. Однако, вручную можно сделать и более "тонкую" работу. Например, "вытащить" исходники только одной конкретной программы. Или "достать" из дистрибутива сдержимое директории /etc, какой она была в оригинале (если вы вдруг безнадежно испортили какой-нибудь файл при настройке).
Прежде всего, определите - в каком из дистрибутивных архивов лежит то, что
вам нужно. Если речь идет об исходниках какой-то программы, найдите саму
программ в своей развернутой системе (например, с помощью команды locate).
По названию директории, в которой она находится, можно определить в каком
из архивов искать ее исходники (см. "Содержание дистрибутива FreeBSD"). Естественно, если вам надо саму программу в бинарном виде или файлы из /etc, то их
надо искать в той части дистрибутива, которая называется bin.
Теперь просмотрите соответствующий архив.
cat file.?? | tar tzvf - | more
(вместо more лучше использовать less, если он у вас уже стоит)
естественно, вместо file в команде должно быть имя конкретного архива.
Если вы не обнаружили в архиве то, что искали - попробуйте просмотреть
другие архивы (например, часть исходников лежит в архивах scontrib и sgnu).
Если вы нашли, то что искали, можно приступать к "извлечению" из архива.
Решите, в какую директорию вы хотите положить извлеченное и запускайте
команду
cat file.?? | tar xzf - -C "куда положить" "что взять"
Например:
cat sgnu.?? | tar xzf - -C /home/vasia */uucp
Обратите внимание, что в архиве может быть большое дерево из директорий,
и, те файлы, которые вам нужны, могут иметь длинный "префикс" из названий
поддиректорий (так файлы-исходники uucp в архиве sgnu, выглядят как gnu/libexec/uucp/...). Поэтому в команде, в том месте, где "что взять", надо либо прописать начало имени полностью - gnu/libexec/uucp, либо начать со звездочки - */uucp. Кстати, в директории, куда вы извлекаете файлы, в этом случае создастся соответствующий кусочек дерева из архива. То есть, директория gnu, в ней - libexec, а в ней - uucp со всем своим содержимым.
Подробности о других возможностях программы tar можно почитать в
соответствующем man'уале
man tar.
Иван Паскаль pascal@tsu.ru