Установка программ в freebsd

Содержание

В сети есть много информации про использование портов и пакеджей FreeBSD. К сожалению, часто эта информация оказывается устаревшей. Иногда бывает, что одна статья противоречит другой. Что касается хэндбука, то, на момент написания этих строк, в нем не было ни слова про утилиту pkg_upgrade, а информация об установке приложений из портов и их обновлении находилась на расстоянии двадцати глав. В общем, мне такая ситуация не нравится, так что я решил осветить вопрос в своем блоге.

1. Из чего выбираем?

Первое, что нужно сделать относительно установки софта во FreeBSD — это забыть про «традиционный unix-метод», заключающийся в скачивании архива с исходниками, его распаковке и выполнении команд ./configure, make и make install. Может, пару лет назад в каком-нибудь Slackware еще и было принято так делать, но даже в этом дистрибутиве уже появилась система портов.

Как я уже отмечал ранее, FreeBSD предоставляет два способа установки и обновления программ — из бинарных пакетов (packages) и исходных кодов (портов, ports). У каждого подхода есть свои преимущества. С некоторой осторожностью можно использовать их совместно. Для начала рассмотрим два крайних случая — использование только пакеджей или только портов.

Установка FreeBSD

2. Использование пакеджей

Важно! Эта часть статьи успела потерять актуальность, во всяком случае для последних версий FreeBSD. Подробности в заметке Управление пакетами во FreeBSD при помощи утилиты pkg. Часть про порты, описанная ниже в пункте 3 по состоянию на 2016-03-15 все еще актуальна.

Бинарные пакеты представляют собой файлы определенного формата и дерево каталогов определенной структуры, упакованных в один архив. Все пакеты, за исключением нескольких особых случаев, можно скачать с ftp.freebsd.org. Поскольку внутри пакеджей хранятся бинарные исполняемые файлы, то для каждой архитектуры процессора и версии операционной системы нужны свои пакеджи. Какие пакеты мы хотим использовать, определяется переменной окружения $PACKAGESITE. Вот пример для FreeBSD 8 и архитектуры процессора i386:

# это нужно прописать в /root/.cshrc
setenv PACKAGESITE
http: // ftp.freebsd.org / pub / FreeBSD / ports / i386 / packages- 8 -stable / Latest /

Как и в случае с версиями операционной системы, пакеджи бывают версий Release, Stable и Current. Stable — оптимальный вариант в плане частоты обновления и стабильности, так что с Release и Current советую вообще не связываться.

Если вы читали мою заметку про быструю установку FreeBSD, то можете помнить, как для установки пакеджей использовалась утилита pkg_add. По умолчанию она ищет пакеджи в каталоге, указанном в переменной окружения $PKG_PATH. Изменить это поведение можно с помощью ключа -r:

pkg_add -r xorg

Программа скачает и установит Xorg, а также все программы и библиотеки, от которых он зависит. Собственно, главная фишка системы пакеджей и портов заключается в автоматическом контроле зависимостей. Не нужно искать по всей сети исходники программ/библиотек, собирать их, а затем выяснить, что тебе нужно было собрать другие версии. Одна команда — и система сделает все за тебя.

Установка приложений во FreeBSD

Современные дистрибутивы Linux и *BSD используют только такой подход. Вот почему нужно забыть «./configure; make; make install», как страшный сон.

Посмотреть список всех установленных программ можно командой pkg_info. Как правило, список получается довольно объемный, так что используйте grep и less.

Для удаления пакеджей предназначена команда pkg_delete. Использовать ее без ключей неудобно, потому что в этом случае нужно указать полное название пакета. Например, «pkg_delete xorg-fonts-7.5» будет работать, а «pkg_delete xorg-fonts» выведет ошибку, дескать пакет не установлен. Чтобы изменить такое поведение, используйте ключи -ix:

pkg_delete -ix xorg

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

Теперь допустим, что нам хочется почистить систему от ненужных пакетов. Ненужный пакет — это тот, который мы не используем и от которого не зависят другие пакеты. Последнее можно проверить следующим образом:

pkg_info -Ra | less

Проблема в том, что вывод у команды довольно объёмный и искать в нем пакеты, которые можно безопасно удалить, довольно неприятно. Упростить себе работу можно, используя Perl и регулярные выражения:

Чтобы постоянно не вводить весь этот ужас, советую прописать алиас («pkg_leafs» ?) в /root/.cshrc сохранить команду в .sh-скрипт (почему не csh?) и затем использовать этот скрипт вместе с grep.

Наконец, самое интересное — обновление пакетов. Лучше всего для этой цели подходит pkg_upgrade, входящий в пакет bsdadminscripts. Не удивляйтесь, что система не имеет средств для обновления программ «из коробки». Какой-нибудь веб-сервер обычно настраивается один раз, после чего работает 5-10 лет, пока железо не развалится. Если за это время в Apache не найдут критическую уязвимость (а шансы этого события не так уж велики), то никому в голову не придет обновляться.

