サポートチケットを作成する
フォローする

Q100392: Nuke 11がQtプラットフォームプラグイン "xcb"を見つけられない、またはロードできないため、Ubuntuで起動できません

症状

UbuntuでNuke 11.0v1以降を起動しようとすると、次のようなエラーが発生する可能性があります。

原因
この問題は、 VFXリファレンスプラットフォームに準拠するために、内部で使用されているQtバージョンを5.6.1にアップグレードしたために、Nuke 11.0v1で発生し始めました。
上記のエラーは、Nuke 11のインストールディレクトリに含まれるlibstdc ++。soライブラリに関連するものであることがわかりました。このライブラリバージョンはUbuntuが持っているシステムバージョンと矛盾しているように見えます、そしてこれはNukeが起動しない原因になっているようです。

対策
競合は私たちのエンジニアリングチームに報告され、将来のリリースで対処されるバグ報告として記録されました。あなたはその進捗状況を追跡し、下記のURLから通知を購読することができます。

TP 340253 - Nuke 11がQtプラットフォームプラグイン "xcb"を見つけられなかったりロードできなかったりしたため、Ubuntuで起動に失敗する

この問題を回避するには、まず、表示されているエラーが同じライブラリの競合によるものであることを特定する必要があります。

エラー原因の特定

まず、端末で次のコマンドを実行します。

LD_DEBUG=libs /usr/local/Nuke11.1v2/Nuke11.1

これで端末に長い出力が表示されるはずですが、終わり近くでは、次のような行が表示されるはずです。

/usr/local/Nuke11.0v4/libstdc++.so.6: error: version lookup error: version `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/libmirclient.so.9) (fatal)

この行が出力に表示された場合は、エラーが同じlibstdc ++のためであることを示しているので、Ubuntuで確認されたライブラリの競合と上記のバグとして記録されました。

エラー回避策

この問題を回避するには、Nukeに同梱されているものではなく、このライブラリのシステムバージョンを強制的に使用する必要があります。

端末で次のコマンドを実行してください。

locate *libstdc++*

これはlibstdc ++を名前に含むすべてのファイルを検索します、そしてこれはあなたに端末で同様の出力を与えるはずです:

/usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.so
/usr/lib/i386-linux-gnu/libstdc++.so.6
/usr/lib/i386-linux-gnu/libstdc++.so.6.0.21
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
/usr/local/Nuke11.0v4/libstdc++.so
/usr/local/Nuke11.0v4/libstdc++.so.6
/usr/local/Nuke11.0v4/libstdc++.so.6.0.18
/usr/local/Nuke11.1v2/libstdc++.so
/usr/local/Nuke11.1v2/libstdc++.so.6
/usr/local/Nuke11.1v2/libstdc++.so.6.0.18

出力から探している行は/usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.soです。これはlibstdc ++のシステムバージョンを識別しますので 、他のものより先にロードする必要があります。

次に、次のコマンドを実行することによってl ibstdc ++。soがプリロードされ、Nukeに同梱されているバージョンの代わりにシステムバージョンが使用されます。

export LD_PRELOAD=/usr/lib/gcc/x86_ 64-linux-gnu/5/libstdc++.so export LD_PRELOAD=/usr/lib/gcc/x86_ 64-linux-gnu/5/libstdc++.so

これで、Nuke 11を通常どおりに起動できるはずです。

参考文献
上記の回避策では、 エクスポート LD_PRELOAD = / usr / lib / gcc / x86_を実行する必要があります。 64-linux-gnu / 5 / libstdc ++。so Nukeを起動するすべての端末セッションでコマンドを実行します。

ワークフローを単純化するために、代わりにNukeを起動する前にこのコマンドを実行するNukeラッパースクリプトを作成することができます。ラッパースクリプトを使用するもう1つの利点は、 エクスポートLD_PRELOAD = / usr / lib / gcc / x86_のみが実行されることです。 64-linux-gnu / 5 / libstdc ++。so Nukeを起動するときにコマンドを実行するので、このライブラリに依存している可能性のある他のアプリケーションに干渉することはありません。

たとえば次の行をコピーしてテキストエディタに貼り付けることで、Nuke 11.1v2用のラッパースクリプトを作成できます。

export LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/5/libstdc++.so
/usr/local/Nuke11.1v2/Nuke11.1

このファイルに拡張子.shを付けて保存します(例: ' Nuke 11.1v2.sh ')。その後、このスクリプトを端末から起動してNukeを開くことができます。

さらに、ユーザーの.bashrcファイルに次の行を追加してaliasコマンドを作成することもできます。

alias nuke11.1v2 ='~/ filepath /Nuke11.1v2.sh'

これにより、.shスクリプトを実行し、起動前にLD_PRELOAD環境変数を設定してNuke 11.1v2を起動するために、端末にnuke 11.1v2と入力することができます。

注:他のバージョンのNukeを使用するには、上記の例でバージョン番号を更新し、新しい.shファイルのコピーを保存する必要があります。

さらなる助け
Ubuntuでこの問題が発生していて、上記の回避策を実行してもNukeを起動できるようにするには問題が解決しない場合は、サポートチケットを開いてください。問題の症状、これまでに実行したトラブルシューティング手順、および使用している正確なOSビルドをお知らせください。

サポートチケットを開く方法の詳細については、 Q100064:サポートチケットの入手方法に関する記事を参照してください。

この記事は役に立ちましたか?
/

We're sorry to hear that!

Please tell us why.
2人中1人がこの記事が役に立ったと言っています

コメント