特定のディレクトリでコマンドが実行できない原因は何でしょうか?

このQ&Aのポイント
  • Red Hat Enterprise Linux Server release 5.4のOSで、rootユーザが特定のディレクトリでコマンドを実行するとエラーが発生します。
  • カレントディレクトリが該当のディレクトリでない場合には問題ありませんが、該当のディレクトリではlsやwho、dfなどのコマンドもエラーとなります。
  • この現象の原因は、libc.so.6のバージョンが`GLIBC_2.4`ではないためです。
回答を見る
  • ベストアンサー

特定のディレクトリでコマンドが実行出来ない。

特定のディレクトリでコマンドが実行出来ない。 OSはRed Hat Enterprise Linux Server release 5.4です。 rootユーザで特定のディレクトリでlsコマンドを実行すると エラーが発生します。 カレントディレクトリが該当のディレクトリでない場合には 問題ありません。 また、そのディレクトリではwhoやdfコマンド等でも エラーとなってしまいます。 このような現象は、どのような原因が考えられるでしょうか? 以下は、全てrootユーザでの実行結果です。 # pwd /opt/oracle/app/product/11.2.0/dbhome_1/lib # ll stubs 合計 6404 -rwxr-xr-x 1 oracle oinstall 12121 2月 3 2009 ld-linux-2.3.4-stub.so -rwxr-xr-x 1 oracle oinstall 12121 2月 3 2009 ld-linux-x86-64.so.2 -rwxr-xr-x 1 oracle oinstall 4911 2月 3 2009 libBrokenLocale-2.3.4-stub.so -rwxr-xr-x 1 oracle oinstall 4911 2月 3 2009 libBrokenLocale.so -rwxr-xr-x 1 oracle oinstall 4911 2月 3 2009 libBrokenLocale.so.1  ・  ・  ・ # cd stubs # pwd /opt/oracle/app/product/11.2.0/dbhome_1/lib/stubs # ls ls: libc.so.6: version `GLIBC_2.4' not found (required by ls) ls: libc.so.6: version `GLIBC_2.4' not found (required by /lib64/libacl.so.1) ls: libc.so.6: version `GLIBC_2.4' not found (required by /lib64/libselinux.so.1) ls: libc.so.6: version `GLIBC_2.4' not found (required by /lib64/libattr.so.1) ls: libc.so.6: version `GLIBC_2.4' not found (required by /lib64/libsepol.so.1) # who who: libc.so.6: version `GLIBC_2.4' not found (required by who) # df df: libc.so.6: version `GLIBC_2.4' not found (required by df) 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> ;s: libc.so.6: version `GLIBC_2.4' not found (required by ls) というエラーから、 共有ライブラリの問題だと思われます。 .so(あるいは、その前後に数字等が付いたもの)というのは、共有ライブラリと言って、WindowsのDLLのようなものです。 コマンドを実行するとき等に、必要な共有ライブラリを読み込みます。 DLLがそうであるように、共有ライブラリも適切なものが読み込まれないと、コマンドは正常に動作しません、 共有ファイルのある場所は 「環境変数LD_LIBRARY_PATHで指定されているディレクトリ」 →「デフォルトのディレクトリ」 の順で探されます。 LD_LIBRARY_PATHの書式は環境変数PATHと同じで、:で区切られたパスです。 このLD_LIBRARY_PATHの中に「.」(カレントディレクトリ)が含まれていると、当然、カレントディレクトリから見付けようとします。 今回のはおそらく ・LD_LIBRARY_PATH に . が含まれている ・/opt/oracle/app/product/11.2.0/dbhome_1/lib/stubsにlsやwho等で必要としている共有ライブラリと同じ名前のファイルが存在している(かつ、コマンドが使用している共有ライブラリと合致しない) という状態だと思われます。 確認のため、echo $LD_LIBRARY_PATH として、中身を確認してください。 (場合によっては、LD_LIBRARY_PATH_64 の方かもしれません) もし、.を含むようなら、.profileや.bashrc等で設定しているでしょうから、. をはずしてください。

verdy2008
質問者

お礼

kmee様 ご回答ありがとうございました。 正にご教示いただいたとおりで、rootユーザの.bash_profileが変更されており LD_LIBRARY_PATH の設定がされていました。 こちらの設定を元に戻したところ無事解決いたしました。 どうもありがとうございました。

その他の回答 (1)

  • seednyan
  • ベストアンサー率28% (448/1568)
回答No.1

selinuxの設定が影響してるのでは? 一度、selinuxを無効にして試して下さい。 @確か、再起動が必要です。 出なければ、hddの故障かも。

verdy2008
質問者

お礼

seednyan様 早速のご回答ありがとうございます。 selinuxは元々無効にしてあります。 hddの調査を行ってみます。

