David Bureš

:blog

Blackmagic Resolve na Arch Linuxu

Firma Blackmagic nedávno do světa vypustila zdarma verzi jejich editoru Davinci Resolve. Oficiálně podporuje Red Hat a CentOS, ale teoreticky my měl jít nainstalovat i na jiných distribucích. Já to zkusil na Arch Linuxu.

Výber softwaru na editování videí na Linuxu nebyl ještě nedávno slavný. Jediné, co se před pár lety dalo k tomuto účelu využít byly programy jako OpenShot nebo PiTiVi. Neříkám, že by byly nějak špatné, obyčejný uživatel s nimi udělal co potřeboval. Dalo se s nimi stříhat, přidávat hudbu, a OpenShot dokonce podporoval import 3D animací z Blenderu; praví borci používali Cinelerru a Flowblade. Co nám chybělo byl software pro profesionální úpravu, který by umožnil korekci barev, nedestruktivní střih, NLE editaci a transformace, které nevypadaly jako z minulého století. Před třemi roky přišel na Linux editor Lightworks a navždy změnil scénu Linuxových editorů. Lightworks byl první profesionální editor dostupný na Linuxu a jeho schopnosti tomu odpovídaly; podporoval 4K rozlišení, export do Blue Ray (pro chudáky, co to potřebují), nedestruktivní střih a pokročilé efekty včetně editace interpolačních křivek. Po jeho příchodu na povrch opět vyplaval software jako KDENlive od vývojářů prostředí KDE a množství dalších, starších editorů.

Firmu Blackmagic jsem už nějaký čas sledoval. Zdarma verze jejího kompozitoru a editoru speciálních efektů Fusion Linux už rok podporuje, a prekvapivě lehce se s ní pracuje. Předevčírem se ke mně dostala výborná zpráva: zdarma verze editoru Resolve vyšla pro Linux. Resolve jsem už používal na Windows, a byl jsem s jeho funkcemi spokojený. Obsahoval všechno, o čem jsem výše mluvil a i něco navíc: propojení s Fusion pomocí funkce Fusion Connect. Windows mám vedle Linuxu nainstalovaný pouze kvůli Resolve, a teď mi Blackmagic umožnilo jej úplně vymazat. Přesněji jsem v to doufal.

Po stažení a rozbalení instalačního archivu uvidíte dva soubory, ReadMe.txt a obrovský instalační skript. Soubor ReadMe popisuje instalaci, mluví o updatování a instalaci ovladačů grafické karty (bez opužití repozitářů, chce po uživateli, aby si ovladač stáhl ze stránek NVIDIA. Proč je to špatný nápad je kapitola sama o sobě), a říká něco i o instalaci ovladačů pro obskurní záznamové karty. Dál nás informuje o instalaci DeckLink driveru; nechápu, proč tento balíček nemohl být zahrnut přímo v instalaci Resolve. Stejným způsobem je dopravován i Fusion a instalace by nemohla být lehčí: s použitím terminálu přejdete do složky a jako root rozjedete instalační skript. Ten něco vypíše a po úspěšném ukončení instalace se zavře. Poté můžete Resolve spustit skrze své grafické prostředí, nebo spuštěním./opt/resolve/bin/resolve.

Celý natěšený jsem hned Resolve spustil. Hlavou se mi začaly honit nápady na všechna ta úžasná videa, která s pomocí Resolve vytvořím; nic se ale nestalo. A už jsem natěšený nebyl.

Chybějící knihovny

Otevřel jsem terminál zkusil jsem to spuštění znovu, tentokrát přes cestu popsanou výše, a hle, ihned vyskočila hláška o chybějící knihovně, přesněji libMXF.so. A tak jsem se pustil do hledání. Příkazpkgfile libMXF.so nic neukázal, znamenalo to tedy, že žádný balíček v oficiálních repozitářích ani v Arch User Repository tuto knihovnu neposkytuje. „Tady začíná sranda“, řekl jsem si v duchu.

Zuřivé googlování mě zavedlo k chudákovi se stejným problémem, tématu bez jediné odpovědi. Po chvíli jsem zjistil, že tato knihovna je součástí balíčku Ingex, a sama je přístupná pouze jako zdrojový kód pro zkompilování. Do toho se ovšem pouštět nechci, tak jsem si řekl, že se podívám, zda nechybí nějaké jiné knihovny. Mimochodem, poslední update této knihovny pochází z roku 2012.

Díky problémům se Steamem je mi už známý příkaz ldd, který vypíše symlinky pro všechny knihovny, co program pouzívá. Po zadání
ldd /opt/resolve/bin/resolve vyšlo najevo, že chybí víc, než jedna knihovna. Celý výpis je dostupný zde.
Resolve nemohlo najít libMXF.so, libfraunhoferdcp.so, libSMDK-Linux-x64.so.4.7, libmp4decMT.so, libmp4encMT.so, libsonyxavcenc.so, liblog4cxx.so.10, libopencv_calib3d.so.2.4, libopencv_features2d.so.2.4, libopencv_highgui.so.2.4, libopencv_imgproc.so.2.4, libopencv_core.so.2.4, libopencv_flann.so.2.4, libopencv_video.so.2.4, libSonyRawDev.so.2, libGLEW.so.1.9, libgvc.so.6, libcgraph.so.6, libcdt.so.5, libxdot.so.4, libpathplan.so.4, libDNxHR.so, libimf.so, libirc.so, libsvml.so, libintlc.so.5, libArriRawSDK.so.5.3, libgvcodec.so, libcrypto.so.10, libssl.so.10, libCg.so a libCgGL.so.

