LINUX.ORG.RU
ФорумAdmin

Установка софта в FreeBSD

 ,


0

1

По FreeBSD поясните:

  1. Из портов ставить программы или из пакетов? Зачем вообще нужны порты если есть более быстрый и удобный способ установки? Или при установке из портов ты имеешь доступ к гораздо большему набору программ?
  2. Дерево портов, которое обновляется при помощи git с git.freebsd.org содержит все-все порты, существующие для FreeBSD, никаких дополнительных портов не существует? И для какой версии FreeBSD эти порты, для 14? А если 13 стоит?
  3. Допустим нужен софт под FreeBSD определённой версии, например PHP 7.4, как его установить?

Перемещено hobbit из general

★★★★★

Из портов ставить программы или из пакетов?

Откуда хочешь.

Зачем вообще нужны порты если есть более быстрый и удобный способ установки? Или при установке из портов ты имеешь доступ к гораздо большему набору программ?

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

Дерево портов, которое обновляется при помощи git с git.freebsd.org содержит все-все порты, существующие для FreeBSD, никаких дополнительных портов не существует?

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

И для какой версии FreeBSD эти порты, для 14? А если 13 стоит?

Для всех. Порты это роллинг, там поддерживаются все официально поддерживаемые версии FreeBSD.

Допустим нужен софт под FreeBSD определённой версии, например PHP 7.4, как его установить?

Достать версию порта из истории SVN, подправить под текущие реалии Ports Collection (Mk-обвязка регулярно меняется-допиливается) и собрать штатно.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Технически существуют оверлеи, но мне из таких известен только собственный.

как пример, TDE trinity для freeBSD, там скрипт tde-ports-map, который в /usr/ports тупо записывает свои порты

p01ymer
()

Из портов ставить программы или из пакетов? Зачем вообще нужны порты если есть более быстрый и удобный способ установки?

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

Или при установке из портов ты имеешь доступ к гораздо большему набору программ?

Не гораздо. Но пакетов для amd64 гораздо больше, чем для какого-нибудь arm.

Дерево портов, которое обновляется при помощи git с git.freebsd.org содержит все-все порты, существующие для FreeBSD, никаких дополнительных портов не существует?

Принципиально такое возможно, но мне не известно о таких портах.

И для какой версии FreeBSD эти порты, для 14? А если 13 стоит?

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

https://docs.freebsd.org/en/books/handbook/ports/

Допустим нужен софт под FreeBSD определённой версии, например PHP 7.4, как его установить?

https://www.freshports.org/lang/php74/?branch=2022Q4

Этот порт устарел и не поддерживается. Либо поддерживай порт самостоятельно (в таком случае ты можешь снова сделать его доступным для других пользователей), либо собирай php 7.4 из исходников «вручную» — по официальной документации php 7.4.

zx_gamer ★★★
()

Поддерживаю что выше расписал mord0d.

Но вот насчёт пхп - никогда его не ставил с портов, всегда качал с php.net и (установив всякие libjpeg и другие зависимости из портов) ./configure - make - make install, соответственно версию можно брать почти любую (но пхп5.3 на фрибсд 10 и выше без патчей не соберётся).

firkax ★★★★★
()
Ответ на: комментарий от firkax

Мне, к счастью, не приходилось шаманить с php. Обычно нужная версия есть в пакетах. Но я пересобираю чтобы выкорчевать mysql и включить postgres.

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

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

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

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

если для своей разработки то хочется детерминированной стабильности, прописанной в небольшом сборочном файле (версия вплоть до минорной

Писать софт под заведомо устаревшую версию интерпретатора не очень дальновидно. Нужно писать как минимум под стабильную, которую (чаще всего) и выбирают в качестве дефолтной во FreeBSD Ports Collection, а значит и опакечено с ней в бинарных пакетах.

Назови хоть одну весомую причину, по которой нужно писать софт под, например, PHP-7? Она может быть только одна: проект пилится специально под имеющийся стек давно устаревшего ПО, обновлений которого не предвидится.

mord0d ★★★★★
()

Могу дать патч, который сбрасывает права с root до nobody во время установки пакетов/портов. Фря досихпор качает и (sic!) распаковывет все скачанное рутом.

anonymous
()

Из портов ставить программы или из пакетов? Зачем вообще нужны порты если есть более быстрый и удобный способ установки?

Возможность выбора вариантов сборки.

Или при установке из портов ты имеешь доступ к гораздо большему набору программ?

Да.

Допустим нужен софт под FreeBSD определённой версии, например PHP 7.4, как его установить?

root@errcode:~# ls /usr/ports/lang/php
php-mode.el/      php81-extensions/ php81/            php82-extensions/ php82/            php83-extensions/ php83/            php84-extensions/ php84/
IPR ★★★★★
()
Ответ на: комментарий от mord0d

Но я пересобираю чтобы выкорчевать mysql и включить postgres.

Для выкорчевывания mysql и включения pgsql достаточно:

pkg delete -y php83-mysql php83-pdo_mysql
pkg install -y php83-pgsql php83-pdo_pgsql

Зачем пересобирать?

iron ★★★★★
()
Ответ на: комментарий от iron

Для выкорчевывания mysql и включения pgsql достаточно:

pkg delete -y php83-mysql php83-pdo_mysql
pkg install -y php83-pgsql php83-pdo_pgsql

Достаточно. Чтобы удалить и сам целевой пакет, если зависимость прописана. А она прописана, иначе бы её не притащило.

Да, установить модули можно, но не удалить.

Зачем пересобирать?

У меня на домашнем сервере много виртуалок и контейнеров. А дисков мало.

mord0d ★★★★★
()
  1. Флаги компиляции и оптимизации, в пакетах они местами странные.

  2. Актуальные для всех поддерживаемых версий. При этом что-то может не собираться.

  3. Напиши свой порт, или вытащи его с другого бранча.

Ygor ★★★★★
()
Ответ на: комментарий от mord0d

Чтобы удалить и сам целевой пакет, если зависимость прописана.

pkg delete -f – удалит то что нужно, и оставит то, что притащило эти пакеты в зависимостях. Но тут очень зависит от проги которой лишаешь зависимости. Одни будут работать, а другие – падать при старте.

У меня на домашнем сервере много виртуалок и контейнеров.

Если под контейнерами ты подразумеваешь джейлы, то там можно сделать общий /usr/local.

iron ★★★★★
()
Ответ на: комментарий от iron

Одни будут работать, а другие – падать при старте.

Вот поэтому pkg delete -f мной даже не рассматривался. (=

Если под контейнерами ты подразумеваешь джейлы, то там можно сделать общий /usr/local.

И конфиги из /usr/local/etc будут доступны всем джейлам, а там и пароли к базам данных указаны, и всякие API токены, и каждый васян рут каждого джейла сможет их прочитать. А раз там psql уже установлен, то и из базы повытащить всякое всё — не проблема (правда, у меня в pg_hba.conf вайтлисты, не только лишь все, мало кто может достучаться до чужой базы).

mord0d ★★★★★
()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от iron

Но зачем это всё, если:

  • есть дедупликация.
  • в каждый джейл установлено только то, что только ему нужно (например, PHP установлен всего в два джейла… на разных хостах).

А ещё (почти) все виртуалки грузятся по PXE, потому вместо 8G root виртуалкам выделяется только 2G persistent storage.

mord0d ★★★★★
()
Ответ на: комментарий от iron

если /usr/local ты сделаешь общим а вот /usr/local/etc будет у каждого джейла свой

Ах да, такой подход подразумевает синхронизацию нужных конфигов по нужным джейлам вручную. Так себе перспектива. (=

А ещё возможен сценарий, где в одном джейле пакет будет удалён, сломав совсем другой джейл.

mord0d ★★★★★
()
Последнее исправление: mord0d (всего исправлений: 1)

Если задумаешься над сборкой портов, нагугли удобный инструмент poudriere. Собирает все в jail’ах, стал довольно популярен из-за удобства своего использования. Информации по настройке в сети много.

anonymous
()