Linux系统文件可以修复吗?或者重新安装是唯一的选择?

Linux系统文件可以修复吗?或者重新安装是唯一的选择?

我有一个关于 Linux 的问题,这个问题一直困扰着我。在Windows上,如果任何系统文件损坏,您只需重新安装系统文件即可,而无需重新格式化磁盘,这是一个不错的选择。 Linux 上有类似的东西吗?

我在 Raspberry Pi 上运行 Raspbian Distro,在再次断电后,我的系统再次损坏。它运行一个 Netatalk 服务器,作为 Mac 的 TimeMachine。断电后,系统无法启动,我必须在文件系统上手动运行 fsck.ext4 来修复它 - 并且它有很多错误需要修复。运行后,系统将启动,但周围出现奇怪的错误 - 它不知道机器的名称,因此显示为 pi@(未知),一些基本系统程序(如 ls 或 sudo)给我“权限被拒绝”错误,我已将卡插入另一台计算机并手动设置 sudo 的正确权限,但现在当我运行它时,它会出现“分段错误”错误,因此文件显然已损坏。

现在我的观点是 - 重新安装所有东西会很痛苦。是否有一个选项可以通过重新安装所有系统文件来修复它,而不会破坏我的 netatalk 的所有自定义设置?

答案1

在基于 Debian 的发行版上,aptitude reinstall <corrupted-packages>可能会帮助您修复问题。

如果您知道某个特定文件已损坏,则可以使用dpkg -S /my/corrupted/file.

您可能想尝试仅重新安装“基本系统”软件包:

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

您甚至可以尝试(但要非常小心)重新安装一切

# aptitude reinstall "~i"

我从未测试过那些“大规模”重新安装,所以......不能保证。

答案2

如果发行版是基于 Debian/Ubuntu 的,我会选择其中一个aptaptitude尝试一下。

对于基于 Redhat 的发行版(例如 CentOS/Fedora/RHEL),您可以使用 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

答案3

在 Fedora 系统中(我怀疑这确实是一件好事),您可以yum reinstall <package>重新安装软件包(这应该可以修复大部分损坏)。并rpm -Va给出了存在某种问题的软件包列表(有关输出的详细信息,请参阅手册)。由于某些难以理解的原因,即使是在新安装的软件包中,它通常也会报告差异,但这并没有让我感到足够困扰以进一步调查(尚未)。无论如何,如果损坏太严重,抢救一切可以挽救的东西并重新安装仍然是您最好的选择。

相关内容