LINUX.ORG.RU

Несколько вопросов по FreeBSD

 ,


1

4

Здравствуйте! Поставил в виртуалку FreeBSD 10.3 попробовать, и у меня возникло несколько вопросов. Пожалуйста, помогите разобраться с ними.

  • Сразу после установки системы я выполнил pkg info и увидел, что единственный пакет, зарегистрированный в системе - сам pkg. Правильно ли я понимаю, что вся остальная «система» является единым целым и не подконтрольна пакетному менеджеру? Если да, то почему тогда сам pkg не является её частью?
  • Порты и бинарные пакеты. Какой из этих способов установки программ является более предпочтительным? Как они совместимы между собой? Регистрируются ли программы, установленные из портов, в pkg? Как соотносятся между собой количества программ, доступных в портах и в бинарном виде? Собираются ли бинарные пакеты из портов автоматически у разработчиков FreeBSD? Для всех ли программ из портов есть бинарные пакеты?
  • В qemu у меня -vga vmware, во FreeBSD установлены xf86-input-vmmouse и xf86-video-vmware, в иксах дико лагает курсор, дергаётся из стороны в сторону. Как следует исправить эту проблему?
  • pkg info показывает список всех установленных в системе пакетов. Есть ли возможность увидеть те из них, которые были установлены явно? Аналог apt-mark showmanual или просмотра файла world в Gentoo.

Заранее спасибо

Перемещено Falcon-peregrinus из talks

★★

Последнее исправление: Norong (всего исправлений: 3)

Правильно ли я понимаю, что вся остальная «система» является единым целым и не подконтрольна пакетному менеджеру?

Все верно. В линуксе как правило солянка из пакетов. В FreeBSD же система отдельно, порты отдельно в /usr/local

Если да, то почему тогда сам pkg не является её частью?

Порты - программы разрабатываемые не в рамках проекта FreeBSD. Они не должны мешаться с системными программами и тем более конфликтовать/влиять на их работу. ИМХО, это очень правильно. Если что-то не так, можно просто снести все из /usr/local и поставить заново, не боясь поломать систему.

Какой из этих способов установки программ является более предпочтительным?

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

Регистрируются ли программы, установленные из портов, в pkg?

Да. После компиляции любого порта из исходников, последним шагом создается бинарный пакет и регистрируется в системе по всем канонам pkg.

Собираются ли бинарные пакеты из портов автоматически у разработчиков FreeBSD?

Разработчики FreeBSD занимаются разработкой FreeBSD. Портами занимаются мейтейнеры, либо сами разработчики программ. Мухи отдельно, котлеты отдельно.

Для всех ли программ из портов есть бинарные пакеты?

Насколько я знаю - для всех. Но может быть есть какие-то исключения.

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

2.) Мне просто подумалось, что раз pkg есть в свежеустановленной системе, то он должен бы являться её частью и сам собою не отслеживаться по логике пункта 1.

5.) А, ну да, просто непривычно, что тут понятия «мейнтейнер» и «разработчик» принципиально отличаются. Ну, так или иначе, пакеты из портов делаются в автоматическом режиме, или ручками?

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

2.) Мне просто подумалось, что раз pkg есть в свежеустановленной системе, то он должен бы являться её частью и сам собою не отслеживаться по логике пункта 1.

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

make install clean -C /usr/ports/ports-mgmt/pkg
make install clean -C /usr/ports/ports-mgmt/portmaster

Ну, так или иначе, пакеты из портов делаются в автоматическом режиме, или ручками?

Автоматом, на билд серверах проекта FreeBSD.

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

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

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

Так он же вроде не стоит в свежеустановленной, но при первой команде pkg там вроде идет предложение его установить. В виртуалке так вроде было.

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

У меня он был прям сразу, 10.3. И его бинарник живёт не в /usr/local/bin, а в /usr/sbin (если это может служить показателем).

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

А есть ли принципиальная разница между одной и той же программой, собранной из портов или установленной из бинарников?

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

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

С 10 версии вроде идет по умолчанию. Но могу ошибаться.

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

А есть ли принципиальная разница между одной и той же программой, собранной из портов или установленной из бинарников?

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

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

А не подскажешь по

pkg info показывает список всех установленных в системе пакетов. Есть ли возможность увидеть те из них, которые были установлены явно? Аналог apt-mark showmanual или просмотра файла world в Gentoo.

?

Norong ★★
() автор топика

В FreeBSD nouveau работает или там только невидийский говноблоб?

anonymous
()
Ответ на: комментарий от Norong

pkg info показывает список всех установленных в системе пакетов. Есть ли возможность увидеть те из них, которые были установлены явно?

Если я правильно понял man pkg, то pkg query -e '%a = 0' %o. o_O жесть

