Linuxについていつも悩んでいたことについて質問があります。 Windowsでは、システムファイルのいずれかが破損した場合、ディスクを再フォーマットせずにシステムファイルを再インストールできます。これは優れたオプションです。 Linuxでも同様のものはありますか?
Raspberry PiでRaspbian Distroを実行しましたが、もう一度電源を切った後、システムが再び損傷しました。 Mac用のTimeMachineとして動作するNetatalkサーバーを実行していました。停電後、システムは起動せず、ファイルシステムでfsck.ext4を手動で実行して修正する必要があり、修正するエラーがたくさんありました。それを実行した後、システムは起動しますが、奇妙なエラーがあります-マシンの名前がわからないため、pi @(unknown)と表示され、lsやSudoのようないくつかの基本的なシステムプログラムは「許可が拒否されました」エラー、カードを別のコンピューターに接続し、手動でSudoに適切なアクセス許可を設定しましたが、実行すると「セグメンテーション違反」エラーが発生するため、ファイルが明らかに破損しています。
私の要点は、すべてを再インストールするのは大変なことです。 netatalkのカスタムセットアップをすべて壊すことなく、すべてのシステムファイルを再インストールして修正するオプションはありますか?
Debianベースのディストリビューションでは、aptitude reinstall <corrupted-packages>
が問題の修復に役立つ場合があります。
特定のファイルが破損していることがわかっている場合は、dpkg -S /my/corrupted/file
を使用して対応するパッケージ名を取得できます。
「ベースシステム」パッケージのみを再インストールしてみてください。
# aptitude reinstall "~prequired"
# aptitude reinstall "~pimportant"
# aptitude reinstall "~pstandard"
すべてを再インストールすることもできます(ただし、十分に注意してください)。
# aptitude reinstall "~i"
私はそれらの「大規模な」再インストールをテストしたことがないので...保証はありません。
Fedoraシステムでは(これは本当にyumのことだと思います)、あなたはyum reinstall <package>
パッケージを再インストールします(ほとんどの損傷を修復するはずです)。そしてrpm -Va
は、何らかの問題があるパッケージのリストを提供します(出力の詳細については、マニュアルを参照してください)。なんらかの理由で、通常は新しくインストールされたパッケージでも違いが報告されますが、それでも(まだ)調査するのに十分な迷惑ではありません。いずれの場合でも、損傷が大きすぎる場合は、修復できるものをすべて救い、再インストールするのが最善の策です。
ディストリビューションが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
...
...
% 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 。