Sakra. Než jít knihovnu po knihovně a hledat každou z nich, jelikož ani jedna není v repozitářích, jsem doufal, že je obsahuje alespoň instalátor, abych se do něj mohl podívat a knihovny vytáhnout ručně. Instalátor se možná tváří jako shellový skript, je to ovšem pouze obyčejný archiv s přilepeným skriptem. Takovýto skript je možné vytvořit s použitím programutail, já s ním ovšem neumím pracovat a manuál se mi zatím nechce číst, tak jsem na to šel jinak.

Úpravy instalátoru a instalace chybějících knihoven

S pomocí textového editoru micro jsem otevřel celý instalátor. Prvních pár řádků skutečně zabíral pouze instalační skript, který jsem z instalátoru vytáhnul a můžete se na něj podívat zde. Zbytek byly náhodné znaky, což už byl samotný archiv. Po pár minutách procházení jsem si všimnul, že při instalaci je ve složce /tmp vytvořena podsložka s více méně náhodným názvem, kam se při instalaci ukládají extrahované soubory. Další procházení skriptu odhalilo, že instalátor obsahuje vlastní verbose (podrobnější) mód, který by nám mohl odhalit více o tom, co se při instalaci děje. Aktivace verbose módu byla pouze o změně hodnoty proměnné ve vrchní části skriptu. Teď už se někam dostáváme.

Zapnul jsem podrobný mód a opět spustil instalátor v terminálu s použitímsudo ./DaVinci_Resolve_12.5.5_Linux.sh. Instalátor se mě zeptal, jestli může archiv rozbalit a dokonce mi dal i jméno složky, do které ho rozbalí. Odpověděl jsemY (ano) a skript se pustil do práce. Po rozbalení se zastavil s dotazem, zda pokračovat spuštěním./install.sh. V tomto momentě jsem ho nechal čekat a vydal se prozkoumat vytvořené soubory.

Složka naštěstí obsahuje podsložku libs, ve které se nachází všechny potřebné knihovny. Než jsem je zkopíroval, vytvořil jsem si zálohu systémových knihoven pomocí příkazusudo cp -r /usr/lib /data/david/lib-zaloha. Dále jsem překopíroval všechny soubory z dočasné složky příkazemcp -r /tmp/selfgz731631502 ~/Stažené/ResolveDecompress a provedl další zálohu, tentokrát složky libs z rozbaleného instalátoru pomocícp -r ~/Stažené/ResolveDecompress/libs /data/david/libs-zaloha-resolve. Nakonec jsem rozbalil všechny archivy ve složce se zálohou Resolve knihoven pomocí programufile-roller. Teď přišlo na řadu kopírování knihoven do složky se systémovými.

Tento krok jsem provedl ručně. Příkazemsudo nautilus jsem spustil prohlížeč souborů jako root a ručně překopíroval všechny knihovny z /data/david/libs-zaloha-resolve do /usr/lib; každý konflikt jsem přeskočil. Nakonec jsem příkazemsudo ldconfig -n -v /usr/lib přidaným knihovnám vytvořil linky. Když jsem teď spustil Resolve, stále chyběly knihovny libMXF.so, liblog4cxx.so.10, libArriRawSDK.so.5.3, libcrypto.so.10 a libssl.so.10. Kompletní výpis terminálu najdete zde. Knihovny libMXF, liblog4cxx.so.10 a libArriRawSDK.so.5.3 jsem našel v jedné z podsložek libs, a libcrypto.so.10 s libssl.so.10 byly špatně pojmenované; jejich jména jsem opravil použitím příkazucd /usr/lib && sudo ln -s libssl.so.1.0.0 libssl.so.10 && sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10. Teď zbývá pouze znovu zadatsudo ldconfig -n -v /usr/lib a budeme hotoví.

SIGABRT

Jenže nejsme. Teď Resolve při každém spuštění SIGABRTne. Doporučuji pustit pozitivně naladěnou hudbu a jdeme dál.

Teď přichází na řadu program gdb, čili GNU Debugger. Pustíme přes něj Resolve použitímgdb /opt/resolve/bin/resolve a do dialogu napíšeme run. Tím se Resolve spustí a gdb zaznamenává, co se v něm děje. Jakmile Resolve spadne, napíšeme do toho samého dialogubt (zkratka pro backtrace). GDB mi vypsalo tohle. Jak vidíme, chyba se stala někde v QT, což je knihovna pro vytváření grafických prostředí. Teď můžeme gdb zavřít napsánímquit ay. Chvíli jsem prozkoumával složku, do které se Resolve nainstalovalo (/opt/resolve) a přišel jsem na to, že si Resolve vytváří vlastní logy do složky /opt/resolve/logs. Otevřel jsem soubor ResolveDebug.txt, který obsahoval následující text.

V tomto momentu mi začaly blbnout jiné programy. OBS Studio padalo se stejnou chybou, podobně jako Teamspeak. Oba programy jsou napsané v QT; vypadalo to, že se rozbilo celé prostředí. Než procházet celý systém a hledat chyby jsem se rozhodl přeinstalovat systém a jako jediné prostředí nainstalovat KDE.

A je to tu zase. Už se mi v tom nechce drbat, tak jsem použil příkaz ldd /opt/resolve/bin/resolve na zjištění chybějících knihoven, a opět chybí ty samé jako při předchozím pokusu. V tomto momentu mé snahy vzdávám.

Kdyby instalátor fungoval jak má, ušetřil bych několik hodin. Resolve je v tomto momentu na mém systému nepoužitelné a doufám, že Blackmagic zkusí problémy zde popsané vyřešit.