Как создать относительную символическую ссылку во время монтирования?

Вопрос или проблема

Недавно я сломал свою систему из-за checkinstall. Похоже, что всё, чего не хватает, это моя папка lib.

Тем не менее, я пытался создать символическую ссылку, пока система смонтирована, и получил следующую символическую ссылку: lib -> /mnt/root/usr/lib/ Проблема, которую я вижу с этим, заключается в том, что если я не смонтировал систему по адресу /mnt/root, эта ссылка не существует… Как мне создать её, чтобы она указывала на /usr/lib, конечно, выполняя sudo ln -s /usr/lib /lib просто создаст ссылку для текущей системы.

Текущая структура

(base) hutber@hutber:/mnt/root$ ll
total 116
drwxr-xr-x  20 root root  4096 Nov 28 09:25 ./
drwxr-xr-x  13 root root  4096 Nov 28 09:10 ../
-rw-r--r--   1 root root     0 Aug 12 13:14 1
lrwxrwxrwx   1 root root     7 Feb  2  2024 bin -> usr/bin/
drwxr-xr-x   4 root root  4096 Nov 21 11:44 boot/
drwxr-xr-x   2 root root  4096 Feb  2  2024 cdrom/
drwxr-xr-x   2 root root  4096 Aug 12 13:15 .config/
drwxr-xr-x   4 root root  4096 Jan  9  2024 dev/
drwxr-xr-x 164 root root 12288 Nov 27 22:56 etc/
drwxr-xr-x   2 root root  4096 Feb  2  2024 home/
lrwxrwxrwx   1 root root    17 Nov 28 09:25 lib -> /mnt/root/usr/lib/
lrwxrwxrwx   1 root root     9 Jan  9  2024 lib64 -> usr/lib64/
drwx------   2 root root 16384 Feb  2  2024 lost+found/
drwxr-xr-x   3 root root  4096 Feb  2  2024 media/
drwxr-xr-x   4 root root  4096 Feb 14  2024 mnt/
drwxr-xr-x  16 root root  4096 Sep 19 13:30 opt/
drwxr-xr-x   2 root root  4096 Jan  9  2024 proc/
drwx------  13 root root  4096 Oct  8 13:00 root/
drwxr-xr-x  14 root root  4096 Feb  2  2024 run/
lrwxrwxrwx   1 root root     8 Feb  2  2024 sbin -> usr/sbin/
drwxr-xr-x   2 root root  4096 Jan  9  2024 srv/
drwxr-xr-x   2 root root  4096 Apr 18  2022 sys/
drwxrwxrwt  49 root root 20480 Nov 27 23:01 tmp/
drwxr-xr-x  13 root root  4096 Apr 11  2024 usr/
drwxr-xr-x  12 root root  4096 Feb 14  2024 var/

lib должен быть настроен так же, как и другие символические ссылки в корневом каталоге, которые видны в размещении, которое вы опубликовали, такие как bin или lib64 – то есть, он должен указывать на usr/lib (важно: не /usr/lib, а usr/lib, потому что последнее относительное к точке, где эта файловая система смонтирована – если она смонтирована по фактическому корню, ссылка будет указывать на /usr/lib, но если эта файловая система будет смонтирована по адресу /mnt/root, ссылка будет указывать на /mnt/root/usr/lib).

Итак, находясь в каталоге /mnt/root, введите

sudo ln -s -f usr/lib lib

(параметр -f принуждает замену текущей ссылки на новую).

Ответ или решение

Чтобы создать относительную символическую ссылку (symlink) в монтированном файловом системе, необходимо учитывать структуру вашего каталога. В данном случае требуется создать ссылку lib, которая будет указывать на usr/lib, сохраняя правильность относительно точки монтирования.

Шаг 1: Понимание структуры файловой системы

На основании вашей структуры, каталог /mnt/root представляет собой корень вашей заблокированной системы. Все пути, начинающиеся с /mnt/root, будут относительными к этому каталогу во время его монтирования. Это значит, что для создания правильной символической ссылки необходимо учитывать, как будет восприниматься эта ссылка в зависимости от точки монтирования.

Шаг 2: Как создать относительную символическую ссылку

Для создания символической ссылки lib, указывающей на относительный путь usr/lib, выполните следующие действия:

  1. Перейдите в mnt/root:

    cd /mnt/root
  2. Создайте символическую ссылку:
    Используйте следующую команду:

    sudo ln -s -f usr/lib lib
    • Опция -s указывает на создание символической ссылки.
    • Опция -f принудительно заменит существующую ссылку, если она уже существует.

Шаг 3: Проверка результата

После выполнения команд необходимо убедиться, что символическая ссылка создана корректно:

ls -l

Это должно вывести что-то вроде:

lrwxrwxrwx   1 root root    7 Feb 2 2024 lib -> usr/lib/

Это указывает на то, что lib корректно ссылается на usr/lib.

Заключение

С помощью этих действий вы создадите символическую ссылку, которая будет работать правильно, независимо от того, где у вас смонтирована файловая система. Таким образом, если система будет смонтирована в другом месте, символическая ссылка всегда будет указывать на нативный путь к библиотекам. Это может предотвратить возможные проблемы в будущем.

Используя описанные выше шаги, вы будете уверены в правильности настройки вашей системы, что поможет избежать нежелательных последствий, похожих на те, с которыми вы уже столкнулись.

Оцените материал
Добавить комментарий

Капча загружается...