Подробный гайд: Восстановление связей и ссылок в ALT Linux
Комплексное руководство по восстановлению системных связей, символьных ссылок и зависимостей в дистрибутиве ALT Linux.
Оглавление
- Диагностика проблем
- Восстановление зависимостей пакетов (APT)
- Работа с символьными ссылками (symlinks)
- Восстановление библиотечных ссылок (ldconfig)
- Пересборка RPM-базы данных
- Полное восстановление системы через Rescue
- Автоматизация и профилактика
1. Диагностика проблем
Перед восстановлением определите тип повреждения:
# Проверка целостности файловой системы
fsck -vf /dev/sda2 # замените на ваш раздел
# Поиск битых символьных ссылок
find / -xtype l 2>/dev/null
# Проверка зависимостей пакетов
apt-get check
# Просмотр состояния пакетов
rpm -Va | grep -v "^..5" # проверка изменений в установленных файлах
2. Восстановление зависимостей пакетов (APT)
ALT Linux использует APT для управления пакетами.
Базовые команды восстановления:
# Обновление списка пакетов (всегда выполняйте первым шагом)
sudo apt-get update
# Автоматическое исправление нарушенных зависимостей
sudo apt-get install -f
# Альтернативный синтаксис (эквивалентен предыдущей команде)
sudo apt-get --fix-broken install
# Принудительная переустановка конкретного пакета
sudo apt-get install --reinstall имя_пакета
# Полное обновление системы (предпочтительно перед dist-upgrade)
sudo apt-get dist-upgrade
Важно:
В ALT Linux не рекомендуется использовать apt-get upgrade для частичного обновления — это может нарушить зависимости. Всегда используйте dist-upgrade.
Если APT «завис» из-за прерванной установки:
# Переконфигурирование всех пакетов
sudo dpkg --configure -a # аналог доступен через rpm в ALT
# Очистка кэша и повторная попытка
sudo apt-get clean
sudo apt-get update
sudo apt-get install -f
3. Работа с символьными ссылками
Поиск и удаление битых ссылок
# Поиск всех битых ссылок в системе
find / -xtype l 2>/dev/null
# Подсчёт количества битых ссылок
find / -xtype l 2>/dev/null | wc -l
# Удаление битых ссылок (с подтверждением)
find / -xtype l -exec rm -i {} \;
# Удаление без подтверждения (осторожно!)
find / -xtype l -exec rm {} \;
Утилита symlinks (рекомендуется)
В репозиториях ALT Linux доступна утилита symlinks для профессионального управления ссылками:
# Установка утилиты
sudo apt-get install symlinks
# Проверка ссылок в указанном каталоге
symlinks -r /usr
# Поиск только битых (dangling) ссылок
symlinks -r -c / # -c = check
# Автоматическое удаление битых ссылок
symlinks -r -d / # -d = delete
# Конвертация абсолютных ссылок в относительные
symlinks -r -a /home
Ручное восстановление конкретной ссылки:
# Удаление старой битой ссылки
sudo rm /путь/к/битой/ссылке
# Создание новой корректной ссылки
sudo ln -s /реальный/путь/к/файлу /путь/к/ссылке
# Принудительное пересоздание (если ссылка уже существует)
sudo ln -sf /новый/целевой/путь /путь/к/ссылке
4. Восстановление библиотечных ссылок (ldconfig)
Если программы не находят библиотеки или ldd показывает «not found»:
# Обновление кэша динамических библиотек
sudo ldconfig
# Проверка, какие библиотеки видит система
ldconfig -p | grep имя_библиотеки
# Просмотр зависимостей исполняемого файла
ldd /путь/к/программе
# Добавление пользовательского пути к библиотекам
# 1. Создайте файл конфигурации:
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/local.conf
# 2. Обновите кэш:
sudo ldconfig
Если библиотеки установлены в /usr/local, убедитесь, что этот путь указан в /etc/ld.so.conf или в файлах каталога /etc/ld.so.conf.d/.
5. Пересборка RPM-базы данных
При ошибках вида «RPM database corrupted» или проблемах с установкой пакетов:
# Резервное копирование базы RPM
sudo cp -a /var/lib/rpm /var/lib/rpm.backup
# Пересборка базы данных из заголовков установленных пакетов
sudo rpm --rebuilddb
# Проверка целостности базы
sudo rpm --verifydb
# После пересборки — обновление кэша APT
sudo apt-get update
Команда rpm --rebuilddb удаляет повреждённые заголовки и компактирует базу, но не затрагивает сами установленные пакеты.
6. Полное восстановление системы через ALT Rescue
Если система не загружается, используйте ALT Linux Rescue — специализированный LiveCD для восстановления.
Пошаговый алгоритм:
- Загрузитесь с Rescue-носителя (установочный диск или ALT Linux Rescue)
- Получите права root (пароль пустой в Live-режиме)
3. Определите разделы системы:
lsblk -f
fdisk -l
4. Проверьте файловую систему:
fsck -vf /dev/sda2 # замените на ваш корневой раздел
5. Смонтируйте систему:
# Автоматическое монтирование (рекомендуется)
mount-system
# Или вручную:
mount /dev/sda2 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
6. Перейдите в среду системы (chroot):
chroot /mnt
7. Выполните восстановление:
# Внутри chroot:
apt-get update
apt-get install -f
ldconfig
rpm --rebuilddb
make-initrd -k $(ls -d /lib/modules/* | head -1 | xargs basename)
update-grub
grub-install /dev/sda # для Legacy BIOS
# или просто grub-install для UEFI
8. Выйдите и перезагрузитесь:
exit
unmount-system
reboot
Если на диске есть спасательный раздел RECOVERY, можно восстановить систему через меню GRUB без внешнего носителя.
7. Автоматизация и профилактика
Создание точки восстановления (ALT 8 СП и новее)
ALT Linux поддерживает встроенный механизм резервного копирования через специальный раздел RECOVERY:
# Подготовка раздела восстановления (пример для /dev/sda5)
sudo mkfs.ext4 -j -L RECOVERY /dev/sda5
sudo mkdir /tmp/recovery
sudo mount -L RECOVERY /tmp/recovery
sudo mkdir -m700 /tmp/recovery/backup
# Копирование загрузочных файлов с установочного носителя
sudo cp -Lf /media/ALTLinux/EFI/BOOT/vmlinuz /tmp/recovery/backup/
sudo cp -Lf /media/ALTLinux/EFI/BOOT/full.cz /tmp/recovery/backup/
sudo cp -Lf /media/ALTLinux/rescue /tmp/recovery/
# Создание карты устройств
cat >/tmp/recovery/backup/map.conf <<EOF
target=/dev/sda
swap=1
root=2
home=3
EOF
# Активация в GRUB
sudo chmod +x /etc/grub.d/15_rescue # если скрипт создан
sudo update-grub
Регулярные проверки (можно добавить в cron):
# Еженедельная проверка битых ссылок в пользовательских каталогах
0 3 * * 0 find /home -xtype l -exec logger "Broken symlink: {}" \;
# Ежемесячное обновление кэша библиотек
0 4 1 * * /sbin/ldconfig
# Проверка целостности пакетов после обновлений
0 5 * * * apt-get check 2>&1 | logger -t apt-check
Сводная таблица команд восстановления
| Проблема | Команда | Описание |
|---|---|---|
| Нарушенные зависимости | apt-get install -f |
Исправление зависимостей через APT |
| Битые символьные ссылки | find / -xtype l |
Поиск неработающих ссылок |
| Удаление битых ссылок | symlinks -r -d / |
Профессиональное удаление через утилиту |
| Библиотеки не находятся | ldconfig |
Обновление кэша динамических библиотек |
| Повреждена RPM-база | rpm --rebuilddb |
Пересборка базы данных пакетов |
| Система не загружается | mount-system + chroot |
Восстановление через Rescue |
| Потерян загрузчик | update-grub + grub-install |
Переустановка GRUB |
Важные предупреждения
- Всегда делайте резервную копию перед массовыми изменениями.
- Не удаляйте системные пакеты без понимания зависимостей — APT предупредит, но окончательное решение за вами.
- Проверяйте вывод команд перед подтверждением (Y), особенно при
dist-upgrade. - Используйте Rescue-режим только при реальной необходимости — это мощный, но потенциально опасный инструмент.
Совет:
Если вы работаете в корпоративной среде ALT Linux, рассмотрите использование Alterator — графического конфигуратора, который упрощает многие задачи восстановления через удобный интерфейс.