「共有オブジェクトファイルlibudev.so.0を開けません」エラーを解決するにはどうすればよいですか?


81

Ubuntu 64でGame Dev Tycoonを実行しようとしています。上記のオブジェクトを要求します。

私は走りましたがsudo apt-get install libudev1:i386、すでにインストールされています。

私は持っている/lib/i386-linux-gnu/libudev.so.1が、ノーlibudev.so.0どこでも。


1
これは、ミントペトラ16
igorsantos07

回答:


27

64ビットUbuntuの場合、32ビットlibudev0パッケージに含まれています。

次のコマンドでインストールできます:

sudo apt-get install libudev0:i386

このパッケージは14.04でUbuntuから削除されました。古いバージョンからインストールする必要があります。


3
libudev0:i386のアイデアを探しているときにパッケージが見つかりませんか?
ジョナサン14年

26
最終的にsudo apt-get install libudev1:i386を実行してから、sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong

Debian 64ビットにgoogle-webdesignerをインストールするには、このコマンドを入力する必要がありました
-HoboBen

2
ここから古いバージョンをインストールしてください:packages.ubuntu.com/precise/libudev0
rubo77

パッケージlibudev0は使用できませんが、別のパッケージによって参照されています。これは、パッケージが見つからないか、廃止されているか、別のソースからしか入手できないことを意味する場合があります
アーロンフランケ

199

修正するために、私はリンクlibudev.so.1しましたlibudev.so.0

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0

25
sudoのLN -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0:64ビットのために
Pisu

10
これをしないでください。問題を求めているだけです。
ドビー

1
これはPlex Home Theaterを台無しにして、libudev.so.0シンボリックリンクを削除してlibudev0:i386を再インストールすることを元に戻す
JohanBjäreholt14年

2
32ビットでは、これはコマンドです(誰かがここに到達した場合):sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
amit_saxena 14年

6
dobeyを聞いてください。これは面倒な手順です。ライアン・クライトンはそれを行うための正しい方法投稿はこちらを
ベルバート

55

Ubuntu 14.04以降の場合

私が見つけた最も簡単な方法は、.deb64ビットダウンロード32 ビットダウンロードへの直接リンク)をダウンロードし、ダブルクリックしてインストールするか、dpkgを使用してインストールすることです。

dpkg -i libudev0_175-0ubuntu9_amd64.deb

以前のバージョン

ubuntuの以前のバージョンでは、このパッケージは公式リポジトリで利用可能でした。以下を使用してインストールできます。

sudo apt-get install libudev0:i386

17
これが正しい答えです。パッケージが欠落している場合、パッケージをインストールします...それは簡単です。リンクの作成、名前の16進編集、Google Chromeの再構成、CPUの打撃、チリパウダーのいびきは現実的な解決策ではありません。
ベルバート

2
ただし、そのパッケージが使用可能な場合にのみ機能します。
タムシンマイケル

1
@TamsynMichaelパッケージはリポジトリで利用可能である必要はありません。上記のリンクからダウンロードして、公式リポジトリで利用可能なパッケージがないubuntuバージョンに手動でインストールできます。
ライアンクリクトン

これは正解です!これは全く適切な修正、無厄介シンボリックリンクか、である
藩主・ラルフ・アドルフ

これは私が見つけることができる最も簡単な方法です。リポジトリに古い依存関係を追加すると、痛みである
デニー

32

別のプログラムでも同じ問題がありましたが、ショーンの受け入れられた答えはまったく役に立ちませんでした。64ビット13.04のアップグレードインストールでは、libudev0は64ビット形式でもi386形式でも使用できません。そして、ia32-libsはすでにインストールされています。サイコロはありません。

私がしなければならなかったのは、わずかに修正されたバージョンのsenshikazeのより技術的なソリューションでした。x86_64 libディレクトリでlibudev.so.0をlibudev.so.1に手動でシンボリックリンクしました。

cd /lib/x86_64-linux-gnu/
sudo ln -sf libudev.so.1 libudev.so.0

これは私のためにそれを修正しました。


これも私のために修正しました-Ubuntu 15.04 64ビットを実行しています。本当にありがとう。
タムシンマイケル

Ubuntu 19.04で修正済み
Alexander Haroldo da Rocha

5

