web-dev-qa-db-ja.com

glibcにはOSに2.29が必要であり、最大2.27を必要とするアプリが1つあるので、両方が機能しますか?

Opensuseタンブルウィードにはglibc2.29が付属しているため、システム内の他のすべてのものはそれに依存しています。

ただし、CrashPlanDesktopがあり、最大2.27が必要です。

2.27のopenSUSEリポジトリを簡単に見つけました。

ただし、インストールしようとすると、次のようになります。

rpm: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by /usr/lib64/libpopt.so.0)

どうすればこれを解決できますか?

CrashPlanDesktopはサービスと通信する必要があります。

Chrootなどを使用できますか?

実行可能ファイルのあるフォルダーにrpmを抽出できますか?

さらに、私はこのメッセージを受け取りましたが、それが何を意味するのかわかりません

コード:d6 21 12 e3 c4 a7 81 1d 7a 48 5f 26 5f 37 b8 f1 ed f5 f8 7c 86 e8 25 4c a5 5a 29 b7 45 41 0c cc a7 76 95 b4 93 d9 d8 5e 4c b8 f4 95 11 c4 9f 2c fc 6d a0 1d 3c 50 4a e0 5a 6b 48 18 f7 b9 ab

2
cybernard

私は実際にこの回避策を実行することができました。Electron2.0.8をダウンロードし、アーカイブからlibnode.soを抽出し、/ usr/local/crashplan/electron/libnode.soをelectron 2.0.8Zipからのものに置き換えました。

私のシステムはDebianですが、これはOpenSuseでも機能するかもしれないと思います。

(これはもちろん非公式であり、Code42や他の誰かによってサポートされていません)

0
AMeiri

Glibcには下位互換性があるため、glibc 2.27で動作するようにビルドされたコードは、glibc2.29でも動作し続けるはずです。

下位互換性を実装するために、glibcはシンボルのバージョン管理を使用して、関数がいつ導入されたかをマークします。関数が動作を変更する場合(特にプロトタイプを変更する場合)、そのバージョンに新しいシンボルバージョンが導入されます。ただし、古いglibc(古い動作に依存)でビルドされたコードは、古い動作の古いシンボルバージョンにバインドされます。

ほとんどのLinuxディストリビューションは、複数のglibcバージョンの並列インストールを実際にはサポートしていません。これは、フルバージョンを含むパスにインストールする必要があるためです(「SONAME」と呼ばれるライブラリ自体の名前は、すべてのglibcバージョンで同じです。したがって、それらを区別するために単独で使用することはできません。)しかし、どちらをどのバイナリに使用するかを決定する際に問題があります。したがって、ライブラリバージョンごとに個別のローダー(ダイナミックリンカー)が必要ですが、バージョンごとにバイナリをビルドするときにインタープリターを設定する必要があります(または既存のバイナリにインタープリターにパッチを適用します)。つまり、複数のバージョンのglibcですが、セットアップが複雑で、使用するのが非常に面倒です。

アプリケーションが本当に glibc 2.27を必要とし、glibc 2.29で動作しない場合(ただし、前述のように、これは動作するはずなので、glibc 2.29ではバグになります) 、次に最善の策は、デフォルトでglibc2.27を出荷するLinuxディストリビューションで実行することです。

ホストのLinuxディストリビューションを変更するオプションがない場合は、コンテナーでアプリケーションを実行することを検討し、適切なバージョンのglibcを使用してディストリビューションからコンテナーイメージをビルドします。

0
filbranden