Перед обновлением нелишним будет узнать, что собственно мы собираемся обновлять:

pkg_upgrade -an

Того же эффекта можно добиться командой:

pkg_version -v / var / db / uma / FTPINDEX | grep needs

По умолчанию pkg_version использует индекс, расположенный в дереве портов, а совсем не факт, что это дерево у нас имеется. Поэтому путь к файлу указывается явно. Сам файл FTPINDEX обновляется либо pkg_upgrade’ом, как это показано выше, либо утилитой uma.

Обновление бинарных пакетов обычно происходит быстро, так что можно сразу обновить весь устаревший софт:

pkg_upgrade -a

Если же вам нужно обновить только одну или несколько программ, не забывайте, что вы можете нарушить зависимости. Избежать такой неприятности можно с помощью ключей -R (обновить то, что зависит от пакета) и -r (обновить то, от чего зависит пакет):

pkg_upgrade -rR xorg

И последнее — это поиск пакетов. Допустим, вам нужен какой-то пакет, но вы не знаете, как он называется. Есть два пути. Во-первых, можно воспользоваться файлом FTPINDEX:

cat / var / db / uma / FTPINDEX | cut -d ‘|’ -f 1 | grep -i CodeBlocks

Во-вторых, можно воспользоваться веб-поиском на freebsd.org.

3. Использование портов

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

Платить за все это приходится в первую очередь временем установки программ. Например, даже на очень мощных компьютерах компиляция OpenOffice занимает около суток и требует сколько-то там гигабайт оперативной памяти и места на диске. Сколько точно — не помню. Для сравнения, установка OpenOffice с помощью пакетов занимает несколько минут. Однако это — крайний случай.

Мелкие утилиты обычно компилируются за минуты, на софт покрупнее может уходить час или два.

Указать аргументы компилятора и тип процессора можно в файле /etc/make.conf:

CPUTYPE=core2 # тип процессора
CFLAGS?=-O3 -pipe # аргументы компилятора, см ‘man gcc’

В принципе, можно этот файл и не трогать. Но раз мы решили заюзать порты, почему бы не воспользоваться всеми их плюсами? Если вы не уверены на счет того, какой типа процессора указать, загляните в /usr/share/examples/etc/make.conf. Там перечислены все поддерживаемые типы процессоров. У меня содержимое оказалось следующим:

# Currently the following CPU types are recognized:
# Intel x86 architecture:
# (AMD CPUs) opteron athlon64 athlon-mp athlon-xp athlon-4
# athlon-tbird athlon k8 k6-3 k6-2 k6 k5
# (Intel CPUs) core2 core nocona pentium4m pentium4 prescott
# pentium3m pentium3 pentium-m pentium2
# pentiumpro pentium-mmx pentium i486 i386
# (Via CPUs) c3 c3-2
# Alpha/AXP architecture: ev67 ev6 pca56 ev56 ev5 ev45 ev4
# AMD64 architecture: opteron, athlon64, nocona, prescott, core2
# Intel ia64 architecture: itanium2, itanium

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

Теперь — об аргументах компилятора (CFLAGS). Чем выше уровень оптимизации, тем медленнее собираются программы, но и тем быстрее они будут работать. Например, флаг -O0 вообще отключает оптимизацию (используется gcc по умолчанию), а -O3 включает все доступные способы оптимизации. Еще есть флаг -Os, предназначенный для оптимизации размера программы.

Читайте также:
Программа клиент водителя отзывы

Используйте его, если у вас на диске ну очень мало места. Вообще, не стоит слишком беспокоиться на счет того, что программа будет тормозить, если скомпилировать ее с ключом -O2 вместо -O3. К тому же, есть шанс (небольшой, правда) что какие-то программы не соберутся с ключом -O3.

Еще хочу отметить, что ключи, которые вы зададите в CFLAGS, влияют только на порты. Это, в частности, означает, что не нужно беспокоиться, что эксперименты с make.conf приведут к тому, что вы не сможете обновить ядро системы из исходных кодов. Так, информация к сведению.

Дерево портов хранится в каталоге /usr/ports/. Если у вас этот каталог пустой, порты можно скачать с помощью программы portsnap:

portsnap fetch extract

Примечание: В старых мануалах рекомендуется использовать утилиту cvsup, но это устаревший метод. Забудьте про cvsup так же, как и про «./configure; make; make install»!

Если дерево портов уже есть, не забывайте время от времени его обновлять:

portsnap fetch update

Чтобы установить программу из портов, сначала нужно найти соответствующей ей каталог. Имена каталогов образуются следующим образом: /usr/ports/группа/программа/. Например, в каталоге /usr/ports/ftp/ можно найти все программы, имеющие отношение к протоколу FTP, а упомянутый ранее bsdadminscripts находятся в /usr/ports/sysutils/bsdadminscripts/.