verdy2008
質問者

補足

badblocks コマンドでhddの全デバイスをチェックしましたが エラーは発見されませんでした。 引き続き何か情報がございましたら宜しくお願いいたします。

関連するQ&A

  • centosのglibcのアップグレード

    CentOS 6.5にてプログラムを実行しようとしたら /lib/libc.so.6: version `GLIBC_2.15' not found という警告表示されて実行できないので、glibcのバージョンを確認したいところ yum info glibc version 2.12でした。 glibcを2.15までアップグレードするにはどうすればよろしいでしょうか。 多少のLinuxの操作は分かりますが、詳しくないため教えていただけないでしょうか。

  • Netscapeのアップデートができない

    Linux初心者です。TurboLinux6.0 Workstationを使用し ているのですが、ブラウザのバージョンアップをしよう とNetscape7.1をダウンロードし、インストーラーを走 らせたのですが下記のエラーが出ました。 /lib/libc.so.6:version'GLIBC.2.2.4' not found (requ ired by ./netscape-installer-bin GLIBCのバージョンが関係あるのでしょうか。 また、GLIBCとはなんでしょうか。 初歩的な質問で申し訳ないのですがよろしくお願いいたします。

  • GLIBC_2.4 以上がインストールされていない環境で

    GLIBC_2.4 以上がインストールされていない環境で perlで開発中に、libcのバージョンが古いというエラーが出ております。 しかし、事情により、通常のインストールができません。 どうにかして、別サーバから取得したsoファイルなどを使って、GLIBC_2.4以上を読み込ませることはできないでしょうか。 いま、外部サーバから取得したlibc-2.5.soがあります。これをサーバ上にアップロードして、perlから使用できるようにする方法はありますか? あまり詳しくないのですが、Dynaloader などは用途が違うのでしょうか。 すみませんが、宜しくお願い致します。 エラーメッセージ(一部伏字): Can't load '~~~i386-linux-thread-multi/auto/Digest/SHA1/SHA1.so' for module Digest::SHA1: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by ~~~~/i386-linux-thread-multi/auto/Digest/SHA1/SHA1.so) at /usr/lib/perl/5.8/DynaLoader.pm line 225. at ~~~~/Digest/HMAC_SHA1.pm line 5

  • runInstallerを実行するとエラーになる(RedHat)

    RedHat ES 4.5 でOracle9.2.0.4をインストールしようとしています。 (インストールしたいのはClientの機能だけです) runInstallerを実行すると、以下のメッセージが出力されます。 ↓↓↓ [oracle@web1 Disk1]$ Initializing Java Virtual Machine from /tmp/OraInstall2008-10-21_10-01-39AM/jre/bin/java. Please wait... Error occurred during initialization of VM Unable to load native library: /tmp/OraInstall2008-10-21_10-01-39AM/jre/lib/i386/libjava.so: symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference ↑↑↑ GLIBC_2.0がないと言っていますが、具体的な対処方法を 教えてもらえますととても助かります。 linuxの知識が浅くすみません、お願いします。

  • GNU gettext が変なライブラリを参照している

    Solaris 2.7 に GNU gettext 0.14.5 をインストールしようとしています.gmake は通るのですが,出来上がった xgettext や msgfmt などのバイナリを ldd すると, .libs/libgettextsrc-0.14.5.so => .libs/libgettextsrc-0.14.5.so .libs/libgettextlib-0.14.5.so => (file not found) .libs/libintl.so.3.4.3 => (file not found) libiconv.so.2 => /usr/local/lib/libiconv.so.2 libc.so.1 => /usr/lib/libc.so.1 libexpat.so.0 => /usr/local/lib/libexpat.so.0 .libs/libgettextlib-0.14.5.so => (file not found) .libs/libintl.so.3.4.3 => (file not found) libdl.so.1 => /usr/lib/libdl.so.1 /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1 となり,どうやら一時ディレクトリである .libs 以下のライブラリを参照してしまっているようです.当然,gettext を用いて make した他のプログラムも動かなくなってしまうため,とても困っています. 試しに gettext 0.10.40 という古いものを入れてみたところ,問題は起こりませんでした. libintl.so.1 => /usr/local/lib/libintl.so.1 libiconv.so.2 => /usr/local/lib/libiconv.so.2 libc.so.1 => /usr/lib/libc.so.1 libdl.so.1 => /usr/lib/libdl.so.1 /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1 回避策等あれば教えていただきたいです. なお,gcc は 2.7.2.3 です.よろしくお願いいたします.

  • lddの見方について教えてください。

    必要なライブラリを表示しているのは分かったのですが=>の右側以上のバージョンのライブラリが必要という意味でしょうか?ということは=>となっているのは 存在していてOKということでしょうか? またnot foundとなったライブラリは一般的にどこでみつけて、どこに置けばいいでしょうか? [root@localhost DiCE]# ldd dice /lib/libNoVersion.so.1 (0x00b37000) libqtintf.so => not found libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x0081b000) libpthread.so.0 => /lib/libpthread.so.0 (0x00a77000) libdl.so.2 => /lib/libdl.so.2 (0x00815000) libc.so.6 => /lib/libc.so.6 (0x00d1c000) /lib/ld-linux.so.2 (0x006ab000)

  • rpmファイルがインストールできずエラーを起こします。

    あるrpmファイルをインストールしようとしたところ、下記のようにエラーが表示されました。 環境:Red Hat Linux 9 ターミナルにて****.rpmファイルをインストール実行 -------------------------------------------------- # rpm -ivh ****.rpm エラー:Failed dependencies: libc.so.6(GLIBC_2.3.4) is needed by **** libc.so.6(GLIBC_2.4) is needed by **** libstdc++.so.6 is needed by **** libstdc++.so.6(CXXABI_1.3) is needed by **** libstdc++.so.6(GLIBCXX_3.4) is needed by **** -------------------------------------------------- libc.so.6(GLIBC_2.3.4),libc.so.6(GLIBC_2.4)などのファイルがないためインストールできないといってるようですが、初心者のためわかりません。対処法に詳しい方いらっしゃいましたらご回答よろしくお願いいたします。

  • fedora core6にOracle9iをインストール

    質問されていただきます。 Linux fedora core6にoracle9iをCDからインストールしようとしてるのですが、マウントして/mnt/cdrom/runInstaller & と入力すると、 Initializing Java Virtual Machine from /tmp/OraInstall/jre/bin/jre. Please wait... /tmp/OraInstall/jre/bin/../lib/i686/green_threads/libzip.so: symbol errno, version GLIBC_2 .0 not defined in file libc.so.6 with link time reference (libzip.so) Unable to initialize threads: cannot find class java/lang/Thread Could not create Java VM というエラーが出て、そのまま止まってしまいます。 現在行っている設定は ・oracleユーザの環境設定 ・上記の該当スレッドにtouchでファイル作成(libzip.so、libc.so.6) ・LD_KARNEL_PASHは設定するとエラーが出る為行っていません。 上記エラーに出てるパッケージの検索結果 $ rpm -qa | grep libc glibc-common-2.5-3 libcap-devel-1.10-25 libcroco-0.6.1-2.1 glibc-headers-2.5-3 glibc-2.5-3 libcap-1.10-25 libcroco-devel-0.6.1-2.1 glibc-2.5-10.fc6 glibc-common-2.5-10.fc6 glibc-devel-2.5-3 少ない情報で申し訳ありません。 必要な情報があれば調べてお知らせします。 何卒お知恵をお貸しください。 よろしくお願いします。

  • glibcのアップグレード

    redhat9を使っているのですが、glibcのバージョンをあげようと思い、次のサイトを参考にrpmパッケージをインストールしました。 http://www.atmarkit.co.jp/flinux/rensai/lfs03/lfs03b.html 無事、インストールが終わったのですがバージョンが、2.3.2のままで、2.3.2-27.9.7になりませんでした。 ls -l /lib/libc-* と打ち込んでも2.3.2.soと表示されます。 何がまずかったのかわかりません。rpmパッケージをインストールしたのがまずかったのでしょうか。それとも、まだ何かすることをしていないだけなのでしょうか。 自己解決できなかったので、どなたか、ご教授願います。 よろしくお願いいたします。

  • RHEL6.1 パッケジ追加時のエラー

    RHEL6.1をインストしております。追加でcompat-libstdc++-33-3.2.3-69.el6.i686をrpm -ivhを使用して追加使用とするとエラーメッセージが出て追加できません。 エラーメッセージは下記のような感じです。 下記のパッケージを先に入れておかないといけないみたいなのですが、下記のパッケージの入手方法及びインスト方法を分かりやすくご説明願いませんでしょうか? rpm程度しか使用したことが無く、その他がよくわかりません。 よろしくお願い致します。 libc.so.6 is needed by XXXX-gcc_XXXX.i686 libc.so.6(GLIBC_2.0) is needed by XXXX-gcc_XXXX.i686 libc.so.6(GLIBC_2.1) is needed by XXXX-gcc_XXXX.i686 libc.so.6(GLIBC_2.1.3) is needed by XXXX-gcc_XXXX.i686 libc.so.6(GLIBC_2.2) is needed by XXXX-gcc_XXXX.i686 libc.so.6(GLIBC_2.2.3) is needed by XXXX-gcc_XXXX.i686 libc.so.6(GLIBC_2.3) is needed by XXXX-gcc_XXXX.i686