web-dev-qa-db-ja.com

Linuxシステムファイルを修復することは可能ですか?または、再インストールが唯一のオプションですか?

Linuxについていつも悩んでいたことについて質問があります。 Windowsでは、システムファイルのいずれかが破損した場合、ディスクを再フォーマットせずにシステムファイルを再インストールできます。これは優れたオプションです。 Linuxでも同様のものはありますか?

Raspberry PiでRaspbian Distroを実行しましたが、もう一度電源を切った後、システムが再び損傷しました。 Mac用のTimeMachineとして動作するNetatalkサーバーを実行していました。停電後、システムは起動せず、ファイルシステムでfsck.ext4を手動で実行して修正する必要があり、修正するエラーがたくさんありました。それを実行した後、システムは起動しますが、奇妙なエラーがあります-マシンの名前がわからないため、pi @(unknown)と表示され、lsやSudoのようないくつかの基本的なシステムプログラムは「許可が拒否されました」エラー、カードを別のコンピューターに接続し、手動でSudoに適切なアクセス許可を設定しましたが、実行すると「セグメンテーション違反」エラーが発生するため、ファイルが明らかに破損しています。

私の要点は、すべてを再インストールするのは大変なことです。 netatalkのカスタムセットアップをすべて壊すことなく、すべてのシステムファイルを再インストールして修正するオプションはありますか?

4
gambiting

Debianベースのディストリビューションでは、aptitude reinstall <corrupted-packages>が問題の修復に役立つ場合があります。

特定のファイルが破損していることがわかっている場合は、dpkg -S /my/corrupted/fileを使用して対応するパッケージ名を取得できます。

「ベースシステム」パッケージのみを再インストールしてみてください。

# aptitude reinstall "~prequired"
# aptitude reinstall "~pimportant"
# aptitude reinstall "~pstandard"

すべてを再インストールすることもできます(ただし、十分に注意してください)。

# aptitude reinstall "~i"

私はそれらの「大規模な」再インストールをテストしたことがないので...保証はありません。

2
Totor

Fedoraシステムでは(これは本当にyumのことだと思います)、あなたはyum reinstall <package>パッケージを再インストールします(ほとんどの損傷を修復するはずです)。そしてrpm -Vaは、何らかの問題があるパッケージのリストを提供します(出力の詳細については、マニュアルを参照してください)。なんらかの理由で、通常は新しくインストールされたパッケージでも違いが報告されますが、それでも(まだ)調査するのに十分な迷惑ではありません。いずれの場合でも、損傷が大きすぎる場合は、修復できるものをすべて救い、再インストールするのが最善の策です。

0
vonbrand

ディストリビューションがDebian/Ubuntuベースの場合は、aptまたはaptitudeを試してみます。

CentOS/Fedora/RHELなどのRedhatベースのディストリビューションの場合、RPMを使用して、インストールされたパッケージのいくつかの側面を確認および修復できます。

すべてのパッケージを確認する

% rpm -qVav
.........    /usr/bin/rdesktop
.........    /usr/share/doc/rdesktop-1.6.0
.........  d /usr/share/doc/rdesktop-1.6.0/AUTHORS
.........  d /usr/share/doc/rdesktop-1.6.0/COPYING
.........  d /usr/share/doc/rdesktop-1.6.0/ChangeLog
.........  d /usr/share/doc/rdesktop-1.6.0/HACKING
.........  d /usr/share/doc/rdesktop-1.6.0/README
.........  d /usr/share/doc/rdesktop-1.6.0/TODO
.........  d /usr/share/doc/rdesktop-1.6.0/ipv6.txt
.........  d /usr/share/doc/rdesktop-1.6.0/keymap-names.txt
.........  d /usr/share/doc/rdesktop-1.6.0/keymapping.txt
...
...

opensshを確認する

% rpm -qVv openssh
.........    /etc/ssh
..?......  c /etc/ssh/moduli
.........    /usr/bin/ssh-keygen
.........    /usr/libexec/openssh
.........    /usr/libexec/openssh/ssh-keysign
.........    /usr/share/doc/openssh-5.5p1
.........  d /usr/share/doc/openssh-5.5p1/CREDITS
.........  d /usr/share/doc/openssh-5.5p1/ChangeLog
.........  d /usr/share/doc/openssh-5.5p1/INSTALL
.........  d /usr/share/doc/openssh-5.5p1/LICENCE
.........  d /usr/share/doc/openssh-5.5p1/OVERVIEW
...
...

権限と所有権を修正する

% rpm --setperms {packagename}
% rpm --setugids {packagename}

注:man rpm出力の詳細については、-V|--verifyを参照してください。

詳細については、この記事を参照してください: http://www.cyberciti.biz/tips/reset-rhel-centos-Fedora-package-file-permission.html

0
slm