Intereting Posts
Разделить текстовый файл на короткие строки для чтения? Ядро 4.1.18 не поддерживает aes-xts-plain64 Citrix Receiver на Ubuntu падает, и я не могу его убить, придется жестко перезагрузить Перемещение файлов / таблицы по критериям выбора linux: Как я могу просмотреть все UUID для всех доступных дисков в моей системе? Как создать / настроить vpn, используя только SSH? Настройка принтера для использования только формата A4 KMail чрезвычайно медленный / замороженный при работе в локальной папке maildir Список изменений файлов в определенной папке с огромным содержимым и несколькими уровнями подпапок (с достойной производительностью) Хром при максимизации имеет зазоры по бокам в Awesome WM Не удалось установить драйвер LAN в RedHat (*** /lib/modules/2.6.32-358.el6.i686/build: нет такого файла или каталога)? Escape shell arg из одного сценария в другой BTRFS, RAID5 и минимальное количество требуемых дисков Linux считается XSI-совместимым или в значительной степени таковым? bash – могу ли я найти: -exec this && that?

Восстановить поврежденный системный каталог (например, / lib)

Предположим, у меня есть система Linux, например Debian, Ubuntu или CentOS, где пользователь удалил /lib , например. Давайте также скажем, что мне удалось загрузить эту систему с версией livecd любой ОС, на которой она была запущена. Можно ли запустить команду, которая будет перестраивать /lib на поврежденную систему?

Например, я бы предположил, что что-то вроде этого может работать, переустановив все пакеты, которые использовала целевая система.

У меня был коллега, столкнувшийся с этой ситуацией, но конечный результат был полностью переустановлен. Однако это заставило меня подумать, возможно ли ремонт, и, возможно, быстрее?

    В большинстве случаев это должно быть относительно легко исправить. Вы можете создать список всех установленных пакетов с помощью каталога /lib с помощью:

     dpkg -S /lib | awk -F': ' '{ print $1 }' | tr -d , 

    Если вы переустановите эти пакеты, то это должно устранить проблему:

     apt-get --reinstall $(dpkg -S /lib | awk -F': ' '{ print $1 }' | tr -d ,) 

    Это, конечно, зависит от того, что удаленный каталог не критичен для apt-get . Пакеты, необходимые для работы apt-get , должны быть установлены вручную, возможно, даже без dpkg . В этом случае пакет может быть извлечен на другой машине, а файлы скопированы на место, позже они будут повторно установлены с apt так что это не должно вызывать никаких других проблем.

    Рассматривая мой собственный список пакетов, помещающих файлы в /lib , я вижу, что основными являются ядро ​​(все модули идут в /lib/modules ) и libc . Это два, которые почти наверняка придется переустановить, чтобы система была загрузочной. Один из способов сделать это – установить из живой системы на базе Debian. Если вы загружаете необходимые пакеты и монтируете корень целевой системы, вы можете добавить опцию --root в dpkg для установки, например:

     dpkg --root=/path/to/target/root -i package1.deb package2.deb ... 

    Опция --root также может использоваться с первой командой dpkg если это необходимо. Конечно, с достаточным количеством терпения и умения, он должен быть доступен для ремонта в Интернете. Если команда dpkg не работает, вы всегда можете попытаться найти зависимости пакетов непосредственно в /var/lib/dpkg/info и искать пакеты, помещающие файлы в /lib через файлы .list в /var/lib/dpkg/info ,

    Чтобы дать представление о том, что может быть достигнуто, вот блог о ком-то, кто сумел восстановить запущенную систему Gentoo, где все пакеты были удалены. Это делает интересным чтение, плюс некоторые из используемых методов (или предложения, предложенные в комментариях) могут быть применены в такой ситуации – http://fakeguido.blogspot.co.uk/2010/08/rescuing-hosed- системы с использованием только-bash.html

    Я думаю, что в большинстве случаев без каталога функций /lib многие из приложений, которые вам нужны для выполнения ремонтной работы, больше не будут присутствовать. Я бы укусил пулю и просто переустановил.


    Если вы все равно пытаетесь попробовать, вот что делать для дистрибутивов RedHat.

    Для дистрибутивов Redhat, таких как CentOS / Fedora / RHEL, вы можете использовать RPM для проверки и восстановления некоторых аспектов установленных пакетов.

    проверить все pkgs

     % 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 output.

    См. Эту статью для получения дополнительной информации: http://www.cyberciti.biz/tips/reset-rhel-centos-fedora-package-file-permission.html .

    Как говорили другие, я бы, наверное, переустановил, если бы это случилось со мной. Однако, если бы я пытался сделать ремонт, я бы сначала начал с копирования каталога /lib из живой установки в мою систему. Если все /lib было удалено, то сначала ничего не получилось бы, даже менеджер пакетов (ов), поэтому такой шаг может потребоваться. Затем я зашел в диспетчер пакетов и переустановил все пакеты с файлами в /lib которые были указаны как установленные (см. Ответ Грэма о том, как получить такой список). Затем, в качестве окончательной очистки, я бы включил и удалил все файлы /lib скопированные из живой установки, которые не должны быть там; т.е. не соответствует файлам из установленного пакета.

    Что касается того, чтобы быть быстрее, я думаю, что переустановка будет. Поскольку вам все равно нужно будет выбрать мир в мире, не считая того времени, когда вам понадобится позже, чтобы отладить некоторые проблемы, которые могут быть вызваны этим, вам потребуется больше времени. Я бы предложил просто перестроить машину, поскольку это определенно приведет систему в стабильное состояние.