Linux программирование в примерах - страница 6
.
Наибольший интерес представляет возможность просматривать архив старых исходных кодов Unix через веб. Начните с >http://minnie.tuhs.org/UnixTree/
. Все примеры кода в данной книге из седьмого издания исследовательской системы UNIX, известной также как «V7».
Сайт TUHS физически расположен в Австралии, хотя имеются зеркала архива по всему миру — см. >http://www.tuhs.org/archive_sites.html
. Эта страница также указывает, что архив доступен для зеркала через >rsync
. (Если у вас нет >rsync
, см. >http://rsync.samba.org/
: это стандартная утилита на системах GNU/Linux.)
Чтобы скопировать весь архив, потребуется примерно 2-3 гигабайта дискового пространства. Для копирования архива создайте пустой каталог, а в нем выполните следующие команды:
>mkdir Applications 4BSD PDP-11 PDP-11/Trees VAX Other
>rsync -avz minnie.tuhs.org::UA_Root .
>rsync -avz minnie.tuhs.org::UA_Applications Applications
>rsync -avz minnie.tuhs.org::UA_4BSD 4BSD
>rsync -avz minnie.tuhs.org::UA_PDP11 PDP-11
>rsync -avz minnie.tuhs.org::UA_PDP11_Trees PDP-11/Trees
>rsync -avz minnie.tuhs.org::UA_VAX VAX
>rsync -avz minnie.tuhs.org::UA_Other Other
Вы можете пропустить копирование каталога >Trees
, который содержит извлечения из нескольких версий Unix и занимает на диске около 700 мегабайт.
В рассылке TUHS можно также поинтересоваться, нет ли поблизости от вас кого-нибудь, кто мог бы предоставить вам архив на CD-ROM, чтобы избежать пересылки по Интернету такого большого количества данных.
Группа в Southern Storm Software, Pty. Ltd. в Австралии «модернизировала» часть кода уровня пользователя V7, так что его можно откомпилировать и запустить на современных системах, особенно на GNU/Linux. Этот код можно загрузить с их веб-сайта[10].
Интересно отметить, что код V7 не содержит в себе каких-либо уведомлений об авторских правах или разрешениях. Авторы писали код главным образом для себя и своего исследования, оставив проблемы разрешений отделу корпоративного лицензирования AT&T.
Если вы используете GNU/Linux, ваш дистрибутив поступит с исходным кодом, предположительно в формате, используемом для упаковки (файлы RPM Red Hat, файлы DEB Debian, файлы >.tar.gz
Slackware и т.д.) Многие примеры в книге взяты из GNU Coreutils, версия 5.0. Найдите соответствующий CD-ROM для своего дистрибутива GNU/Linux и используйте для извлечения кода соответствующий инструмент. Или следуйте для получения кода инструкциям в следующих нескольких абзацах.
Если вы предпочитаете самостоятельно получать файлы из ftp-сайта GNU, вы найдете его по адресу: >ftp://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.gz
.
Для получения файла можно использовать утилиту >wget
:
>$ wget ftp://ftp.gnu.org/ena/coreutils/coreuitils-5.0.tar.gz
>/* Получить дистрибутив */
>/* ... здесь при получении файла куча вывода ... */
В качестве альтернативы можно использовать для получения файла старый добрый >ftp
:
>$ ftp ftp.gnu.org /* Подключиться к ftp-сайту GNU */
>Connected to ftp.gnu.org (199.232.41.7).
>220 GNU FTP server ready.
>Name (ftp.gnu.org:arnold): anonymous /* Использовать анонимный ftp */
>331 Please specify the password.
>Password: /* Пароль на экране не отображается */
>230-If you have any problems with the GNU software or its downloading,
>230-please refer your questions to
>... /* Куча вывода опущена */
>230 Login successful. Have fun.
>Remote system type is UNIX.
>Using binary mode to transfer files.
>ftp> cd /gnu/coreutils /* Перейти в каталог Coreutils */
>250 Directory successfully changed.
>ftp> bin
>200 Switching to Binary mode.
>ftp> hash /* Выводить символы # по мере закачки */
>Hash mark printing on (1024 bytes/hash mark).
>ftp> get coreutils-5.0.tar.gz /* Retrieve file */
>local: coreutils-5.0.tar.gz
>remote: coreutils-5.0.tar.gz
>227 Entering Passive Mode (199,232,41,7,86,107)
>150 Opening BINARY mode data connection for coreutils-5.0.tar.gz (6020616 bytes)
>######################################################################
>######################################################################
>...
>226 File send OK.
>6020616 bytes received in 2.03e+03 secs (2.9 Kbytes/sec)
>ftp>