Closed umag closed 1 year ago
Хорошо, спасибо. Посмотрю, что с этим можно сделать.
По сути, есть три пути: 1) либо костылять отдельный пакет, в котором билдить забандленный в хром ffpmeg (причём, с гугловым брендингом и проприетарными кодеками, см. ебилд хромиума в дереве) 2) либо тянуть в зависимостях установленный хромиум с включенными проприетарными кодеками 3) либо костылять потрошение убунтушного пакета и ставить оттуда.
Если честно, все три варианта очень дурно пахнут
@uMag, или один раз взять этот самый chromium-codecs-ffmpeg-extra_….deb
, распаковать любым архиватором, и положить тамошнюю libffmpeg.so
в /opt/yandex/browser-beta/lib/
. Ну и рестартануть браузер же.
Мужики! это из-за этой библиотеки видео в контакте не пашет? Хотя chromium у меня везде стоит.
Состряпал ebuild, который выполняет 3й пункт из перечисленных @msva вариантов, т.е. потрошит пакет убунты: https://bitbucket.org/programmador/gentoo-overlay/src/7cc21d859a3b04b3bed5fc87c9b690482eef0886/www-client/yandex-browser-ffmpeg-codecs/?at=default Оверлей 'programmador'. Можете найти пакет yandex-browser-ffmpeg-codecs в gpo.zugaina.org когда он перекеширует мой репозиторий.
Есть по нему пара косячков, возможно даже взаимосвязанных. Во-первых файл libffmpeg.so не удаляется при удалении моего пакета:
!!! existing preserved libs:
>>> package: www-client/yandex-browser-ffmpeg-codecs-59.0.3071.109
* - /opt/yandex/browser-beta/libffmpeg.so
* used by /opt/yandex/browser-beta/yandex_browser (www-client/yandex-browser-beta-17.6.1.835_p1)
Он удаляется автоматически при удалении www-client/yandex-browser-beta
.
Ни emerge @preserved-rebuild
ни revdep-rebuild
не помогут, только удаление браузера.
Во-вторых мне repoman чего-то ругался:
$ repoman full
RepoMan scours the neighborhood...
dependency.bad [fatal] 12
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(default/linux/amd64/13.0)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(default/linux/amd64/13.0/desktop)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(default/linux/amd64/13.0/desktop/gnome)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(default/linux/amd64/13.0/desktop/gnome/systemd)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(default/linux/amd64/13.0/desktop/plasma)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(default/linux/amd64/13.0/desktop/plasma/systemd)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(default/linux/amd64/13.0/developer)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(default/linux/amd64/13.0/systemd)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(hardened/linux/amd64)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(hardened/linux/amd64/no-multilib)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(hardened/linux/amd64/no-multilib/selinux)
['www-client/yandex-browser-beta']
www-client/yandex-browser-ffmpeg-codecs/yandex-browser-ffmpeg-codecs-59.0.3071.109.ebuild: RDEPEND: ~amd64(hardened/linux/amd64/selinux)
['www-client/yandex-browser-beta']
Note: use --include-dev (-d) to check dependencies for 'dev' profiles
Please fix these important QA issues first.
RepoMan sez: "Make your QA payment on time and you'll never see the likes of me."
Когда я пробовал закомментировать в ebuild'е зависимость от браузера - ругаться переставал. Но я строчку всё равно оставил. Есть у меня подозрение, что он ругается из-за того, что yandex-browser-beta хоть и присутствует в оверлее yandex, но отсутствует в основном репозитории gentoo, где его repoman пытается найти.
По фен шую нужен ebuild типа вот этого для Arch: https://aur.archlinux.org/packages/yandex-browser-ffmpeg-codecs/ https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=yandex-browser-ffmpeg-codecs
первый "косяк" - just as planned. Ибо Gentoo, всё же, рассчитана не на проприетарщину (а фича сделана чтобы не ломать софт при обновлении зависимостей) :) второй - из-за того что в мастерах оверлея указан только gentoo. А яндексо- оверлей — нет.
Поэтому репоман ищет зависимости только в самом оверлее и в мастер-репе (gentoo). Ни там ни там не находит, потому и ругается.
к слову, можно было бы и сюда законтрибьютить тот ебилд :)
Хм, ну да, можно ж pull request сделать, чё-то я затупил. Ща.
@programmador, да, вчера в Арче тоже увидел этот пакет, на неделе запилю ебилд из него, но это будет 1й пункт из перечисленных @msva вариантов.
@alexws54tk я пока приму пулл-реквест и подправлю немного (переименую в *-bin чтобы не конфликтовал с твоим, и изменю зависимости (логичнее чтобы я-браузер от кодеков зависел, а не наоборот).
Но, не помню, говорил ли я уже или нет, но я не то, чтобы особо активно пользуюсь яузером, так что потесчу только поверхностно.
Кстати, я придумал как пофиксить RPATH и заодно впилю этот фикс. Правда, я что-то не могу найти зачем мы симлинкаем libudev (что-то судя по ldd от него никто не зависит)
А вот судя по грепу - бинарник yandex_browser таки содержит упоминание .0
удеволибы.
Видимо, DL()'ит. А учитывая, что .0 больше нету - придётся тянуть враппер в зависимости
а на чём без логина куда-либо можно потестить что 264 видео заработало? А то в ютубе всё vp9 и играется с той libffmpeg что в коробке :(
В общем, всё, проверил, работает, всё пофиксил. Яузер бампну на пару ревизий.
* Package: www-client/yandex-browser-beta-17.6.1.835_p1-r1
* Repository: yandex
* Maintainer: yandex-gentoo-overlay@mva.name alex@ws54.tk
* USE: abi_x86_64 amd64 elibc_glibc kernel_linux l10n_ru userland_GNU
* FEATURES: preserve-libs sandbox userpriv usersandbox
* Determining the location of the kernel source code
* Found kernel source directory:
* /usr/src/linux
* Found kernel object directory:
* /lib/modules/4.9.34-gentoo/build
* Found sources for kernel version:
* 4.9.34-gentoo
* Checking for suitable kernel configuration options...
* USER_NS is required for sandbox to work
* CONFIG_COMPAT_VDSO causes segfaults (bug #556286)
* Please check to make sure these options are set correctly.
* Failure to do so may cause unexpected problems.
>>> Unpacking source...
>>> Unpacking yandex-browser-beta-17.6.1.835_p1.deb to /var/tmp/portage/www-client/yandex-browser-beta-17.6.1.835_p1-r1/work
>>> Unpacking data.tar.xz to /var/tmp/portage/www-client/yandex-browser-beta-17.6.1.835_p1-r1/work
>>> Source unpacked in /var/tmp/portage/www-client/yandex-browser-beta-17.6.1.835_p1-r1/work
>>> Preparing source in /var/tmp/portage/www-client/yandex-browser-beta-17.6.1.835_p1-r1/work ...
stat: No such file or directory
* ERROR: www-client/yandex-browser-beta-17.6.1.835_p1-r1::yandex failed (prepare phase):
* Failed to fix library rpath (yandex_browser-sandbox)
*
* Call stack:
* ebuild.sh, line 115: Called src_prepare
* environment, line 3068: Called die
* The specific snippet of code:
* patchelf --remove-rpath "${YANDEX_HOME}/yandex_browser-sandbox" || die "Failed to fix library rpath (yandex_browser-sandbox)";
*
* If you need support, post the output of `emerge --info '=www-client/yandex-browser-beta-17.6.1.835_p1-r1::yandex'`,
* the complete build log and the output of `emerge -pqv '=www-client/yandex-browser-beta-17.6.1.835_p1-r1::yandex'`.
* The complete build log is located at '/var/tmp/portage/www-client/yandex-browser-beta-17.6.1.835_p1-r1/temp/build.log'.
* The ebuild environment file is located at '/var/tmp/portage/www-client/yandex-browser-beta-17.6.1.835_p1-r1/temp/environment'.
* Working directory: '/var/tmp/portage/www-client/yandex-browser-beta-17.6.1.835_p1-r1/work'
* S: '/var/tmp/portage/www-client/yandex-browser-beta-17.6.1.835_p1-r1/work'
Это случайно не из-за ревизии? Есть мысль, что название папки какой-то теперь не совпадает.
вот прямо сейчас проверил - прекрасно устанавливается... А что если открыть ебилд в текстовом редакторе и продублировать соответствующую строчку, только в одной из них (та, что раньше) добавить в начало echo?
Какой путь покажет?
ну и pwd тоже.
А ещё я сейчас запушу коммит, который это может пофиксить.
Но от инфы, которую я попросил выше - всё равно бы не отказался :)
Перед patchelf......
добавил:
elog "YANDEX_HOME=${YANDEX_HOME}"
elog "src_prepare is called in "`pwd`
elog "ls in src_prepare: "`ls`
и получил:
* YANDEX_HOME=opt/yandex/browser-beta
* src_prepare is called in /var/tmp/portage/www-client/yandex-browser-beta-17.6.1.835_p1-r1/work
* ls in src_prepare: opt usr
то ли ничего криминального, то ли я не понял, в какой строке pwd
дёргать
elog "ls in ${YANDEX_HOME}: "`ls ${YANDEX_HOME}`
даёт:
ls in opt/yandex/browser-beta: Extensions brand_config browser_100_percent.pak browser_200_percent.pak clids.xml compiz.sh default-app-block find_ffmpeg i10n_resource.json icudtl.dat lib locales master_preferences nacl_helper nacl_helper_bootstrap nacl_irt_x86_64.nexe natives_blob.bin partner_config product_logo_128.png product_logo_16.png product_logo_22.png product_logo_24.png product_logo_256.png product_logo_32.png product_logo_32.xpm product_logo_48.png product_logo_512.png product_logo_64.png resources resources.pak signature.dat snapshot_blob.bin trusted.json xdg-mime xdg-settings yandex-browser yandex-browser-beta yandex_browser yandex_browser-sandbox
P.S. Коммит не пофиксил
elog `ls -l "${YANDEX_HOME}/yandex_browser-sandbox"`
=>
-rwxr-xr-x 1 portage portage 14608 Июн 27 08:06 opt/yandex/browser-beta/yandex_browser-sandbox
Ну т.е. есть этот файл, всё ок, но patchelf не хочет его жрать
а patchelf какой версии?
Что если поставить 0.9?
Было 0.8. Поставил 0.9 - теперь устанавливается, но не запускается:
$ yandex-browser-beta
Found ffmpeg: /opt/yandex/browser-beta/libffmpeg.so
avcodec: 3756644
avformat: 3752551
avutil: 3616613
Ffmpeg version is OK! Let's use it.
[28449:28449:0729/233728.671358:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /opt/yandex/browser-beta/yandex_browser-sandbox is owned by root and has mode 4755.
--2017-07-29 23:37:28-- https://crash-reports.browser.yandex.net/submit
Распознаётся crash-reports.browser.yandex.net… ошибка: Временный сбой в разрешении имен.
wget: не удаётся разрешить адрес «crash-reports.browser.yandex.net»
Failed to get crash dump id.
Report Id:
Аварийный останов (core dumped)
Ща попробую старую версию, до b745ee21e1ae3c2c8f6fc830d8d082178a4c11d5
то же самое и на старой, без ${S}.
кстати, в manpage patchelf'а 0.8 не было опции --remove-rpath. Но, видимо, она на самом деле была. А в 0.9 уже появилось в manpage
На всякий случай (вдруг у меня в системе чё-то сломано) попробовал взять код ebuild'а из старой ревизии (ещё до моего PR'а): https://github.com/yandex-gentoo/overlay/blob/cedb69b4ce056b8633654c3b4dcfc11bbe66208f/www-client/yandex-browser-beta/yandex-browser-beta-17.6.1.835_p1.ebuild Ставится и работает.
странно. У меня ставится и работает. Причём, без SUID'а.
Сейчас с SUID'ом закоммичу. Если не поможет, то уже завтра.
Что странно - почему у меня запускается и работает без SUID'а, а у тебя - нет...
а сейчас работает, после того, как я его с SUID'ом запушил?
Да, теперь работает. Наверное suid для запуска браузера - это слегка не по фен шую? Странно, на фиг оно ему. Я правильно понимаю, старый ebuild у меня работал благодаря вот этому? https://github.com/yandex-gentoo/overlay/blob/cedb69b4ce056b8633654c3b4dcfc11bbe66208f/www-client/yandex-browser-beta/yandex-browser-beta-17.6.1.835_p1.ebuild#L90
Я-таки дособирал ебилд для сборки libffmpeg.so
, версия сорцов хромиума совпадает с таковой в яузере.
Бинарного deb-пакета под свежий яузер нету.
ссылка "ебилд" ведёт на 404. Но неважно. Снёс браузер с бинарными кодеками (т.е. 2 пакета), затем установил с новыми, которые из сорцов. Всё гут, работает шикарно.
chromium шибко часто обновляется...
emerge www-client/yandex-browser-beta
Local copy of remote index is up-to-date and will be used.
* IMPORTANT: 4 news items need reading for repository 'gentoo'.
* Use eselect news read to view new items.
Calculating dependencies... done!
>>> Verifying ebuild manifests
>>> Emerging (1 of 3) www-plugins/yandex-browser-ffmpeg-codecs-bin-60.0.3112.113::yandex
* Fetching files in the background.
* To view fetch progress, run in another terminal:
* tail -f /var/log/emerge-fetch.log
>>> Downloading 'http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/chromium-codecs-ffmpeg-extra_60.0.3112.113-0ubuntu0.17.04.1369_amd64.deb'
--2017-11-04 20:01:07-- http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/chromium-codecs-ffmpeg-extra_60.0.3112.113-0ubuntu0.17.04.1369_amd64.deb
Resolving security.ubuntu.com (security.ubuntu.com)... 91.189.88.162, 91.189.91.26, 91.189.88.152, ...
Connecting to security.ubuntu.com (security.ubuntu.com)|91.189.88.162|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-11-04 20:01:08 ERROR 404: Not Found.
!!! Couldn't download 'chromium-codecs-ffmpeg-extra_60.0.3112.113-0ubuntu0.17.04.1369_amd64.deb'. Aborting.
* Fetch failed for 'www-plugins/yandex-browser-ffmpeg-codecs-bin-60.0.3112.113', Log file:
* '/var/calculate/tmp/portage/www-plugins/yandex-browser-ffmpeg-codecs-bin-60.0.3112.113/temp/build.log'
>>> Failed to emerge www-plugins/yandex-browser-ffmpeg-codecs-bin-60.0.3112.113, Log file:
>>> '/var/calculate/tmp/portage/www-plugins/yandex-browser-ffmpeg-codecs-bin-60.0.3112.113/temp/build.log'
* Messages for package www-plugins/yandex-browser-ffmpeg-codecs-bin-60.0.3112.113:
* Fetch failed for 'www-plugins/yandex-browser-ffmpeg-codecs-bin-60.0.3112.113', Log file:
* '/var/calculate/tmp/portage/www-plugins/yandex-browser-ffmpeg-codecs-bin-60.0.3112.113/temp/build.log'
@usern1983, я выложил «нормальный» ебилд, смотри мой комментарий выше.
В текущей версии Яузера версия хромиума 60.0.3112.113, а убунтушного дебпакета с такой версией нету.
Если уж так хочется пользовать собранный кем-то libffmpeg
, то возьмите или любой другой дебпакет,
или вот собранный мной пакет yandex-browser-ffmpeg-codecs-60.0.3112.113.tbz2.
ЗЫ: обновил бинарный ебилд до версии 62.0.3202.75 в последний раз.
@msva, не вижу смысла обновлять ебилд бинарных убунтушных кодеков несколько раз в неделю. Как насчёт выпилить yandex-browser-ffmpeg-codecs-bin
из дерева?
@msva, не вижу смысла обновлять ебилд бинарных убунтушных кодеков несколько раз в неделю. Как насчёт выпилить
yandex-browser-ffmpeg-codecs-bin
из дерева?
Ну, можно и выпилить, если текущая версия работает :) --
У всех нормально собирается yandex-browser-ffmpeg-codecs-67.0.3396.99
с помощью sys-devel/clang-6.0.1
? У меня сборка падает с ошибками clang-6.0: linking error
.
Вроде бы писал уже здесь сообщение с прикреплением полного лога сборки на 13 мб, но, видимо, так и не нажал "отправить".
Аналогично. Я не писал ничего, т.к. по логу шланга не понял что именно падает
Попробую 5-й версией собрать.
@alexws54tk Александр, не подскажешь, ты какой версией clang собирал плагин, который прикреплён архивом на главной странице оверлея?
@band-a-prend
Сергей, у меня до сих пор стоит clang-5.0.1
и gcc-6.4.0
. Собрано с их помощью.
Попробую за выходные обновить шланг, и собрать кодэки.
@programmador Александр, у тебя вот такое нашёл в билдлоге
[5500/5923] /usr/bin/python2 "../../build/toolchain/gcc_solink_wrapper.py" --readelf="readelf" --nm="x86_64-pc-linux-gnu-nm" --sofile="./libgfx.so" --tocfile="./libgfx.so.TOC" --output="./libgfx.so" -- x86_64-pc-linux-gnu-clang++ -shared -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--no-as-needed -lpthread -Wl,--as-needed -Wl,--export-dynamic -Wl,-O1 -Wl,--as-needed -o "./libgfx.so" -Wl,-soname="libgfx.so" @"./libgfx.so.rsp"
FAILED: libgfx.so libgfx.so.TOC
/usr/bin/python2 "../../build/toolchain/gcc_solink_wrapper.py" --readelf="readelf" --nm="x86_64-pc-linux-gnu-nm" --sofile="./libgfx.so" --tocfile="./libgfx.so.TOC" --output="./libgfx.so" -- x86_64-pc-linux-gnu-clang++ -shared -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--no-as-needed -lpthread -Wl,--as-needed -Wl,--export-dynamic -Wl,-O1 -Wl,--as-needed -o "./libgfx.so" -Wl,-soname="libgfx.so" @"./libgfx.so.rsp"
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
Подтвердить не могу, т.к. шестой ллвм и, соответственно, шланг не устанавливаются. Разбираюсь.
С версиями sys-devel/clang-5.0.2
и sys-devel/llvm-5.0.2
всё собирается.
На вышеупомянутой странице есть аналогичная версия пакета кодеков (ранее такого пакета, похоже, не было).
Распаковал и подсунул ручками, работает. Т.е. теоретически можно бинарный пакет сбацать как у нас был раньше, временно вместо сборки из исходников.
Кто захочет так же ручками подсунуть libffmpeg.so - смотрите внимательно на архитектуру процессора и наличие суффикса extra в названии deb пакета, а то я тут учудил у себя немного, некоторое время не мог понять, почему не работает.
@programmador
Александр, потрошение убунтушного пакета делайте самостоятельно. Для ленивых собирать из исходников я специально выкладываю гентушный пакет с libffmpeg.so
на странице оверлея.
По факту — это .tar.bz2 архив с libffmpeg.so
внутри.
Т.е. теоретически можно бинарный пакет сбацать как у нас был раньше, временно вместо сборки из исходников.
Такое у нас раньше было, но повторюсь
не вижу смысла обновлять ебилд бинарных убунтушных кодеков несколько раз в неделю
у меня нету столько лишнего времени.
Гугля штампует версии Хрома и Хромиума как горячие пирожки и у них есть гадкая привычка подтирать предыдущие версии пакетов на всех источниках. Ябраузер же выходит не так часто — от силы один (редко два) раза в месяц.
На странице оверлея версия ffmpeg старая. Убунтушные сборки больше не подтягиваются яндекс браузером - говорит, что не может распознать версию ffmpeg. Попытки нагагуглить что-нибудь рабочее завели меня сюда: http://packman.links2linux.org/package/chromium-ffmpeg-extra Похоже, это rpm пакет из openSUSE_Leap 15.0 и .so из него прекрасно завёлся.
На странице оверлея версия ffmpeg старая.
Это связано с проблемами сборки кодеков при помощи шланга шестой и седьмой версий. См. сообщения в этой ветке и соседний тикет. У меня пока не получается стабильной не падающей сборки на этих версиях. Поэтому нету нового ебилда.
@programmador Сегодня наткнулся на пакет кодеков для яндекса, сделанный из кодеков для оперы, сравнил с нашим ебилдом, немного почесал, и — оно у меня собралось. www-plugins/yandex-browser-ffmpeg-codecs-70.0.3538.102-r1.ebuild и соотв. пект www-plugins/yandex-browser-ffmpeg-codecs-70.0.3538.102-r1.tbz2
Пробуй.
Собрал, но не работает:
Found ffmpeg: /opt/yandex/browser-beta/libffmpeg.so
avcodec: 3806570
avformat: 3805541
avutil: 3674726
FFmpeg version is too old. Need:
avcodec: 3809125
avformat: 3805799
avutil: 3674981
Добавил ебилд версии 71.0.3578.99
Теперь всё ОК.
% cd /opt/yandex/browser-beta
% ./find_ffmpeg
Found ffmpeg: /opt/yandex/browser-beta/libffmpeg.so
avcodec: 3809125
avformat: 3805799
avutil: 3674981
Ffmpeg version is OK! Let's use it.
/opt/yandex/browser-beta/libffmpeg.so
Добавьте пожалуйста поддержку установки libffmpeg из chromium-codecs-ffmpeg-extra чтобы появилась поддержка h.264 https://yandex.ru/support/browser/troubleshooting/functional.xml#video-linux https://mirrors.kernel.org/ubuntu/pool/universe/c/chromium-browser/