Node Webkitからnw実行可能ファイルを使用しようとすると、このエラーが発生する場合があります。このような:

./nw: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory

の解き方:

  1. バイナリのASCII文字列を変更できる16進エディタを入手してください。hexedit

    • ターミナル(Ctrl+ Alt+ T)で、次を実行しますsudo apt-get install hexedit
    • 端末に表示される指示に従います(必要に応じてパスワードを入力し、インストールを確認します)。
  2. ノードwebkitでディレクトリに移動します
    • 私の場合:cd ~/Dokumenty/node-webkit-*
  3. 始まる 16進エディタコマンドを使用してnwバイナリを開きsudoます。
    • 実行:sudo hexedit nw
  4. libudev.so.0ASCII文字列として検索:
    • hexeditを使用する場合:を押しTabます。
    • Ctrl+を押しSます。
    • タイプ:libudev.so.0
  5. 文字列をに変更0するlibudev.so.01、次のようになりますlibudev.so.1
    • 矢印キーを使用0してlibudev.so.0文字列を選択します。
    • 1キーボードを押します。
  6. 終了して変更を保存します。
    • Ctrl+を押しXます。
    • を押しYて変更を保存します。

できました。これは、nwの代わりにAtraciファイルを16進編集することを除いて同じ手順に従う場合のAtraciバイナリの問題も修正します。


2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nwchmod a+x fixed_nwその後、あなたはそれを実行することができ、何もインストールする必要はありません
触媒

4

ここでUbuntu 14.04で動作する唯一の答えは受け入れられた答えであり、多くのコメントがこれが将来のシステムに問題を引き起こす可能性があることを指摘しているので(私は自分自身については知りませんが)妥協を思いつきました。このスクリプトは、(端末で)rootパスワードを要求します。シンボリックリンクを作成し、アプリケーション(私の場合はポップコーンタイム)を起動します。アプリケーションを終了すると、既存のsudoセッションを使用してシンボリックリンクが削除されます。

#!/bin/sh
sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
./Popcorn-Time #replace this line with the path to the executable you want to launch
sudo rm /lib/i386-linux-gnu/libudev.so.0

LD_LIBRARY環境変数を代わりに使用する方法があるのではないかと思いますが、私はこのアイデアが好きです。
フリム

@Flimm、どうやって乗るのか教えてください。
TenLeftFingers

1
代わりにこの答えに行きました。
フリム

4

私はこの仕事をする方法を見つけましたが、かなりばかげています。

システムにGoogle Chromeがインストールされており、Chromeにはこの共有オブジェクトが埋め込まれています。そのため、Chromeインストールディレクトリにライブラリへのシンボリックリンクを作成する必要がありました。

ln -sf /opt/google/chrome/libudev.so.0 /lib/x86_64-linux-gnu/libudev.so.0

それは私にはかなりうまくいきます。



2

フィルは強い指摘しました

インストール libudev.so.1

sudo apt-get install libudev1:i386

次にそれをリンクします libudev.so.0

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

1

私は14.04にこれをしましたが、似ているはずです。パッケージを削除して再インストールするだけです。適切なライブラリが適切にインストールされます。

apt-get purge google-chrome-stable
apt-get install google-chrome-stable

私は他の答えはうまくいくと確信していますが、構成管理パッケージによって管理されているファイルシステムオブジェクトを変更するには基本的な知識があります。


1

これは、32ビットUbuntu 15.04で同じ問題を解決するために使用したものです。

cd i386-linux-gnu
sudo ln -sf libudev.so.1 libudev.so.0

0

更新 実行したいプログラムをラップするbashスクリプトを作成しました。それをローカルのbinフォルダーに追加して、シェルスクリプトをコピーして貼り付けたり実行したりせずにプログラムを起動するだけです。

#!/bin/bash

ProgramToExecute="/PATH/TO/PROGRAM" #Example: $HOME/dart/./DartEditor

system=$(uname -m) #Returns x86_64 on 64 bit systems
libdir="/lib/$system-linux-gnu"
libudev1="$libdir/libudev.so.1"

if [ ! -f $libudev1 ]
then
        #check if an i386 folder exist because ' uname -m' returns i686 instead of i386.
        libdir="/lib/i386-linux-gnu"
        libudev1="$libdir/libudev.so.1"
        #if none of the lookups return a file, this script exits,
        BreakUpNotice="This $libudev1 isn't working out. It's not you
        it's me. Or maybe you forgot to install libudev1 library.
        sudo apt-get install libudev1 "

        [ ! -f $libudev1 ] && echo $BreakUpNotice  && exit 0
fi

libudev0="$libdir/libudev.so.0"

echo "$libudev1 found."
sudo ln -sf $libudev1 $libudev0
sudo -k #revoke sudo 
$($ProgramToExecute)

NoticeAfterExec="Enter sudo to del libudev link (recommended) or press CTRL+C to cancel."
RmSuccess="And $libudev0 link is gone."
RmFailed="Whaat? $libudev0 still exists."

echo $NoticeAfterExec
sudo rm $libudev0
sudo -k
[ ! -f "$libudev0" ]  && echo $RmSuccess || echo $RmFailed
exit 

古い回答 Ubuntu 14.04では、ライブプレビュー(Chromium)を使用しようとすると、Dart Editorからエラーメッセージが表示されました。libudev1をインストールし、シンボリックリンクを作成することで、エラーを解決しました。

    sudo apt-get install libudev1

また、TenLeftFingersが上記のスクリプトを使用してDartEditorを実行しました。

    #!/bin/sh
    sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
    ./DartEditor
    sudo rm /lib/i386-linux-gnu/libudev.so.0

Dart Editorが実行されない場合は、JAVAがインストールされていることを確認してください。これは権限の問題ではありません。

    sudo apt-get install python-software-properties
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update
    sudo apt-get install oracle-java7-installer

IDEを実行可能にします:

    sudo chmod a+x ./DartEditor

これは私のために働いた。


0

Xubuntu PreciseからTrustyにアップグレードした後、32ビットシステムで同じエラーが発生していました。これは私のためにそれを修正しました:

sudo dpkg-reconfigure google-chrome-stable

ここで見つけまし。パラメーターがまったくないため、これがどのように修正されたかはよくわかりませんが、修正されました。私が一番気に入ったのは、将来私にとって問題を引き起こす可能性のあることを何もする必要がなく、パッケージを探す必要がないことです。


-1

libudev.so.0およびUbuntuのEmotiv Epoc SDK Dev Editionの修正のためにWebを掘っているときに誰かがこのページに出くわした場合、以下が役立つことを願っています。

//私の設定は64ビットUbuntu 13.04です

64ビットシステムの場合:

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1。/lib/x86_64-linux-gnu/libudev.so.1

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

「共有ライブラリのロード中のエラー:libudev.so.0:間違ったELFクラス:ELFCLASS32」を防ぐことができるもの

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

32ビットシステムの場合:

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1。/lib/i386-linux-gnu/libudev.so.1

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0

「共有ライブラリのロード中のエラー:libudev.so.0:間違ったELFクラス:ELFCLASS64」を防ぐことができるもの(推測です。私は64ビットシステムを使用しています)

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

EmotivControlPanel、EmoKey、EmoComposer、Javaの例、少しカスタマイズされたQtの例は、上記を実行した後に実行できるはずです(上記のすべてのステップとWebで見つかった他のステップ(スタックオーバーフロー、..)私にとっては、それが「試行錯誤」の後のことです

最後になりましたが、ここの誰かが、提供されているサードパーティの32ビットライブラリを使用することを指定しながら、64ビットシステムで32ビットライブラリに対してコンパイルされたプログラムを実行する方法を知っている場合

より正確には、私が話していることを知っている人のために、64ビットシステムで「EmoCube」と「BlueAvatar」Qtの例を実行する方法を教えてください。

->私がこれまでに試したことに対して、私が得ることができたほとんどは、「共有ライブラリのロード中のエラー:libedk.so.1:間違ったELFクラス:ELFCLASS64」でした。

i386ディレクトリにあるそのlibへのシンボリックリンクはそれを作らないと思います(まだ試してはいませんが)ので、誰かが答えを持っているなら...読んで楽しみにしています。

すべて乾杯+


-4

ターミナルで次のコマンドを実行します。

cd /lib/x86_64-linux-gnu/
sudo cp libudev.so.0.13.0 libudev.so.1

これは私を助けました


cd / lib / x86_64-linux-gnu / sudo cp libudev.so.0.13.0 libudev.so.1
user214274
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.