Я установил рабочий стол Ubuntu 20.10 на Raspberry pi 4. Проблема в том, что я установил его на твердотельный накопитель, и я хочу изменить размер корневого раздела и оставить от 11 до 12 ГБ свободного места в конце раздела в качестве избыточного выделения ресурсов, но каждый раз, когда я изменяю размер и перезагружаю раздел, он становится заполненным. Я заметил x-systemd.growfs в fstab я предполагаю, что это виновник. Как я могу сжать свой раздел, а также добавить «noatime» в fstab. Заранее спасибо.
-121--891632- Предположим, что у меня есть некоторые проблемы с динамическим связыванием.
Возможно, имеется локальная (или скопированная вручную) библиотека, которая переопределяет библиотеку из APT. Библиотека не помещается в /usr/local/lib
, поэтому ее трудно отличить от других.
На Ubuntu 18,04 LTS я могу запускать ldd
, а затем анализировать его выходные данные по типу
export EXE=/usr/bin/mc;
dpkg -S $(ldd $EXE | grep -v "=>" | awk '{print $1}') 2> /tmp/not-from-apt
dpkg -S $(ldd $EXE | grep "=>" | awk '{print $3}') 2>> /tmp/not-from-apt
, а затем анализировать содержимое файла /tmp/not-from-apt
. Для системы 18.04 LTS этот файл будет содержать только одну строку:
$ cat/tmp/not-from-apt dpkg-query: не найден путь, соответствующий образцу * linux-vdso.so.1 *
и ожидается, что она является базовой библиотекой, не поступающей ни из одного пакета.
Но вышеописанный метод не сработает на Ubuntu 20,04 LTS, здесь файл /tmp/not-from-apt
будет содержать неверные результаты, начиная со строки 2:
$ cat/tmp/not-from-apt dpkg-query: не найден путь, соответствующий образцу * linux-vdso.so.1 * dpkg-query: не найден путь, соответствующий шаблону/ lib/x86_64-linux-gnu/libgpm.so.2 dpkg-query: не найден путь, соответствующий шаблону/ lib/x86_64-linux-gnu/libssh2.so.1 dpkg-query: не найден путь, соответствующий шаблону/ lib/x86_64-linux-gnu/libgmodule-2.0.so.0 dpkg-query: не найден путь, соответствующий шаблону/ lib/x86_64-linux-gnu/libglib-2.0.so.0 dpkg-query: не найден путь, соответствующий шаблону/ lib/x86_64-linux-gnu/libgcrypt.so.20
Я полагаю, что это произошло из-за symlinks, как показано ниже:
$ ls -al/| grep lib lrwxrwxrwx 1 корень корень 7 Янв 19 04:01 lib - > usr/lib lrwxrwxrwx 1 корневой корень 9 Янв 19 04:01 lib32 - > usr/lib32 lrwxrwxrwx 1 корневой корень 9 Янв 19 04:01 lib64 - > usr/lib64 lrwxrwxrwx 1 корневой корень 10 Янв 19 04:01 libx32 - > usr/libx32
Здесь действительно есть другая проблема - некоторые пакеты имеют /lib *
в своих списках файлов, в то время как некоторые имеют /usr/lib *
. Так что это добавит лишнего беспорядка.
Что следует изменить в методе Ubuntu 20.04 LTS и новее, чтобы получить правильные строки в файле /tmp/not-from-apt
?
С Рекомендацией Муру мы должны использовать команду RealPath
.
Но с небольшим примечанием, который работает RealPath
на самую раннюю стадию, как ожидалось.
Поэтому нам нужно добавить один дополнительный шаг для обработки выходного файла:
dpkg -S $(realpath $(grep -E "/lib.*" --only-matching /tmp/not-from-apt)) 2> /tmp/not-from-apt-final
и полный метод для 20,04 LTS будет выглядеть следующим образом:
export EXE=/usr/bin/mc;
dpkg -S $(ldd $EXE | grep -v "=>" | awk '{print $1}') 2> /tmp/not-from-apt
dpkg -S $(ldd $EXE | grep "=>" | awk '{print $3}') 2>> /tmp/not-from-apt
dpkg -S $(realpath $(grep -E "/lib.*" --only-matching /tmp/not-from-apt)) 2> /tmp/not-from-apt-final
Это будет производить пустым / TMP / не от APT -Final
файл, когда нет ошибок.
Также можно всегда проверить содержимое / TMP / не от APT
для дополнительной информации.