Есть несколько способов найти нужную программу, кроме упомянутого поиска на freebsd.org. Например:

# сначала переходим в каталог с портами
cd / usr / ports
# ищем порт по названию
make search name = firefox
# ищем по ключевому слову
make search key =browser
# быстрый поиск
echo / usr / ports /*/* firefox *

Перейдя в нужный каталог, достаточно сказать

make install clean

Система сама скачает и распакует исходники программы, а также всех программ и библиотек, от которых она зависит, затем соберет и установит их, после чего удалит весь мусор. А теперь представьте, что когда-то все это нужно было делать руками!

Некоторые порты имеют дополнительные настройки, которые вас попросят уточнить в процессе установки. Если вы не понимаете, что от вас хотят, соглашайтесь на настройки по умолчанию. Часто во время установки нужного вам порта также устанавливаются его зависимости. Некоторые зависимости интересуются, с какими настройками вы хотели бы их собрать.

В результате приходится следить за всем процессом и время от времени отвечать на вопросы. Это не совсем удобно.

Большинство портов понимают команду:

make config-recursive

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

make -DBATCH install clean

Самое интересное в портах то, что после компиляции все приложения собираются в пакеты, после чего происходит установка этих самых пакетов. Другими словами, всем хозяйством, установленным из портов, можно управлять теми же средствами, что мы использовались при работы с пакетами — pkg_info, pkg_delete и так далее!

Примечание: Собрать бинарный пакет из портов можно командой «make package». Для создания пакетов из уже установленных приложений используйте команду pkg_create. Например, команда «pkg_create -R -b xorg-fonts-7.5» создаст бинарные пакеты xorg-fonts и всех его зависимостей, а командной «pkg_create -vb ‘*’» можно сделать резервную копию всех установленных приложений. Подробности — в man-pages.

Следующим по интересности, как и следовало ожидать, идет обновление. Есть две утилиты, предназначенные для обновления программ из портов — portupgrade и portmaster. Мне portmaster кажется во всех отношениях лучше. Во-первых, для работы ему не нужно ничего, кроме самого дерева портов.

В отличие от него portupgrade работает с собственной базой, которая частенько портится, в связи с чем ее приходится перестраивать. Во-вторых, portmaster, в отличие от portupgrade, не тянет за собой Ruby. Поскольку программ, использующих Ruby, довольно мало, не хочется тратить время на его сборку ради одного только portupgrade. Мы ведь помним, что каждый лишний порт — это лишнее время на его компиляцию при установке и обновлении?

В общем, я буду считать, что вы используете portmaster (/usr/ports/ports-mgmt/portmaster/). Однако если это не так, не переживайте — portupgrade имеет точно такой же интерфейс, что и portmaster. То есть, при одинаковых аргументах эти программы (как правило) делают одно и то же.

Итак, мы обновили порты с помощью portsnap и узнали, какие программы состарились, с помощью уже знакомого нам pkg_version. Кстати, эта утилита не является частью bsdadminscripts, а идет вместе с системой. Можно запускать portmaster? Нет, не можно!

Первое, что нужно сделать перед обновлением приложений из портов — это внимательно прочитать файл /usr/ports/UPDATING и выполнить все касающиеся нас инструкции. Не сомневайтесь, вы обязательно забудете это сделать, так что лучше сразу подпишитесь на ленту со всеми изменениями в этом файле. Если вы редко заглядываете в свою RSS-читалку, воспользуйтесь сервисом rss2email.ru.

Обновить программу портмастером очень просто (кстати, с его же помощью можно производить установку):

# ключ -d означает «удалять старые архивы с исходниками»
# если не указать, портмастер будет доставать вас
# множеством вопросов по этому поводу
portmaster -d vim

Сложности начинаются, когда вспоминаешь про зависимости. Самое правильное решение заключается в обновлении всех портов, зависящих от данного (приложения, от которых зависит порт, обновляются всегда):

portmaster -rd vim

Еще можно обновить сразу весть устаревший софт:

portmaster -da

Проблема в том, что компиляция исходников обычно занимает много времени. Есть два способа ускорить обновление. Первый — не удалять старые версии библиотек, тогда можно не обновлять зависимые приложения:

portmaster -wd vim

Второй способ заключается в совместном использовании портов и пакеджей, но об этом чуть ниже. Прежде, чем перейти к этой теме, хочу обратить ваше внимание на ключ -L, поддерживаемый portmaster’ом. Он позволяет получить список приложений, которые можно безопасно удалить, не нарушив зависимости. Лучше использовать его, чем связку из алиасов и регулярных выражений, упомянутую выше.

4. Совместное использование портов и пакетов

Пакеджи и порты можно использовать совместно. Если большую часть времени вы используете пакеджи, то можете время от времени устанавливать что-то из портов, потому что в портах софт всегда свежее, чем в бинарных пакетах. Главное — обновить дерево портов перед установкой. Впрочем, в этом случае с большой вероятностью могут произойти Bad Things™, в связи с чем новичкам лучше его избегать.

Если большую часть времени вы пользуетесь портами, то можете сэкономить на времени установки и обновлении приложений. Для этого нужно использовать portmaster с ключом -P:

# обновить vim, по возможности используя пакеты
portmaster -rdP vim

Если portmaster сможет найти на $PACKAGESITE пакет той же версии, что и версия порта, приложение будет установлено из пакета, а не из портов. Еще portmaster имеет ключ -PP, означающий «устанавливать приложения только из пакетов, а если достаточно свежего пакета нет, прервать работу». Правда, пользы от этого ключа мало.

Еще один вариант — создать собственный веб- или ftp-сервер с пакетами, где они будут обновляться чаще, чем на официальном сервере. То есть на сервере пакеты будут собираться из портов, после чего раздаваться клиентам. Правда, это имеет смысл только в том случае, если у вас большой компьютерный парк, на котором нужно поддерживать свежие версии ПО.

Возможно, это будет не сервер, а домашний компьютер, на котором вы будете компилировать пакеты для дальнейшей установки на свой ноутбук и рабочий компьютер. Но это при условии, что на всех трех машинах используется FreeBSD одной ветки и используются процессоры одной архитектуры (i386 или amd64).

Пожалуй, это все, что касается совместного использования портов и пакетов. Основная идея — не устанавливать более старые версии библиотек и приложений, чем есть на данный момент.

5. И снова эта проблема выбора…

В идеальном мире мы бы за считанные секунды устанавливали свежайший софт, оптимизированный под данный конкретный компьютер. Но, поскольку наш мир не идеальный, приходится чем-то жертвовать.

Преимущества пакетов — простота использования и быстрая установка. За это приходится платить малой гибкостью и редкими обновлениями. Порты позволяют установить самый свежий софт, настроенный для конкретной ситуации и оптимизированный под конкретную машину. Увы, установка из исходников занимает время, а также требует дополнительного места на диске и средств разработки, необходимых для компиляции приложений.

Используя связку порты+пакеты, можно немного компенсировать недостатки каждого из методов. Но комбинированный подход обладает как преимуществами двух методов, так и суммарными недостатками. Оптимальным вариантом было бы завести сервер, предназначенный для сборки пакетов под наши нужды. Но в этом случае придется выделить лишний сервер или раскошелиться на VDS. Впрочем, если у вас есть машина с десятком виртуалок, считайте, что никаких проблем у вас нет.

Совет стандартный. Используйте то, что больше подходит для вашей задачи. Для себя я решил, что на ноутбуке лучше использовать пакеджи, а на сервере — порты. Вообще-то, учитывая мощность современных компьютеров, можно смело обходиться и одними пакетами.

Читайте также:
Как посмотреть все установленные программы на ПК

Дополнение: Тут товарищ visokos посоветовал утилиту pkg_cleanup. Как несложно догадаться по названию, предназначена она для удаления ненужных пакетов:

Утилита pkg_cleanup

Самое приятное в ней, что после удаления пакетов предлагается сделать повторный поиск. После него будет выведен список только тех пакетов, которые стали ненужными в результате предыдущей итерации. Очень удобно!

Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.

Источник: eax.me

FreeBSD установка, обновление и работа с портами

Во FreeBSD существует строгое разделение ПО на системное и пользовательское. Пользовательское делится на «установленное из бинарных пакетов» и «из портов» (исходных кодов). Всё базовое (системное) программное обеспечение для выполнения загрузки и аварийно-восстановительных работ — т.е. средства однопользовательского режима, устанавливается в каталоги:

/boot /bin /etc /sbin /lib /root

, программы, установленные пользователем из бинарных пакетов, а также пользовательские домашние каталоги, находятся в поддриекториях директории /usr :

/usr/bin /usr/etc /usr/sbin /usr/lib /usr/home/user

В корне, для удобства, на каталог /usr/home сделана символическая ссылка.

Программы, которые пользователь установил из исходников 3-ей стороны или портов устанавливаются в /usr/local/ :

/usr/local/bin /usr/local/etc /usr/local/sbin /usr/local/lib

Скрипты инициализации демонов в составе ПО, установленного из портов, располагаются в /usr/local/etc/rc.d/

Способы установки ПО

Во FreeBSD, также как и в большинстве *nix-систем, возможны несколько вариантов установки программного обеспечения. Первые доступны в большинстве *nix-систем, а третий вариант — технология «портов», родной для FreeBSD (Linux-дистрибутив Gentoo давно взял на вооружение эту технологию). Краткий обзор:

  • «из бинарных пакетов» — готовое, предварительно скомпилированное ПО, настроенное для работы во FreeBSD. «Из пакетов» можно быстро поставить нужную программу, не прибегая к долгому процессу компиляции. Менеджер пакетов находит зависимости, скачивает нобходимые пакеты, распаковывает и настраивает их. Бинарные пакеты в репозиториях обновляются только с выходом нового релиза, когда как установка из исходных кодов и портов позволяет установить самую свежую версию;
  • «из исходных кодов третьей стороны» — в этом случае пользователь скачивает официальный исходный код с сайта производителя, находит и разрешает все зависимости, компилирует его и устанавливает;
  • «из портов» — по предварительно подготовленным сценариям поиска и установки ПО. «Порт», в контексте FreeBSD — каталог, содержащий файлы, описывающие: 1) какие зависимости существуюут у ПО, 2) где достать исходный код пакета, 3) как его собрать и какие патчи применить, 4) в какие каталоги скопировать собранные файлы. Весь процесс автоматизирован и, в зависимости от требований порта к сборке, пользователю будет выведен диалог для уточнения параметров сборки. Недостаток такого типа установки — весьма продолжительное время самой установки (в зависимости от скорости работы самого компьютера и сети Интернет), поскольку зависимости тоже устанавливаются из портов.

Какой же применить метод установки?
Всё зависит от ситуации:

  • если нужно быстро установить какую-нибудь утилиту или программу широкого применения — проще и быстрее это сделать из бинарных пакетов;
  • если требуется самая свежая версия и при этом нет лимита времени на установку — воспользуйтесь портами;
  • если требуется изменение различных опций сборки и детальная настройка приложения — используйте исходные коды.

Поиск пакетов

Краткие описания пакетов в репозиториях (бинарных и исходных текстов) FreeBSD можно посмотреть на сайте http://www.freebsd.org/ports/index.html. По этой информации можно уточнить имя пакета, категорию и зависимости. Имя пригодится для установки из бинарных пакетов, а категория пригодится для установки из портов.

Для бинарных пакетов есть свои встроенные средства поиска, об этом рассказано ниже.

Работа с бинарными пакетами

С версии FreeBSD 10 работает новая система бинарных пакетов PKG Next Genegation или pkgng. Пользователь может выбрать с какой системмой работать — классической pkg_* или новой pkgng. Если с новой, то обратного пути на старую уже не будет. Рассмотрим оба варианта.

Классический способ установки

С помощью pkgng
При обращении к менеджеру пакетов в первый раз, возможен вариант, что в системе он ещё не был установлен. Устанавливаем его:

, после чего будет выведена инструкция как произвести установку. Можно установить менеджер из портов:

# cd /usr/ports/ports-mgmt/pkg # make # make install clean

, либо, используя классическое средство установки:

# pkg_add -r pkg

Когда pkg установлен, можно узнать как он работает:

# pkg help install
# man pkg-install
# pkg install packagename

Вывод информации об установленном пакете:

# pkg info packagename

Поиск пакета в репозитории:

# pkg search packagename

Удаление установленного пакета:

# pkg delete packagename

Автоудаление установленных, но не используемых пакетов:

# pkg autoremove

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

# pkg version

— выведет список всех бинарных пакетов установленных в системе и их версий.

Апгрейд установленных пакетов:

# pkg upgrade

— выведет список пакетов для обновления и предложит установку.

Работа с портами

Получение дерева портов из сети Интернет:

# portsnap fetch # portsnap fetch extract

Первая команда скачивает архив всех портов, а вторая — его распаковывает. Если portsnap запускается впервые, или после очистки /var/db/portsnap, команду extract следует воспользоваться. Однако, для обновления существующего дерева портов выполняется:

# portsnap fetch # portsnap update

Переход в каталог нужного порта и выполнение команд по сборке. Пример установки файлового менеджера Midnight Commander :

# cd /usr/ports/misc/mc # make make install clean

Порты отсортированы по категориям и 3-й уровень и есть имя категории. Например, как в данном случае — misc. К какой категории принадлежит порт можно найти вручную или через поисковую систему на сайте FreeBSD.org (смотреть строку с «Category»).

Обновление пакетов, установленных из портов

Обновление посредством portupgrade

portupgrade требует доустановки кучи зависимостей.

Обновление всех портов одной командой:

# portupgrade -ai

Здесь, опция -a — указывает на проверку всех имеющихся портов, установленных в системе; -i — указывает на запрос подтверждения обновления каждого пакета.

Для обновления конкретного пакета, нужно указать его имя и параметр -R для учёта и обновления зависимостей:

# portupgrade -R firefox

Обновление посредством Portmaster

Использует базовые утилиты системы и не требует дополнительных пакетов. Если portmaster ещё не установлен, производим установку:

# cd /usr/ports/ports-mgmt/portmaster # make install clean

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

# portmaster -L

Программа проведёт проверку установленных пакетов и выведет подробный список пакетов и их версий. Изучив список можно производить выборочный апгрейд через вход в каталог /usr/ports/имя_секции/имя_пакета и выполнение в каталоге команд make make reinstall clean. Если необходим полный апгрейд с автоматизацией действий, можно воспользоваться следующей командой:

# portmaster -aiK

Здесь: -a — все пакеты, -i указывает спрашивать каждый раз разрешения на сборку пакета, -K -выполнение «make clean», после установки

Очистка от временных файлов

В процессе работы с портами в каталогах портов установленных содержатся исходные тексты и достаточное количество временных файлов, что расходует пространство диска. Например, каталог /usr/ports, после установки базовой системы и файлового менеджера mc (со всеми зависимостями), занимает порядка 2,8 Гб. Если в после установки порта не делать очистку (опциякоманда clean), то каталог очень быстро увеличивается в размерах. Для очистки всех временных файлов после сборки можно сделать так:

# cd /usr/local/ports # make clean

Если установлен пакет portupgrade, то можно воспользоваться утилитой portsclean :

Очистка всех портов от временных файлов:

# portsclean -C

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

# portsclean -D

Для удаления всех дистрибутивных файлов, не связанных ни с одним портом:

# portsclean -DD

Удаление программ из портов

Для удаления ПО установленного из портов, следует зайти в каталог порта и выполнить команду make с параметром deinstall :

# cd /usr/ports/misc/mc # make deinstall

Помимо этого у make есть параметры:

  • reinstall — для переустановки порта
  • clean — для очистки от временных файлов

Установка из исходных кодов

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

Примерный план действий:

  1. Скачиваем архив с исходными текстами с сайта разработчика.
  2. Распаковываем его.
  3. Читаем README и INSTALL для ознакомления с процедурой установки и возможными опциями.

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

1. Переходим в каталог с распакованными текстами.

2. Для знакомства со всеми опциями конфигурирования перед сборкой, выполняем:

$ ./configure —help

3. Выбираем нужные параметры и запускаем процесс конфигурирования. Для примера, выключим IPv6 и установим «префикс» каталога, куда ставится программа:

$ ./configure —PREFIX=/usr/local —disable-ipv6=yes

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

4. Когда зависимости разрешены, можно приступить к сборке:

$ make

Здесь правило то же — сборка должна пройти до конца и без ошибок. На этом этапе также возможны разные проблемы с зависимостями.

5. Когда сборка завершена, устанавливаем все компоненты программы от имени root`а :

# make install

Далее — читается документация, формируются конфиги и/или стартовые скрипты, если нужно — права доступа и всё это дело отлаживается.

Читайте также:
Пойдет ли мне блонд программа

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

# make remove

Так как исходные тексты в распакованном виде могут занимать довольно большое пространство на диске, рекомендуется после отладки компонентов пакета удалять все тексты, но оставлять сам архив с исходниками.

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

Разрешение проблем

portsnap fetch failed

1. Если после скачивания базы портов выходит что-то типа «extraction corrupted», можно попробовать удалить содержимое каталога /var/db/portsnap, а затем снова инициировать процесс загрузки базы.

2. Встречается очень редко, но бывает, что сам сетевой интерфейс работает не совсем корректно и искажает данные. Косвенно на это указывает падение ssh-сессии в моменты интенсивного трафика:

cat /var/log/messages . Dec 27 14:06:29 srv sshd[775]: error: Received disconnect from 192.168.1.5: 2: Packet corrupt .

Для проверки, через адаптер, который производилось скачивание базы, скачиваем по www или ftp какой-нибудь файл размером 10…100 мегабайт и сравниваем контрольные суммы исходного файла и скаченного. Если суммы не совпадают, значит следует продиагностировать сетевой адаптер.

Обновление дополнительного ПО в FreeBSD

  • Обновление дополнительного ПО в FreeBSD
  • Обновление с использованием pkg
  • Какие пакеты можно/нужно обновить
  • Какие пакеты нужно обновить
  • Обновление пакета
  • Обновление дерева портов
  • Обновление ПО в ручную
  • Обновление ПО программой portmaster
  • Обновление ПО программой portupgrade
  • Обновление дерева портов и индекса с использование cvsup

Обновление с использованием pkg

Какие пакеты можно/нужно обновить

Опирается на версию дерева портов

# pkg version

Какие пакеты нужно обновить

# pkg audit -F

Обновление пакета

# pkg upgrade asterisk18 # ln -s /usr/local/lib/libxml2.so.5 /usr/local/lib/libxml2.so.2

Обновление с использованием портов

Обновление дерева портов

[server:~] # portsnap fetch update [server:~] # less /usr/ports/UPDATING

Обновление ПО в ручную

[server:~] # cd /usr/ports/security/clamav [server:ports/security/clamav] # make [server:ports/security/clamav] # pkg_delete -x clamav [server:ports/security/clamav] # make install clean [server:~] # /usr/local/etc/rc.d/clamav-clamd restart

Обновление ПО программой portmaster

[server:~] # pkg_add -r portmaster

Вывод списка установленных портов по категориям

[server:~] # portmaster -l

Сравнение версии установленного по с версиями в дереве портов

[server:~] # portmaster -L

Обновление отдельного пакета

[server:~] # portmaster libgmp

Обновление всех устаревших пакетов с предварительным запуском make config для них

[server:~] # portmaster —force-config -a

Пересборка всех пакетов с предварительным запуском make config для них

[server:~] # portmaster —force-config -af

Удаление пакета и нужных только ему пакетов

[server:~] # portmaster -e clamav

Обновление ПО программой portupgrade

[server:~] # pkg_add -r portupgrade

Сравнение версии установленного по с версиями в дереве портов

[server:~] # portversion -v

Обновление отдельного пакета

[server:~] # portupgrade libgmp

Обновление пакета и всех зависимых от него пакетов

[server:~] # portupgrade —batch -r libgmp

Обновление всех пакетов

[server:~] # portupgrade —batch -aRr

Обновление индекса portupgrade

[server:~] # portsdb -u

Исправление базы данных установленных пакетов (в случае необходимости)

[server:~] # pkgdb -Ff

Дополнительные материалы

Обновление дерева портов и индекса с использование cvsup

[server:~] # csup -h cvsup4.ru.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

Для устаревших систем может использоваться метка версии портов наподобии:

*default release=cvs tag=RELEASE_5_EOL
[server:~] # cd /usr/ports [server:/usr/ports/] # make index ИЛИ [server:/usr/ports/] # make fetchindex

Источник: housecomputer.ru

FreeBSD Установка, удаление программ

Во FreeBSD я обнаружил два способа централизованной установки программ. Первый способ — установка программ из готовых пакетов, хранящихся на специальном сервере-репозитории, а второй способ — сборка программы из исходников-портов.

Пакет — архив txz, содержащий всё необходимое для работы программы. Плюс в скорости установки, но минус в неполном соответствии локальному железу. Я хочу сказать, что программа в пакете, возможно, скомпилирована под древний Intel 80486 процессор, тогда как на целевом сервере трудятся два ксеона. Работать будет, но не в полную силу.

Ещё один минус, как мне кажется, заключается в несвоевременности получения заплаток к найденным дыркам в приложениях. Придётся подождать, пока добрые самаритяне произведут сборку пакета с применением заплатки.

Порт — представляет собой отдельную папку с файлами, содержащими исходные коды программы и инструкции для автоматической сборки. Эту совокупность файлов необходимо собрать в программу на локальном компьютере. Огромный минус, особенно для медленных машин, в скорости установки. Компиляция может затянуться на несколько дней.

А плюс тот, что программа компилируется на железе, на котором будет работать, а значит, как мне кажется, при сборке будут учтены все особенности локального железа. То есть, если программа, которую я устанавливаю из пакета, возможно скомпилирована для Intel 486 с целью максимальной совместимости с многообразием возможного железа, то при сборке этой программы из портов на сервере с двумя ксеонами, вероятно будут использованы все современные технологии, реализованные на установленном железе. Также, огромный плюс в том, что при появлении заплатки для приложения, не нужно ждать доброго дядю-компилятора и выпуска обновлённого пакета, а можно самому своевременно применить заплатку. И ещё один плюс заключается в возможности сборки программы из порта с определёнными опциями, тогда как в пакете мы получаем программу с опциями по умолчанию?

Я пользую оба способа. Алгоритм предпочтения пока мне самому не вполне ясен. Чаще собираю из портов, но и pkgng исользую.

Установка программы из пакета

Для работы с пакетами, я использую новую систему pkgng. Во FreeBSD 9 приходится устанавливать новый pkgng рядом со старым pkg, произведя определённые процедуры по обновлению базы установленных пакетов. Во FreeBSD 10 по умолчанию установлен pkgng, а не pkg.

pkg

Система устарела. Для установки, удаления программ использовались отдельные команды: pkg_add, pkg_delete. Я не стану углубляться в описание этой системы.

pkgng

Список репозиториев находится в файле /etc/pkg/FreeBSD.conf? (Уточнить при следующей установке. Какая-то возня у меня была с указанием репозиториев при установке свежей FreeBSD.)

Список всех установленных пакетов:
# pkg info
Поиск названия пакета:
# pkg search mariadb
mariadb55-client-5.5.33a_1
mariadb55-server-5.5.33a_1
Получение информации о пакете:
# pkg info mariadb55-server
Установка пакета:
# pkg install mariadb55-server
Удаление установленной программы:
# pkg delete mariadb55-server
Уточнение изменений в списке доступных пакетов из подключённых репозиториев:
# pkg update
Обновление всех установленных пакетов:
# pkg upgrade

Установка программы из порта

Развёртывание дерева портов

Для установки программ из портов будет удобно создать локальную копию дерева портов c сайта portsnap.freebsd.org.
Для создания и обновления дерева портов можно использовать несколько команд утилиты portsnap (http://www.freebsd.org/cgi/man.cgi?query=portsnap):
# portsnap fetch — позволит скачать дерево портов с какого-либо сайта.
# portsnap extract — одноразовая команда для первоначального развёртывания дерева на локальной машине. Дерево портов будет лежать в /usr/ports.
# portsnap fetch update — обновляет дерево до актуального состояния, что необходимо делать перед установкой и/или обновлением программ.

В данный момент (2014-03-17) размер папки /usr/ports составляет 660 мегабайт.

Поиск программы в дереве портов

Искать папку с необходимым портом во множестве подпапок директории /usr/ports не так сложно, если использовать команды:
# whereis php5
php5: /usr/ports/lang/php5
# whereis apache24
apache24: /usr/ports/www/apache24

# echo /usr/ports/*/*apache*
/usr/ports/Mk/bsd.apache.mk /usr/ports/devel/apache-ant /usr/ports/distfiles/apache22 /usr/ports/net-mgmt/zenpack-apachemonitor /usr/ports/security/apache-xml-security-c /usr/ports/sysutils/apachetop /usr/ports/textproc/apache-solr /usr/ports/textproc/apache-solr3 /usr/ports/www/apache-forrest /usr/ports/www/apache-mode.el /usr/ports/www/apache22 /usr/ports/www/apache22-event-mpm /usr/ports/www/apache22-itk-mpm /usr/ports/www/apache22-peruser-mpm /usr/ports/www/apache22-worker-mpm /usr/ports/www/apache24 /usr/ports/www/mkapachepw /usr/ports/www/py-apachelog

