Эффективная работа с портами в FreeBSD::Журнал СА 1.2004
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Книжная полка  

Защиты много не бывает

Среди книжных новинок издательства «БХВ» есть несколько изданий, посвященных методам социальной инженерии

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6252
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6955
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4244
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3021
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3815
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3833
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6328
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3178
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3472
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7288
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10655
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12375
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14012
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9137
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7090
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5398
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4627
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3436
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3167
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3411
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3034
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Эффективная работа с портами в FreeBSD

Архив номеров / 2004 / Выпуск №1 (14) / Эффективная работа с портами в FreeBSD

Рубрика: Администрирование /  Продукты и решения

 ВЛАДИМИР ОСИНЦЕВ

Эффективная работа с портами в FreeBSD

Статья полностью посвящена портам в FreeBSD, хотя большинство примеров актуальны и для других *BSD-систем.

В рамках данной статьи «порт» происходит от слова «портировать» и обозначает скрипт, с помощью которого можно просто установить программу в систему из исходников или удалить ее из системы. Давным-давно в FreeBSD образовалась так называемая «коллекция портов», которая на данный момент насчитывает более 9000 программ.

Система портов конкурирует с прекомпилированными rpm- и deb-пакетами, являясь более удобным средством для установки и удаления программ, обновления как отдельных, так и всех компонентов системы (стоит отметить, что порты не предоставляют альтернативу и являются ОС-зависимыми). Все основные системы BSD-семейства (NetBSD, OpenBSD, ну и, конечно, FreeBSD) оснащены своими коллекциями портов. Аналогом портов обладают все «source-based» дистрибутивы GNU/Linux, самый известный из которых – Gentoo (http://gentoo.org), со своей системой портежей («portage»).

С помощью портов программы устанавливаются из исходных текстов, т.е. закачиваются исходники, распаковываются, настраиваются, компилируются и устанавливаются в систему, всю работу на себя берет порт. Но также система портов умеет работать и с прекомпилированными пакетами с расширением tbz, что представляет собой tar.bz2 архив с дополнительной информацией в конце файла.

В рамках статьи и порт, и пакадж, и пакет обозначают одно и то же. Сегодня мы не будем рассматривать обновление дерева портов с помощью утилиты CVSup, читайте соответствующую главу «FreeBSD Handbook».

Поиск по коллекции портов

В коллекции портов находится свыше 9000 программ, поэтому эффективный поиск очень важен. Система портов предоставляет достаточно обширные средства поиска, самое простое и популярное из них:

# cd /usr/ports

# make search name=opera

Port:      opera-7.21.20031013
Path:      /usr/ports/www/opera
Info:      A blazingly fast, full-featured, standards-compliant browser
Maint:      avleeuwen@piwebs.com
Index:      www
B-deps:      ...
R-deps:      ...
...

Здесь был использован поиск по названию порта (был выведен список портов, в названии которых встречается слово «opera»), как альтернативу, можно использовать поиск по ключевому слову:

# make search key=dvd

Port:   dvdrip-0.48.8
Path:   /usr/ports/multimedia/dvdrip
Info:   This is dvd::rip, a Perl Gtk+ based dvd-ripper
Maint:  michaelnottebrock@gmx.net
Index:  multimedia
B-deps: ...
R-deps: ...     
...

Главное отличие «portsearch» от «make search» – это поддержка логических выражений, как в Perl, к тому же возможность поиска не только «в названии» или «по ключевому слову».

Как пример рассмотрим:

# ./portsearch -n "^xmms" -p "(audio|multimedia)" -i "plugin"

Эта команда выведет список портов, название которых начинается с xmms (выражение ^xmms), из каталогов /usr/ports/audio или /usr/ports/multimedia (выражение (audio|multimedia)), в описании которых есть слово «pligin». Описание других ключей смотрите в файле README.portsearch из каталога программы.

Как вариант, утилита «portsearch» может производить поиск по дереву портов, которое находится на удаленной машине, например, поиск по самой последней версии портов может выглядеть так:

# ./portsearch -n "^xmms" -f ftp://ftp.freebsd.org/pub/FreeBSD/branches/-current/ports/INDEX

Информация о коллекции портов индексируется в файле /usr/ports/INDEX, чтобы поиск был максимально быстрым, но при изменении в дереве портов файл INDEX, который используют, и «make search», и «port-search» остается прежним. Для повторного индексирования портов:

# cd /usr/ports && make index

Просмотр зависимостей

Один из способов просмотра зависимостей того или иного порта является:

# cd /usr/ports/www/opera

# make pretty-print-build-depends-list 

This port requires package(s) "XFree86-libraries-4.3.0_5 compat4x-i386-5.0.20030328
expat-1.95.6_1 fontconfig-2.2.0 freetype2-2.1.4_1 imake-4.3.0 perl-5.6.1_13
pkgconfig-0.15.0 png-1.2.5_2" to build.

Мы получили список необходимых пакетов для сборки порта веб-браузера «Opera». Как вариант можно использовать «make pretty-print-run-depends-list» для просмотра Run-зависимостей (пакеты, необходимые для запуска порта).

Проверка зависимостей до удаления

До того как удалить пакет из системы, неплохо посмотреть список пакетов, которые зависят от него, чтобы ничего не сломать. Например, по команде «pkg_info | less» вы увидите, что в системе установлен пакет ORBit2-2.6.2. Название пакета ничего не говорит, по-моему, вы его ни разу не использовали, и хорошо было бы удалить его, но сначала посмотрим, какие пакеты зависят от него.

# pkg_info -R ORBit2-2.6.2

Information for ORBit2-2.6.2:
Required by:
libgnome-2.2.0.1
nautilus2-2.2.4
gnome2-2.2.1_1
...

Как видим, удалять этот пакет было плохой идеей, т.к. от него зависят необходимые нам программы и библиотеки. Нарушение зависимостей в лучшем случае приведет к неработоспособности программы. Конечно, при попытке удаления командой «pkg_delete ORBit2-2.6.2» мы увидим то же самое сообщение о зависимых от него пакетах и ORBit2 не будет удален, но лучше все равно делать это с помощью «pkg_info».

Просмотр установленных пакетов

«pkg_info» – утилита для просмотра установленных пакетов. Настоятельно рекомендую прочитать man-страницу, т.к. сегодня мы рассмотрим лишь пару возможностей.

При использовании ключа «-a» будет отображена информация о всех установленных пакетах, как альтернативу вы можете использовать название пакета. Например, команда «pkg_info -ac» выдаст короткие комментарии (ключ «-c») ко всем установленным пакетам, в свою очередь «pkg_info -c sudo-1.6.7.4» выдаст комментарий к пакету «sudo». Если вы хотите прочитать полное описание вместо коротких комментариев, используйте ключ «-d» вместо «-c».

Если вам, как и мне, не очень нравится помнить версию пакета, то с помощью ключа «-x» можно избавиться от этой необходимости.

# pkg_info -xc sudo

Information for sudo-1.6.7.4:

Comment:
Allow others to run commands as root

Эта команда равнозначна предыдущей, но она выведет информацию о всех установленных пакетах, чье название начинается с sudo (в нашем случае это единственный пакет).

Просмотр подробной информации о пакетах

После инсталляции порта (особенно в автономном режиме) неплохо посмотреть, были или нет post-install-сообщения, для этого используется ключ «-D». Например, я поcтавил на ночь обновляться систему, среди всех портов был www/opera (одноименный веб-браузер), а уже утром я смог посмотреть какие были сообщения от всех портов и от www/opera в частности, для этого «pkg_info -xD opera», теперь я знаю, что при апгрейде веб-браузера от 6.x до 7.x нужно сделать backup каталога ~/.opera, иначе вся информация (история, закладки, почта и прочее) могла быть утеряна.

Еще один полезный ключ «-L», позволяет просмотреть список установленных файлов из данного порта.

Например:

# pkg_info -xL opera

Information for opera-7.21.20031013:
Files:
/usr/X11R6/bin/opera
/usr/X11R6/share/doc/opera/LICENSE
/usr/X11R6/share/doc/opera/help
/usr/X11R6/share/opera/bin/m2.so
...

Хороший способ узнать, что и куда устанавливалось.

Навигация по коллекции портов

При обновлении дерева портов файлы README.html, которые генерируются при помощи информации из самого порта, остаются старыми и могут отражать устаревшую информацию: сайт программы, описание, Run и Build зависимости. Для обновления README-файлов сделайте:

# сd /usr/ports

# make readmes

Далее вы можете просматривать актуальную информацию при помощи вашего любимого браузера. Ту же информацию вы можете найти на http://freebsd.org/ports.

Статус установленных пакетов

Один из способов посмотреть список установленных пакетов – это утилита «pkg_version».

# pkg_version | less

gnome2 =
nvidia-driver <
opera =
vim <
...

Мы получили список всех установленных пакетов, который состоит из названия и одного символа, из них основные:

  • «=» – установлена последняя версия пакета;
  • «<« – доступна для установки новая версия пакета, рекомендую обновиться;
  • «>» – когда установленная версия старше, чем в коллекции портов. Иногда бывает, когда, например, устанавливаются самодельные порты.

Теперь попробуем просмотреть список пакетов, которые нужно обновить:

# pkg_version -l "<" 

nvidia-driver <
vim <     
...

Обычно, «pkg_version» используют после обновления локальной коллекции портов, например, с помощью CVSup (об этом читайте в FreeBSD Handbook). Но можно проверить статус установленных пакетов относительно «свежей» коллекции портов:

# pkg_version -v ftp://ftp.freebsd.org/pub/FreeBSD/branches/-current/ports/INDEX | less

При необходимости можно использовать ключ -l (см. выше) для просмотра только тех пакетов, которые уже устарели.

Проверка целостности установленных пакетов

Еще одна интересная утилита «consistency-check» позволяет проверить целостность установленных в систему пакетов. При запуске:

# ./consistency-check

Утилита покажет вам, из каких пакетов какие файлы были удалены, изменены и файлы, которые не принадлежат не одному из портов. Данную утилиту полезно использовать не только для общего мониторинга системы, но и как security-сканер, т.к. вы всегда можете посмотреть, у каких файлов md5checksum отличается от оригинальных.

Освобождение свободного места на диске

Когда порт устанавливается в систему на локальный компьютер, в директорию /usr/ports/distfiles закачиваются необходимые исходные тексты, после чего порт компилируется и инсталлируется.

При обновлении порта уже закачиваются новые версии исходников (старые остаются). При удалении порта исходные тексты также остаются в distfiles/. Через какое-то время мы получаем, что distfiles/ содержит очень мало «нужного».

Конечно, вместо «make install clean» можно использовать «make install clean distclean», т.е. после загрузки, сборки и установки исходники будут удалены, но необходимо, чтобы в distfiles/ сохранялись только свежие исходники – это позволяет сэкономить трафик и время при медленном канале, а значит, и ваши деньги.

Для очистки диска нам понадобится набор утилит «portupgrade», который нужно обязательно иметь, если вы так или иначе собираетесь использовать порты. Если порт не установлен, тогда:

# cd /usr/ports/sysutils/portupgrade

# make install clean

Теперь можно начать с удаления каталогов work/, в которых находятся уже распакованные исходные тексты, которые мы забыли удалить при помощи цели «clean», которую мы добавляем к «make».

# portsclean –C

Cleaning out /usr/ports/*/*/work...
Delete /usr/ports/news/gnus-emacs20/work
...

Утилита имеет еще одну возможность, которая нас интересует больше всего: удаление неактуальных файлов из distfiles/

# portsclean –DD

Detecting unreferenced distfiles...
Delete /usr/ports/distfiles/KDE/qt-x11-free-3.1.2.tar.bz2
...

Эту же операцию можно проделать и с помощью встроенной утилиты «distclean»:

# ./distclean

Она проделает то же самое: сверит md5checksum исходных текстов из установленных портов и удалит те, которые не соответствуют. Заметьте, что будут удалены, например, еще недокачанные файлы, потому что md5checksum отличается от полного файла.

Настройка параметров коллекции портов

Когда вы установили пакет «portupgarde» в системе, кроме всего, в каталоге /usr/local/etc были созданы файлы pkgtools.conf и pkgtools.conf.sample. Sample-файл оставьте как есть, он имеет хорошие комментарии и послужит хорошим примером.

Файл pkgtools.conf содержит параметры переменных окружения для утилит из пакета «portupgrade». Например, по умолчанию директория для хранения временных файлов является /var/tmp. На некоторых системах, где под раздел /var отведено недостаточно места, могут возникнуть проблемы. Для их решения достаточно сделать так, чтобы временные файлы хранились не в /var/tmp, а к примеру на /usr/tmp. Для этого в pkgtools.conf достаточно изменить строку:

#   ENV["PKG_TMPDIR"] ||= "/var/tmp"

на

ENV["PKG_TMPDIR"] ||= "/usr/tmp"

Обратите внимание на символ «#»: вы должны раскомментировать строку, иначе значение переменной окружения не вступит в силу.

Другая интересная часть файла pkgtools.conf – это «IGNORE_CATEGORIES». В этом массиве, который по умолчанию пуст, содержатся названия игнорируемых категорий (директории в /usr/ports), обычно игнорируются языковые категории. Лично у меня игнорируются следующие категории: chinese, french, german, hebrew, japanese, korean, ukrainian, vietnamese, astro, biology, palm, portuguese, hungarian, games.

Заполните массив «IGNORE_CATEGORIES», как это сделано в комментариях файла pkgtools.conf, после чего обязательно выполните команду:

# portsdb -Ufu

Которая обновит информацию о коллекции портов. В итоге поиск в игнорируемых каталогах производиться не будет и порты из этих категорий будут удалены из Run и Build зависимостей других портов.

Настройка параметров сборки порта

В файле pkgtools.conf (см. выше) есть возможность задать массив «MAKE_ARGS», в котором хранятся параметры сборки портов. Чтобы понять, о чем идет речь, нужно вспомнить, что некоторые порты мы собираем с указанием параметров, например, «ITH_GUI=yes» при сборке порта multimedia/mplayer, т.е.:

# cd /usr/ports/multimedia/mplayer

# make WITH_GUI=yes WITH_LANG=ru install clean

Этот массив служит для того, чтобы не задавать параметры каждый раз при сборке порта, т.е. при команде «portupgrade» пакеты будут обновлены с заданными параметрами.

По умолчанию в файле pkgtools.conf массив «MAKE_ARGS» пуст, исправьте его, чтобы он выглядел, например, так:

MAKE_ARGS = {

"multimedia/mplayer-*" => "WITH_GUI=yes WITH_LANG=ru",

"multimedia/xmms-*" => "WITHOUT_MIKMOD=yes",

}

Запись имеет следующий синтаксис: название порта пишется вместе с названием категории, заключается в одиночные кавычки и должно оканчиваться на символы «-*». Затем идет «=>», после чего список параметров, который также заключается в одиночные кавычки. Как видите, элементы массива записываются через запятую.

Заключение

Вот, наверное, и все. Как видите, порты – это очень мощная и удобная система, которой нужно просто уметь пользоваться, а уметь ею пользоваться просто, как вы сегодня узнали.

Ссылки:

  1. http://freebsd.org
  2. http://freebsd.org/ports
  3. http://freshports.org
  4. http://freshmeat.net
  5. http://sourceforge.net
  6. http://freebsd.org.ru

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru