LINUX.ORG.RU

pkg install pango / make install pango в FreeBSD 12.1

 , ,


0

1

При установке pango через pkg install pango openbox не запускается, выдаёт ошибку

ld-elf.so.1: /usr/local/lib/libpangoft2-1.0.so.0: Undefined symbol "FcWeightFromOpenTypeDouble"
При установке через make install всё запускается нормально.

Опенбокс пытается обратиться к версии pango 1.0? Что происходит не так?

Звучит как часть софта из портов, часть — из бинарных пакетов, и кто-то из них сильно отстаёт.

Ты либо собирай всё из портов, либо юзай бинарные из пакетов, иначе всё быстро скатится в задницу.

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

Понятно. Похоже, уже скатилось.

Но странно, при сборке из портов показывает ту же версию, что при сборке из пакетов. Они могут различаться в минорных версиях?

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

Похоже, уже скатилось.

Мне понадобилось что-то около двух недель, чтобы начать страдать. В итоге официальную репу FreeBSD отключил, юзаю только собранное в poudriere (распространяю собранное по внутренней локальной сети на свои девайсы).

Но странно, при сборке из портов показывает ту же версию, что при сборке из пакетов. Они могут различаться в минорных версиях?

Почему нет? За это отвечает не апстрим FreeBSD, а апстрим конкретного приложения/либы/whatever, и согласовываться между собой они (апстримы разных приложений/либ) не торопятся в большинстве своём. «Попенсорц жы! Не нравицца — не жри!»

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

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

 pkg rquery -r FreeBSD %n-%v | wc -l
   31886

 pkg rquery -r local-repo  %n-%v | wc -l     
     107
anonymous ()
Ответ на: комментарий от anti_win

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

Чойта? Я компиляю на одной машине с нужными мне опциями и распространяю бинари на все свои машины. Для поднятия своей репы с бинарями требуется только nginx (ну или что нравится или что есть, мне nginx для личных целей норм).

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

Ему предложит сделать… ничего. Оно уже установлено из портов и зарегистрировано в локальной базе пакетов.

Вот если бы ты предложил pkg install -r FreeBSD openbox

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

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

Да шо ви такое говорите?

ls -lahrt /usr/ports/packages/All|(head -n 5 ; tail -n5)
total 555276
-rw-r--r--  1 root  wheel   372B 23 Nov.  2018 qt4-doc-4.8.7_1.txz
-rw-r--r--  1 root  wheel   539K 23 Nov.  2018 freetype2-2.9.1.txz
-rw-r--r--  1 root  wheel   478K 23 Nov.  2018 mate-themes-3.22.14.txz
-rw-r--r--  1 root  wheel   442K 23 Nov.  2018 timidity++-2.14.0_3.txz
-rw-r--r--  1 root  wheel    14K 18 Mai  14:22 libudev-devd-0.4.2.txz
-rw-r--r--  1 root  wheel   210K 18 Mai  14:25 libinput-1.15.5.txz
-rw-r--r--  1 root  wheel   1,4M 18 Mai  14:30 xorg-server-1.20.8_1,1.txz

pkg info mate-themes | grep Installed
Installed on   : Fri Nov 23 01:38:06 2018 CET

pkg info freetype2 | grep Installed 
Installed on   : Fri Nov 23 15:19:19 2018 CET

pkg info xorg-server | grep Installed 
Installed on   : Wed May 20 14:47:19 2020 CET

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

Потому что гладиолус?

Напомню контекст:

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

=> pkg rquery -r local-repo %n-%v | wc -l 107 (на самом деле используемых пакетов сильно поменьше будет - есть невычищенные старые версии, есть «на посмотреть», есть временно использованные - пока багфикс/патч/нужная версия не появилась в штатном пакете)

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

=> показал, что это смесь старых (и новых) портов и пакетов из latest. Причем, используемая достаточно продолжительное время (наамного дольше 2 лет, просто в 2018 как раз на фрю12 перелез).

Единственная проблема, причем с теми же симптомами как у ТС - с замороженым harfbuzz.

Причем, сцуко, сравнительно свежей версии

  Installed on   : Tue Feb 11 18:36:23 2020 CET 

Но заморожен он из-за ШГ в молодежных, «улучшенных» версиях и полный переход на порты ничего не изменит от слова совсем – индусы из гугла вовсю импортируют новые АПИ (именно импортируют, далее ничего с этим АПИ не делая - я не поленился посмотреть в сорцах), из-за чего хромому (и ладно бы ему - все равно не использую) и всему, куда успели воткнуть блинк (qt5-webengine, эляктроны, читалки типа калибры) - подавай новый, молодежный harfbuzz c поломанной отрисовкой шрифтов. Пока отбиваюсь костылями в /etc/libmap.conf

[/usr/local/share/code-oss/]
libfreetype.so.6 /usr/local/lib/freetype210/libfreetype.so.6
libharfbuzz.so.0 /usr/local/lib/freetype210/libharfbuzz.so
libharfbuzz-subset.so.0 /usr/local/lib/freetype210/libharfbuzz-subset.so.0

А там, глядишь - «либо шах, либо ишак …» (т.е. или ШГ потихоньку пофиксят или я к тому времени на 4к монитор перейду).

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

А зачем эти грабли разложены по умолчанию? Какому «умолчанию»?

По умолчанию предполагается использовать пакеты. Нигде никто не пишет «смело мешайте порты и пакеты». Официальный (по хендбуку) подход - при использовании портов использовать portmaster с (емнип) автоматической пересборкой всех зависимостей.

Ну и предполагается, что тот, кто решил собирать из сорцов, хотябы примерно знает что и зачем он делает. Поэтому запрещать тянуть актуальные порты (а не их квартальные срезы) в систему с пакетами из квартальной репы, равно как и делать «make install» для одиночного порта – как-то никому не пришло в голову …

Если вам нужна куча диалогов «вы точно-точно хотите сделать? А может подумаете?» и прочее вытирание сопелек с ограничениями «как в венде, только НАХАЛЯВУ» то … подражатели «почти как венде, только хуже, но зато НАХАЛЯВУ» у нас уже есть, как и сама венда, зачем еще один клон?

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

Для поднятия своей репы с бинарями требуется только nginx

Не нужно. Есть NFSv3 для локальной сети. Расшариваешь каталог /usr/ports/packages и монтируешь на сконфигурированной машине-клиенте.

Создание бинарного пакета и зависимостей на сервере: portmaster -gD www/firefox

Создание репозитория в /usr/ports/packages на сервере: pkg repo /usr/ports/packages

Настройка клиентской машины: ee /usr/local/etc/pkg/repos/server.conf

server: {
    url: "file:///mnt", 
    enabled: true,
}

Монтирование сетевого каталога: mount_nfs IP-server:/usr/ports/packages /mnt

Бинарное обновление на клиентской машине: pkg upgrade (если не хватает необходимых пакетов, предложит установить недостающее из центрального репозитория FreeBSD).

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

на самом деле используемых пакетов сильно поменьше будет - есть невычищенные старые версии, есть «на посмотреть», есть временно использованные - пока багфикс/патч/нужная версия не появилась в штатном пакете

Не стоит забывать, что в их числе и либы. В pkg-ng приоритет репозиториев сломан, поэтому проблемы неизбежны. и опция -r действует только на указанные для установки пакеты, и не всегда на их зависимости.

портов и пакетов из latest

Ну ладно, отстрелишь себе что-нибудь на несколько часов, но всё равно отстрелишь — репозитории с пакетами обновляются (если ты это не отключал) каждый раз при запуске pkg, порты — только вручную.

Но заморожен он из-за ШГ в молодежных, «улучшенных» версиях и полный переход на порты ничего не изменит от слова совсем – индусы из гугла вовсю импортируют новые АПИ (именно импортируют, далее ничего с этим АПИ не делая - я не поленился посмотреть в сорцах), из-за чего хромому (и ладно бы ему - все равно не использую) и всему, куда успели воткнуть блинк (qt5-webengine, эляктроны, читалки типа калибры) - подавай новый, молодежный harfbuzz c поломанной отрисовкой шрифтов. Пока отбиваюсь костылями в /etc/libmap.conf

А вот здесь как можно подробнее, пожалуйста. Про ШГ я в курсе, про libmap.conf тоже знаю. Что куда мапать тоже понятно, но как всё это собрать?

т.е. или ШГ потихоньку пофиксят или я к тому времени на 4к монитор перейду

Если бы ещё HiDPI поддерживалось везде нормально. Ну и на ноутах (пока) не грозит. Да и ШГ никто не собирается фиксить.

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

Официальный (по хендбуку) подход - при использовании портов использовать portmaster с (емнип) автоматической пересборкой всех зависимостей.

Во-первых, в handbook основной упор сделан на традиционный make config/install/..., и про portmaster там совсем немного, и то в основном об обновлении портов, и лишь в конце аж одним абзацем упоминается про возможность его использования для установки портов.

Во-вторых, в man portmaster вообще пишут:

Users interested in a reasonable balance between speed of installation and maximum performance should consider the –packages-build option, perhaps combined with the –delete-build-only option.

Т.е. зависимости сборки рекомендуют устанавливать из пакетов.

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

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

Далее, я бы ещё понял, если бы предлагаемые пакеты сводили необходимость их пересборки к минимуму, максимизируя включённые опции сборки – тогда пересобирать их пришлось бы лишь тем, кому «лишняя» функциональность причиняет нетерпимые душевные страдания. Но бывает, что вот нужна опция конкретного пакета, почему-то отсутствующая по умолчанию, – мне что, все пакеты до latest обновлять, чтобы в одном из них одну опцию включить?

Если вам нужна куча диалогов «вы точно-точно хотите сделать? А может подумаете?» и прочее вытирание сопелек с ограничениями «как в венде, только НАХАЛЯВУ» то … подражатели «почти как венде, только хуже, но зато НАХАЛЯВУ» у нас уже есть, как и сама венда, зачем еще один клон?

Это уже дешёвая демагогия. «Мы не хотим как в винде – поэтому ударимся в другую крайность и разложим вам кучу грабель, чтобы не скучали.»

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

репозитории с пакетами обновляются (если ты это не отключал) каждый раз при запуске pkg, порты

Конечно отключал - зачем мне каждый раз тупняк попытки контакта сервера (особенно в последние 7-8 месяцев)? Да и pkg lock в смысле нежелательных обновлений зависимостей вроде бы неплохо справляется. Т.е. проблемы конечно бывают, но прикидочно — где-то минут на 15-20 в месяц (посмотреть, запустить сборку новой версии и т.д.) да и то из-за лени взять и автоматизировать все это дело.

А вот здесь как можно подробнее, пожалуйста. Про ШГ я в курсе, про libmap.conf тоже знаю. Что куда мапать тоже понятно, но как всё это собрать?

Э-э, зачем все это собирать? Делаешь pkg fetch нужного пакета, далее - можно заморочиться c pkg --chroot/--rootdir, можно тупо распаковать и двинуть пакет ручками в нужное место, затем делаем мап для тех программулин, что уже ни в какую не хотят без новых АПИ ... профит!

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

Т.е. зависимости сборки рекомендуют устанавливать из пакетов.

Т.е. во-первых, кто-то не пробовал пользоваться на самом деле (иначе бы знал, что с этой стороны проблем с портмастером не будет) ... Во-вторых, зависимости сборки, как бы != зависимости рантайма. В-третьих, при следующей же попытки обновить или установить что-то pkg предложить «починить обратно», так, чтобы версии соотвествовали.

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

Совершенно внезапно, дефолтный репозиторий зависит от того, устанавливается ли релиз или стейбл версию. Дефолт дерева - используешь ли portsnap или все же svn на бранч. «Тайные источники знаний»: В разделе «как пользоваться svn»

svn checkout https://svn.FreeBSD.org/repository/branch lwcdir

where:

...
branch depends on the repository used. ports and doc are mostly updated in the head branch, while base maintains the latest version of -CURRENT under head and the respective latest versions of the -STABLE branches under stable/9 (9.x) and stable/10 (10.x).

Ну и *барабанная дробь* https://www.freebsd.org/doc/handbook/pkgng-intro.html

Quarterly and Latest Ports Branches
The Quarterly branch provides users with a more predictable and stable
experience for port and package installation and upgrades. This is done essentially by only allowing non-feature updates. Quarterly branches aim to receive security fixes (that may be version updates, or backports of commits), bug fixes and ports compliance or framework changes.

Edit the file /usr/local/etc/pkg/repos/FreeBSD.conf and change the string quarterly to latest in the url: line.

The result should be similar to the following:

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",

Но бывает, что вот нужна опция конкретного пакета, почему-то отсутствующая по умолчанию, – мне что, все пакеты до latest обновлять, чтобы в одном из них одну опцию включить?

Ну если у вас git clone && checkout или svn co http://svn.freebsd.org/ports/branches/2020Q2/ уже отменили, то да.

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

Собирать — в смысле collect. Там ведь зависимого от harfbuzz немало, а ручками — ну его нафиг. Смысл собирать и мапить(прописывать) все зависимое?[br] Тогда можно сразу в качестве штатного пакета установить. [br] Я прописываю в libmap только «проблемные» приложения - т.е. vscode и … все. Остальное работает и не жужжит (причем установленное из штатной репы) со старой версией.

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

Собирать — в смысле collect.
Там ведь зависимого от harfbuzz немало, а ручками — ну его нафиг.

Смысл собирать и мапить(прописывать) все зависимое?
Тогда можно сразу в качестве штатного пакета установить.
Я прописываю в libmap только «проблемные» приложения - т.е. vscode и ... все. Остальное работает и не жужжит (причем установленное из штатной репы) со старой версией.

anonymous ()

А если требуется/хочется одну софтину с разными версиями? Как в таком случае следует обращаться? Понятно, что в таком случае о пакетах речь не идёт и ты самостоятельно собираешь из исходников. Но эта же программа может потребовать старых библиотек, например. Им нужные библиотеки или как-то линковать надо, или надо с jail'ами разбираться? Как обычно в таких случаях поступают? (Обычно, полагаю, старый софт не нужен.)

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

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

Во-первых, FreeBSD у меня долго стояла на стареньком десктопе, который использовался как SMB-сервер. И не нужно мне рассказывать про не ломающиеся порты – плавали, знаем.

Во-вторых, где в моей цитате хоть что-то про проблемы portmaster?

Во-вторых, зависимости сборки, как бы != зависимости рантайма.

Если программа не подгружает библиотеки динамически (что чаще всего так) – зависимости времени исполнения входят в зависимости сборки.

В-третьих, при следующей же попытки обновить или установить что-то pkg предложить «починить обратно», так, чтобы версии соотвествовали.

Что?

В разделе «как пользоваться svn»

Дерево портов, которое устанавливается при выборе соотв. пункта в bsdinstall – при чём здесь svn? Да и portsnap, который идёт в базовой системе, не умеет в срезы портов.

Ну и барабанная дробь https://www.freebsd.org/doc/handbook/pkgng-intro.html

И? Здесь просто общая информация о предмете. Где прочитать про «Не смешивайте порты и пакеты!» и «Внимание: дефолтный репозиторий пакетов не совместим с дефолтным же деревом портов!»?

Ну если у вас git clone && checkout или svn co http://svn.freebsd.org/ports/branches/2020Q2/ уже отменили, то да.

То, что поприседав можно сделать всё нормально, я и не оспариваю. Я спрашиваю, зачем грабли разложены прям сразу по умолчанию.

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

А если требуется/хочется одну софтину с разными версиями?

Только если это поддерживается конкретным портом. А вот emulators/wine разных архитектур одновременно ты иметь при всём желании не сможешь (но у меня есть скрипт).

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

Во-первых, FreeBSD у меня долго стояла на стареньком десктопе, который использовался как SMB-сервер. И не нужно мне рассказывать про не ломающиеся порты – плавали, знаем.

Не нужно сруливать с темы. Собирать поратмастером в системе с современным pkg(ng) — не собирал. Иначе бы не кивал на ман и portmaster «Т.е. зависимости сборки рекомендуют устанавливать из пакетов.». Ну и степень проблем с портами сильно зависит от радиуса кривизны рук. Или уровня ЧСВ пингвиноида — у них обычно проблема толка «я пингвиноид со стажем, накера мне разбираться как что-то работакт, ведь я точно знаю — если оно работает не так, как я привык в Пингвинчике, то значит это баг и оно не работает вовсе!»

Во-вторых, где в моей цитате хоть что-то про проблемы portmaster?

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

Если программа не подгружает библиотеки динамически (что чаще всего так) – зависимости времени исполнения входят в зависимости сборки.

Зависимости времени исполнения прописаны как зависимости времени исполнения (внезапно). Зависимости сборки - это компиляторы, собиральщик документации (asciidoc там) и прочее.

Что?

То. Если просто вкатить через make install (равнозначен примерно pkg install --force) порт неправильной версии (или даже не совпадающими с апстримом опциями), то при следующем обновлении pkg предложит его заменить на «правильный», из репы.

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

Это не продлится вечно.

А мне не надо вечно. Я еще неплохо помню времена кастомных патчей freetype (~/projects/cleartype/freetype-2.5.0.1-subpixel-disable-quantization.patch и т.д.). Т.е. если сильно прижмет, то патчи будут. И моя проблема не с «hintfull-онли» (пятые культи с ним наиболее вменяемо выглядят), там индус вроде что-то другое сломал.

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

Можно поделиться?

Мне не жалко, но нет документации (а оно на данный момент уже не очень простое, совсем неочевидное и требует особого раскатывания игр) и оно в очень ранней альфе (при должном умении оно уже юзабельное, по крайней мере wine, но могут всплыть неприятности, и скорее всего большая часть "кода" будет переписана, потому с документацией я пока не заморачиваюсь). Вообще, багрепорты не помешали бы, но я буду дольше объяснять как заставить моё поделие работать. ☺

Если сильно надо, пни меня в IRC, опубликую код как есть и попробую на пальцах объяснить что нужно делать чтобы заставить это работать.

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

У меня пока вообще никаких проблем нет (слава нормальным шрифтам), но я лучше заранее перестрахуюсь, пока всё не накрылось, и не пришлось терпеть лютое ШГ на время фиксов.

mord0d ★★★ ()