誤って/ usrの名前を変更した後、どうやって名前を変更しますか?

誤って/ usrの名前を変更した後、どうやって名前を変更しますか?

/usr誤ってディレクトリ名を/usr_bak

私はそれを再度変更したかったので、システムがコマンドを見つけることができるように/usr_bak/binパスを追加しました。$PATHsudo

しかし、今では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のソリューションを使用することがここで使用されます。LD_LIBRARY_PATHまたは(Gillesはこれがsudoなどのsetuidバイナリでは機能しないと言います)、再起動してGRUBメニューを編集してinit=/bin/busyboxカーネルパラメータで起動し、フォルダを再度移動します。

答え2

またムルの答え:

  • システムの回復に使用できるいくつかの回復ブートUSBキーがあります。たとえば、システムがDebianまたはUbuntuの場合は、回復モードでインストールUSBフラッシュドライブを起動し、適切なmount操作を実行します。mvumount

  • これらのエラーをより簡単に修正できるように、通常は複数の組み込みコマンド(特に、、 - に似た組み込みcpコマンドrmmv一部)を含む静的シェルもインストールします。sash(これは包装Debian と Ubuntu では次にも利用可能サッシ-3.8.tar.gzソースコード形式で)起動してinit=/bin/sashGrubに渡されます。

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」の残りのリンクからアクセスできます。

関連情報