sevenredlines
()
Последнее исправление: sevenredlines (всего исправлений: 2)
Ответ на: комментарий от Norong

Есть ли возможность увидеть те из них, которые были установлены явно?

Объясни что значит в твоем понимании явно.

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

pkg install xfce установит пакет xfce и тонну зависимостей. При этом, если xfce потом удалить, то эти зависимости будут удалены по pkg autoremove. Нужная мне команда должна показать xfce, но не его зависимости. Оратор одним сообщением выше привёл команду

pkg query -e '%a = 0' %o

и она делает то, что надо.

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

pkg autoremove никогда не юзаю, так как при следующем обновлении с исходников, все эти зависимости поставятся снова.

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

А почему они поставятся снова? Одно дело - сборочные зависимости, это да. Но, вроде как, ещё есть обычные зависимости, и если они были установлены вслед за некой прогой, требующей их, то, если эта прога удалена, они pkg-autoremove'ом тоже удалятся и не вернутся.

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

А как в FreeBSD обстоят дела с Юникодом? Долгий и вдумчивый гуглинг подсказывает, что в Xorg всё хорошо, на tty всё плохо.

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

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

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

В 10-ке появился Newcons с поддержкой юникода. Правда мне сложно представить зачем нужен в консоли юникод. Книги в консоли без X-ов собрался читать?

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

Честно сказать, я тоже не знаю, зачем он мне нужен. Но у меня в Linux везде Юникод и хочется привычного.

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

А есть что-то типа revdep-rebuild? или pkg autoremove не удалит те зависимости, в которых нуждаются оставшиеся в системе пакеты?

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

А есть что-то типа revdep-rebuild?

Во фряхе, насколько я понял, если обновляется прога требующая пересборки либы, то инкрементируется версия поста либы. Следовательно, при обновлении через portmaster -a будет пересобрана прога и либа.

Так же есть:

     pkg check -B or pkg check --shlibs regenerates the library dependency
     metadata for a package by extracting library requirement information from
     the binary ELF files in the package.

     pkg check -d or pkg check --dependencies checks for and installs missing
     dependencies.

     pkg check -r or pkg check --recompute recalculates and sets the checksums
     of installed packages.  This command should only be used when the admin-
     istrator has made modifications that invalidate a package checksum.
     Spontaneous checksum problems can indicate data or security problems.

     pkg check -s or pkg check --checksums detects installed packages with
     invalid checksums.  An invalid checksum can be caused by data corruption
     or tampering.

Но я обычно делаю топорно: portmaster `pkg info -r libX11-1.6.3,1`, но в этом возникает необходимость крайне редко.

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

или pkg autoremove не удалит те зависимости, в которых нуждаются оставшиеся в системе пакеты?

Есть разные типы зависимостей. К примеру, есть либа которая нужна проге. А есть тулчейн который нужен только для сборки проги и который можно удалить после сборки. Так вот второй тип чистится через autoremove.

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

Я имею ввиду зависимости, которые остаются после удаления проги. Autoremove с ними как поступает? В случае, когда либы нужны только для удаляемого пакета, и когда они нужны для каких-то еще прог.

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

По логике, если зависимости каким-то пакетом юзаются - тогда оставляются. Я не до конца осведомлен в этом вопросе.

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

Спасибо, надо будет потыкать на досуге виртуалку.

momo
()
Ответ на: комментарий от annulen

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

И это, кстати, Ахиллесова пята фрибсдешных портов. У портов слишком много опций и в бинарных сборках только дефаулт. Если ставить из портов со своими опциями, при следующем pkg upgrade всё к чертям улетает.

Мне тут опенбсдешный подход больше нравится. Опций меньше, но все они есть и в бинарном виде. Т.е. pkg_add -u обновит всё так, как хотелось. И руками ничего перевыбирать не надо.

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

Да, есть такое. Но против этого есть pkg lock

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

В новом vt всё отлично, одну строку в loader.conf, другую в login.conf. И всё.

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

Нет уж, спасибо. Мои вкусы слишком специфичны :)

Thou shalt not pass -O9 to gcc for chaos and madness await thee at its end. ;)

Всё хорошо в меру. 3 flavour пакета для most sane use лучше чем 100500 никому ненужных опций включения и выключения всего подряд, что только можно.

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

Давай расставим точки. autoremove чистит зависимости, в которых больше никто не нуждается? после него не нужно проверять не поломал ли он зависимости оставшихся в системе программ?

momo
()
Ответ на: комментарий от beastie

И это, кстати, Ахиллесова пята фрибсдешных портов. У портов слишком много опций и в бинарных сборках только дефаулт. Если ставить из портов со своими опциями, при следующем pkg upgrade всё к чертям улетает.

ну тут тогда самому держать свой репозиторий, с помощью poudriere например...

Мне тут опенбсдешный подход больше нравится. Опций меньше, но все они есть и в бинарном виде. Т.е. pkg_add -u обновит всё так, как хотелось. И руками ничего перевыбирать не надо.

а как они этого добились? т.е. там каждый пакет собирается со всеми комбинациями опций для него допустимых?

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

Довольно таки просто. Возмём для примера dovecot.

В опен он существует в 4-х ипостасиях. 4 главных use-case. Всё это бинарные пакеты и так они и ставятся и обновляются под своими собственными именами (но пакетный менеджер знает, что всё это варианты одного и того же.)

make show=PKGNAMES
dovecot-2.2.21p0 dovecot-ldap-2.2.21 dovecot-mysql-2.2.21 dovecot-postgresql-2.2.21
Там уже включены компрессия, ssl и другие важные вещи по умолчанию. Главный критерий разделения — внешние зависимости. Плагины идут отдельными пакетами.

TL;DR: less is more А вот фря:

make showconfig
===> The following configuration options are available for dovecot2-2.2.23:
     DOCS=on: Build and/or install documentation
     EXAMPLES=on: Build and/or install examples
     KQUEUE=on: kqueue(2) support
     LIBWRAP=off: TCP wrapper support
     LZ4=off: LZ4 compression support
     SSL=on: SSL protocol support
     VPOPMAIL=off: vpopmail support
====> Database support
     CDB=off: CDB database support
     LDAP=off: LDAP protocol support
     MYSQL=off: MySQL database support
     PGSQL=off: PostgreSQL database support
     SQLITE=off: SQLite database support
====> Full text search plugins
     ICU=off: Use libicu for FTS unicode normalization
     LUCENE=off: CLucene FTS support
     SOLR=off: Solr FTS support
     TEXTCAT=off: Libtextcat FTS support
====> GSSAPI Security API support: you have to select exactly one of them
     GSSAPI_NONE=on: Build without GSSAPI support
     GSSAPI_BASE=off: Use GSSAPI from base
     GSSAPI_HEIMDAL=off: Use Heimdal GSSAPI from security/heimdal
     GSSAPI_MIT=off: Use MIT GSSAPI from security/krb5
===> Use 'make config' to modify these settings
Мульён ненужных кнопок со сложностью 20! комбинаций. Конечно на всех не напасёшься.

ref1: http://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/mail/dovecot/Makefile?rev=1.23...
ref2: https://svnweb.freebsd.org/ports/head/mail/dovecot2/Makefile?revision=414114&...

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

Мульён ненужных кнопок со сложностью 20! комбинаций.

Дык в генте еще веселее, там у dovecot 29 флагов. И это лучше чем ковырятся в исходниках для включения/выключения функционала.

Лично я считаю это плюсом. Один раз отконфигурил, и потом копируешь файлик с настройками (/var/db/ports/mail_dovecot/options) по серверам.

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

That separates mans and boys. ;)

Мне не надо 29 флагов. Мне надо 2-4 sane use cases, со всем нужным уже включёным. Яж не красноглазик, мне дело делать надо и не иметь гловной боли при поддержке. ;)

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

Насколько я знаю - для всех

Неа. Кроме «поломанных» портов типа
http://www.freshports.org/ports-ignore.php есть слишком «жирные» (типа xonotic, его однако можно вытянуть из pc-bsd-шной репы) ну и с ограничениями разной степени
http://www.freshports.org/ports-restricted.php
которые могут и запрещать раздачу бинарников:
http://www.freshports.org/audio/lame/
http://www.freshports.org/audio/faac/

anonymous
()
Ответ на: комментарий от sevenredlines

Если я правильно понял man pkg, то pkg query -e '%a = 0' %o. o_O жесть

Чего там жестяного-то o_O? Очень хорошая гибкость, да и вполне нормальные конструкции.

А для часто нужных вещей, совершенно внезапно, есть алиасы:

# pkg alias
prime-list           'query -e '%a = 0' '%n''
noauto               'query -e '%a == 0' '%n-%v''

anonymous
()
Ответ на: комментарий от beastie

Мне не надо 29 флагов. Мне надо 2-4 sane use cases, со всем нужным уже включёным. Яж не красноглазик,

Нет, ты - другая крайность. Ты - одноклеточное. Бывает :)

мне дело делать надо

ога и поэтому ты прожигаешь жыснь на ЛОРе ... много дел наделал то? ню-ню :)

и не иметь гловной боли при поддержке. ;)
beastie

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

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

Больше костылей богу костылей! Yet another ship-around-broken-port-design-tool.

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

beastie ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.