我有一个关于 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 的,我会选择其中一个apt
或aptitude
尝试一下。
对于基于 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
给出了存在某种问题的软件包列表(有关输出的详细信息,请参阅手册)。由于某些难以理解的原因,即使是在新安装的软件包中,它通常也会报告差异,但这并没有让我感到足够困扰以进一步调查(尚未)。无论如何,如果损坏太严重,抢救一切可以挽救的东西并重新安装仍然是您最好的选择。