В комплекте компакт-дисков FreeBSD есть довольно внушительная коллекция. Можно также вручную скачать пакеты с сайта FTP и установить их из.
5.4. Использование бинарных пакетов
Перед этими дейстиями нужно сначала скачать /обновить дерево Устраивать замес из портов/ пакетов FreeBSD и пакетов PCBSD.
Вместе с FreeBSD в составе базового комплекта системы поставляется богатый набор системный утилит. Однако для выполнения какой-то реальной.
Коллекция портов FreeBSD (англ. FreeBSD Ports Collection), как и бинарные пакеты (англ. package) — технология установки программного обеспечения.
Пакеты — это программы из коллекции «портов», уже скомпилированные для определенной версии FreeBSD. Сначала мы обсудим именно пакеты, поскольку, как правило, работать с ними легче, чем с «портами». После рассмотрения пакетов обратимся к «портам». Установка программы как пакета может сэкономить много времени, потому что оно не будет тратиться на компиляцию исходного кода. Если на распространение программы в компилированном виде не наложены правовые ограничения, то она доступна как пакет. Другие программы, такие как Adobe Acrobat, доступны только в компилированном виде. Пакеты доступны на компакт-дисках или через FTP и называются так же, как соответствующие им «порты». В комплекте компакт-дисков FreeBSD есть довольно внушительная коллекция скомпилированных пакетов. Для их использования нужно лишь смонтировать CD и прочитать файл пакета. Если у вас имеются образы CD, еще не записанные на физический носитель, можно смонтировать эти образы и устанавливать пакеты из образов. (Порядок работы со съемными носителями и монтирования образов дисков подробно описан в главе 8.) После монтирования CD загляните в каталог packages. Ниже приведено содержимое каталога с самого свежего установочного компакт-диска FreeBSD: Листинг кажется знакомым. Да, он такой же, как и листинг каталога /usr/ports. Пакеты — это всего лишь скомпилированные «порты», поэтому они хранятся в тех же каталогах-категориях, что и «порты», из которых они собраны. На одном компакт-диске недостаточно места для хранения всех 17 000 пакетов FreeBSD. Установочные компакт-диски содержат только основные пакеты, востребованные практически в любой системе, такие как X Window System и Perl. Второй образ компакт-диска FreeBSD содержит более полный набор пакетов. Например, ниже приведено содержимое каталога x11 с установочного компакт-диска FreeBSD 6.2. # ls х11 libdrm-2.0.2.tbz xorg-documents-6.9.0.tbz xterm-220.tbz xorg-6.9.0.tbz xorg-libraries-6.9.0.tbz xorg-clients-6.9.0_3.tbz xorg-manpages-6.9.0.tbz В дереве «портов» категория x11 содержит 342 «порта». На установочном компакт-диске их всего 7, но это лишь основные компоненты X Window System. Дерево портов содержит, например, инструменты настройки сенсорной панели (touchpad) Synaptics в GNOME, которые важны для тех, у кого имеется сенсорная панель и кто использует GNOME, но не настолько ценны, чтобы занимать место на компакт-диске. Интересное отличие между деревом «портов» и деревом пакетов заключается в каталоге All (1). Этот каталог содержит все пакеты, присутствующие на компакт-диске. В других каталогах присутствуют лишь ссылки на фактические файлы в каталоге All. Чтобы узнать назначение пакета, можно выполнить поиск в каталоге /usr/ports, как мы делали это ранее в этой главе, когда искали «порты» по именам. Следует, однако, заметить, что в каталоге packages имеется файл INDEX, содержащий описания пакетов, присутствующих только на этом диске. Вы не можете воспользоваться функцией make search name=, как в случае с «портами», но можете произвести поиск непосредственно по файлу INDEX с применением утилиты grep(1). Пример поиска пакета libdrm: Для тех, кто мало знаком с утилитой grep(1), поясню, что здесь выполняется поиск строки libdrm в файле INDEX. Символ «крышки» (ˆ) указывает, что последовательность символов libdrm должна находиться в начале строки. Файл INDEX содержит всю информацию, извлекаемую командой make search, но в менее удобочитаемом формате. Символ вертикальной черты (|) служит разделителем полей: четвертое поле (1) содержит описание пакета. Пакеты на сервере FTP Зачастую пакет не представлен на CD, потому что пространство в наборе компакт-дисков Проекта FreeBSD ограниченно и не может вместить больше 17 000 пакетов. Кроме того, программное обеспечение на CD собрано для определенного «выпуска» FreeBSD. Если вы установили FreeBSD 7.1, затем обновили ее до версии 7.3 и теперь хотите установить пакеты для версии 7.3, то компакт-диск с пакетами для версии 7.1 не поможет. Кроме того, похожие проблемы будут наблюдаться после обновления до версии -stable или -current (глава 13). Если пакет отсутствует на компакт-диске, его можно установить только через FTP. Проект FreeBSD предоставляет возможность установить через FTP пакеты практически для всех 17 000 с лишним элементов коллекции «портов». Любое FTP-зеркало FreeBSD содержит пакеты для самых последних выпусков FreeBSD, а на некоторых зеркалах можно найти пакеты для старых (и даже очень старых) выпусков. О выборе наиболее подходящего вам зеркала говорилось в главе 2. Каждое официальное FTP-зеркало FreeBSD хранит пакеты по адресу: ftp://зеркало.freebsd.org/pub/freebsd/ports/архитектура/packages-версия/ Например, пакеты FreeBSD 6.2 для архитектуры i386 можно найти по адресу ftp://ftp.freebsd.org/pub/freebsd/ports/i386/packages-6.2-release и на любых других серверах в том же самом каталоге. Если заглянуть на FTP-сайт, можно увидеть все категории в каталоге /usr/ports и многие другие. В коллекции «портов» каждый «порт» помещается в какую-нибудь категорию, однако некоторые «порты» запросто могут попасть сразу в несколько категорий. Например, «порты» Perl SNMP можно классифицировать и как средства управления сетью, и как программы Perl, в зависимости от выбранной точки зрения. На серверах FTP достаточно места, чтобы хранить «порты» во всех возможных категориях, что упрощает и ускоряет их поиск. Чем быстрее вы найдете искомый «порт» и покинете зеркало, тем легче жизнь у администраторов зеркала. Так же, как и на компакт-диске, на каждом FTP-сайте имеется собственный каталог All, где хранятся фактические файлы пакетов. Однако, в отличие от CD, на FTP-сайте можно найти тысячи и тысячи пакетов! Установка пакетов Если файл пакета находится на локальном диске, установить его можно с помощью pkg_add(1): # pkg_add xorg-6.9.0.tbz Программа pkg_add(1) извлечет и проверит сжатый файл пакета и установит его в соответствии с инструкциями, находящимися в пакете. В большинстве случаев pkg_add(1) не выводит никаких сообщений и по окончании просто возвращает вас к приглашению командной строки. Иногда, например, если требуемый пакет уже установлен, программа установки выведет сообщение. Не оставляйте без внимания такие сообщения, так как в них содержатся рекомендации по обеспечению корректной работы программного обеспечения. Если программа pkg_add(1) обнаружит, что пакет имеет зависимости — другие программы, необходимые для корректной работы пакета, — она постарается установить и эти пакеты из того же источника. Набор компакт-дисков FreeBSD собран с учетом этого обстоятельства. Например, пакету xorg, показанному выше, требуется несколько необходимых ему программ, и все они присутствуют на установочных компакт-дисках. Если нужный пакет отсутствует, pkg_add сообщит об этом и прервет установку. В этом случае можно отыскать этот пакет на другом диске и установить его или просто установить недостающий пакет через FTP. Кроме того, программа pkg_add(1) поддерживает возможность автоматической установки через FTP. Ключ -r предписывает выйти в Интернет и загрузить недостающие пакеты с FTP-сервера FreeBSD. # pkg_add -r xorg Преимущество такого подхода: система автоматически найдет подходящий сервер FTP, загрузит подходящую версию пакета и все программы, от которых он зависит, а затем установит их. Обратная сторона медали: если процесс установки пакета сорвется, система уничтожит все загруженные файлы пакетов. Предотвратить уничтожение файлов пакетов в текущем каталоге можно с помощью ключа -K. Можно также вручную скачать пакеты с сайта FTP и установить их из командной строки. При таком способе зависимости не устанавливаются автоматически, но при попытке установить пакет программа pkg_add(1) выведет полный список всех необходимых, но отсутствующих пакетов. Вы можете загрузить их и установить удаленно. Этот способ наиболее полезен в тех случаях, когда вы находитесь за брандмауэром и должны приложить дополнительные усилия для загрузки файлов. В случае больших пакетов я часто использую комбинированный подход. Например, пакет OpenOffice.org имеет размер более 100 Мбайт и требует предварительной установки нескольких небольших пакетов. Я загружаю OOo с сервера FTP и затем пытаюсь установить его. Программа pkg_add(1) прерывает установку из-за отсутствия необходимых программ. Тогда я устанавливаю эти дополнительные пакеты командой pkg_add -r и снова пытаюсь установить OOo из загруженного ранее пакета. pkg_add(1) настройка окружения Поведением программы pkg_add(1) можно управлять с помощью переменных окружения. Переменные окружения определяют, куда распаковываются пакеты, откуда они загружаются, другие каталоги в системе, где могут находиться пакеты и т. д. Эти переменные окружения лучше устанавливать в сценарии входа в систему, чтобы использовать их согласованно. Ниже описаны наиболее полезные настройки среды окружения для программы pkg_add(1). PKG_TMPDIR Переменная окружения PKG_TMPDIR задает каталог, в который распаковываются временные файлы. Пакет — это архив tarball с файлами программ и дополнительными инструкциями по установке. Чтобы установить пакет, его нужно разархивировать (untar). Если в стандартных каталогах мало места, то разархивирование не будет завершено, и установка прервется. По умолчанию программа pkg_add(1) обращается к каталогу, задаваемому переменной окружения TMPDIR. Если эта переменная не определена, pkg_add ищет свободное место в таком порядке: /tmp, /var/tmp и /usr/tmp. С помощью переменной PKG_TMPDIR можно задать другой каталог, где хватает свободного места: # setenv PKG_TMPDIR /home/mwlucas/garbage PACKAGEROOT По умолчанию pkg_add -r пытается скачивать пакеты с ftp://ftp.freebsd.org. Однако, скорее всего, это далеко не лучший выбор для вас. Основное зеркало FreeBSD часто сильно перегружено и может находиться далеко от вашего компьютера. Нередко можно добиться большей производительности, выбрав более близкое и менее нагруженное зеркало. Переменная окружения PACKAGEROOT предписывает программе pkg_add(1) использовать другой сервер FTP. Присвойте переменной PACKAGEROOT протокол и имя конкретного сервера (без полного пути). Например, для загрузки пакетов с ftp5.us.freebsd.org введите: # setenv PACKAGEROOT ftp://ftp5.us.freebsd.org PACKAGESITE Это полный путь к хранилищу (репозитарию) пакетов. Применяется, если требуется использовать пакеты определенного «выпуска» или в системе есть локальное хранилище пакетов. (Установка локального хранилища пакетов рассматривается ниже в этой же главе.) Присвоим переменной PACKAGESITE значение в виде абсолютного URL, например, для устаревшей и неподдерживаемой версии FreeBSD: # setenv PACKAGESITE ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ oldreleases/i386/5.4-RELEASE/packages/All PKGDIR Этот каталог определяет место для размещения копий пакетов, загруженных командой pkg_add -Kr, и позволяет организовать хранение загруженных пакетов. # setenv PKGDIR /usr/ports/packages/All Что устанавливает пакет? Теперь, когда программа установлена, как найти ее в системе? В конце концов, здесь нет меню Пуск! Беспокоиться не о чем. Для получения полного списка установленных программ обратитесь к /var/db/pkg. Подкаталоги этого каталога соответствуют всем «портам» или пакетам, установленным в системе, и содержат списки всех программных компонентов. К примеру, теперь, после установки пакета xorg 6.9, у нас появился каталог /var/db/pkg/xorg-6.9.0. В нем находятся следующие файлы: # ls /var/db/pkg/xorg-6.9.0/ +C0MMENT +C0NTENTS +DESC +MTREE_DIRS Файл +COMMENT содержит краткое описание пакета, а файл +DESC — более подробное описание. Файл +MTREE_DIRS содержит описание пакета в формате mtree(1). Особый интерес представляет файл +CONTENTS, в котором перечислены все файлы, установленные пакетом, все пакеты зависимостей и все инструкции по удалению пакета. (Теперь, когда пакет установлен, инструкции по установке больше не нужны, но инструкции по удалению могут пригодиться, если вы вдруг решите удалить пакет.) Первая строка — это номер версии формата (1), в котором хранится запись о пакете. Если FreeBSD изменит формат хранения пакетов, инструменты управления пакетами смогут определить по этому номеру, как обслуживать пакет. Далее следует имя пакета (2) и затем определение ORIGIN (3), которое указывает — к какой категории относится пакет и в каком каталоге его можно отыскать. Вслед за меткой cwd (4) указано место, куда нужно установить файлы пакета. Все пути к файлам указываются относительно этого каталога. Комментарий pkgdep (5) указывает дополнительные пакеты, от которых зависит данный пакет. В данном случае — это пакет expat-2. Здесь также указывается каталог (6) в дереве «портов», где этот дополнительный пакет находится. Однако пакет xorg является чем-то вроде «обманки» — при установке этого пакета не устанавливаются никакие файлы! В операционной системе FreeBSD пакет xorg присутствует только для описания зависимостей, необходимых для X Window System. Единственная запись, которую можно обнаружить в файле +CONTENTS, это ссылка на другие пакеты. Давайте рассмотрим содержимое файла +CONTENTS другого пакета, который действительно включает набор файлов. Вот содержимое пакета /usr/ports/archivers/zip: Здесь мы снова видим рабочий каталог (1), но за ним следует собственно файл (2). Объединив имя каталога и имя файла, можно определить, что при установке пакета zip был установлен файл /usr/local/man/man1/zip.1.gz. Это страница руководства, с которой стоит ознакомиться. Далее следует комментарий, содержащий контрольную сумму MD5 (3) этого файла и инструкция (4) по удалению файла на случай, если потребуется удалить пакет. Однако этот пакет содержит не только страницу руководства, в состав пакета входит также двоичный файл (5). Вы уже наверняка поняли, что утилита zip(1) была установлена в виде файла /usr/local/bin/zip. При просмотре файла +CONTENTS можно определить имена и местоположение всех установленных файлов. Основную информацию о файлах и каталогах можно получить с помощью программы pkg_info(1), но часто гораздо проще отыскать необходимую информацию самостоятельно. Похожие статьи: Обновление установленных «портов» Если дерево «портов» обновляется с помощью программы csup, то любое программное обеспечение, установленное из «портов», будет иметь самый последний номер… Пакеты и файлы для бездисковых систем От операционной системы без дополнительного программного обеспечения мало проку. Рано или поздно вам придется устанавливать пакеты на бездисковые системы. Кроме… Применение «портов» Сборка программного обеспечения из «портов» отнимает больше времени по сравнению с применением пакетов. Кроме того, системе «портов» необходимо устойчивое соединение… Система «портов» и пакетов «Порты» (ports) - это команды для компиляции программ во FreeBSD, а пакеты - это предварительно скомпилированные «порты». Пакеты устанавливаются быстрее… Поиск программного обеспечения Некоторые категории содержат сотни «портов». Как же найти в них что-либо? Файл /usr/ports/INDEX-7 содержит список всех «портов» в алфавитном порядке.…
Все пакеты, за исключением нескольких особых случаев, можно скачать с ftp. freebsd.org. Поскольку внутри пакеджей хранятся.
# ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230-230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230-230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit # pkg_add lsof-4.56.4.tgz Если у вас нет источника пакетов, например, такого как набор CD-ROM дисков с FreeBSD, то добавьте опцию -r для pkg_add(1). Утилита автоматически определит правильный формат объектных файлов и релиз, а затем загрузит и установит пакет с сервера FTP без какого-либо дополнительного взаимодействия с пользователем. Для вывода перечня установленных пакетов и их описаний может быть задействована pkg_info(1). # pkg_info colordiff-1.0.13 A tool to colorize diff output docbook-1.2 Meta-port for the different versions of the DocBook DTD ... Утилита pkg_version(1) выводит отчёт о версиях всех установленных пакетов и сравнивает их версии с текущими версиями соответствующих приложений, доступных из локального дерева портов. # pkg_version colordiff = docbook = ... Символы во второй колонке указывают сравнительную разницу в возрасте установленной версии и версии, находящейся в локальном дереве портов.