/usr
誤ってディレクトリ名を/usr_bak
。
私はそれを再度変更したかったので、システムがコマンドを見つけることができるように/usr_bak/bin
パスを追加しました。$PATH
sudo
しかし、今ではsudo mv /usr_bak /usr
エラーが発生します。
sudo: error while loading shared libraries: libsudo_util.so.0: cannot open shared object file: No such file or directory
システムを再インストールする以外に名前を変更する方法はありますか/usr_bak
?/usr
答え1
すでにルートパスワードを設定しているので、Ubuntuにデフォルトでインストールされているとsu
を使用してください。必要なbusybox
すべてのsu
ライブラリがあります/lib
。 Busyboxは静的にリンクされたユーティリティのコレクションなので、ライブラリがなくても問題はありません。する:
su -c '/bin/busybox mv /usr_bak /usr'
(Busybox自体にはsu
小さなプログラムがあります/bin/busybox
が、バイナリはsetuidではないため、rootとして実行しないと機能しません。)
ルートパスワードがなければ、おそらくGillesのソリューションを使用することがここで使用されます。(Gillesはこれがsudoなどのsetuidバイナリでは機能しないと言います)、再起動してGRUBメニューを編集してLD_LIBRARY_PATH
またはinit=/bin/busybox
カーネルパラメータで起動し、フォルダを再度移動します。
答え2
またムルの答え:
システムの回復に使用できるいくつかの回復ブートUSBキーがあります。たとえば、システムがDebianまたはUbuntuの場合は、回復モードでインストールUSBフラッシュドライブを起動し、適切な
mount
操作を実行します。mv
umount
これらのエラーをより簡単に修正できるように、通常は複数の組み込みコマンド(特に、、 - に似た組み込み
cp
コマンドrm
のmv
一部)を含む静的シェルもインストールします。sash
(これは包装Debian と Ubuntu では次にも利用可能サッシ-3.8.tar.gzソースコード形式で)起動してinit=/bin/sash
Grubに渡されます。
PS:sash
少しバグがあり、Posixと完全に互換性がありませんが、それでも非常に便利です。
答え3
最も安全な方法は、オペレーティングシステム(Debian、Ubuntu、Suseなど)を起動するUSB、CD、またはDVDを使用して再起動することです。次に、問題のあるドライブをマウントして名前を変更します。
/usrまたは/libが事実上欠落している地雷原で起動するよりも安全です。
答え4
今はこれを試すことはできませんが(したいかどうかはわかりません)、次のようになります。しなければならない次のように新しい "/usr"を作成してみてください。ハードリンク(ソフトリンクではありません)「/usr_bak」に移動して「/usr_bak」を削除してください。
ln /usr_bak /usr
rm /usr_bak
"ln"によって生成されたハードリンク(いいえファイルシステムの「-s」パラメータは、usrおよびusr_bakディレクトリを関連ディレクトリへの等しく有効なリンクにする必要があります。 「rm」は削除を要求したリンクを 1 つだけ削除し、両方を削除しません。コンテンツへの有効なリンクはまだ残っているため、「/usr」の残りのリンクからアクセスできます。