# cd /usr/ports
# make quicksearch name=apache24
Port: apache24-2.4.4_2
Path: /usr/ports/www/apache24
Info: Version 2.4.x of Apache web server
«Для выполнения более глубокого поиска используйте make search key=string или make quicksearch key=string, где string представляет собой некоторый текст, относящийся к искомому порту. Текст ищется в комментариях, описаниях или зависимостях. Этот способ можно использовать для поиска портов, связанных с некоторой темой, когда название программы неизвестно.»

Установка программы

Установка приложения происходит из соответствующей найденной папки. Сначала переходим в папку:
# cd `whereis -q apache24`
или
# cd /usr/ports/www/apache24
И уже находясь в папке запускаем компиляцию программы:
# make install clean
или из любого места, но с указанием целевой директории (опция -C программы make):
# make install clean -C /usr/ports/www/apache24

При компилировании программы из порта возможно появление псевдографических меню для выбора дополнительных настроек. Эти настройки сохраняются, и повторно, при переустановке пакета, не выводятся. Чтобы вновь увидеть эти диалоговые окна необходимо выполнить команды:
# cd /usr/ports/www/apache24
# make config
для изменения ранее установленных опций.
Или
# make rmconfig
для удаления ранее установленных опций.
Далее выполняем команду:
# make reinstall clean
Или даже сразу:
# make config reinstall clean
(команда clean для make нужно, чтобы удалить временную рабочую папку work, куда скачивались исходники, применялись к этим исходникам заплатки и где производилась компиляция программы. В большинстве случаев этот оставшийся мусор не нужен.)

Удаление программы

Удаление приложения происходит из соответствующей найденной папки:
# cd /usr/ports/www/apache24
# make deinstall

Способы обновлений установленного программного обеспечения

portupgrade

portupgrade — видимо уже устаревшая программа, которая поможет автоматически обновить установленные приложения. Умеет работать с pkgng.
Установка приложения portupgrade из дерева портов:
# make install clean -C /usr/ports/ports-mgmt/portupgrade
# cd /usr/ports
# portupgrade -ai — для обновления всех установленных приложений с принудительным подтверждением (нажатием Yes).

portmanager

portmanager — это приложение устарело и более не используется?

portmaster

portmaster — заменяет/дополняет portupgrade. Умеет работать с pkgng. Имеет ряд преимуществ перед portupgrade?
Установка приложения portmaster из дерева портов:
# make install clean -C /usr/ports/ports-mgmt/portmaster
# cd /usr/ports
# portmaster -ad — для обновления всех установленных приложений без лишних запросов на удаление устаревших копий портов.

Источник: debuntu.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru