Операции apt-get терпят неудачу из-за недопустимого поиска ld.so

После сегодняшнего обновления версии 1.1.12 VLC и использования Ubuntu 11.10.

Пользователям необходимо обновить свой Ubuntu до последних ежедневных обновлений, которые должны предоставить последнюю версию VLC (версия 1.1.12). Уже тестировалось и все фильмы, которые я видел, работают правильно.

2
задан 1 November 2017 в 20:26

9 ответов

Благодаря ответу @ muru и комментарию @pbhj на этот ответ, я обнаружил, что проблема в том, что для переменной среды LD_PRELOAD было установлено значение «/usr/lib/nvidia-375/libnvidia-ml.so» в файл /etc/environment.

Я, скорее всего, добавил строку в этот файл сам давным-давно, когда я сначала настроил CUDA. Я предполагаю, что это был взлом для проблемы, которую я имел в то время, которая требовала установки LD_PRELOAD на уровне sudo.

Как показал @muru, довольно легко воспроизвести сообщение об ошибке установив переменную среды LD_PRELOAD в файл, который не существует. Тем не менее, мои файлы инициализации оболочки не устанавливали его, а env | grep LD_PRELOAD ничего не возвращали.

Однако, (спасибо комментарию @pbhj), я обнаружил, что во время работы sudo apt-get update будет отображаться ошибка в тонну времени на выходе, sudo env -u LD_PRELOAD apt-get update отображал его только один раз, в самой верхней части вывода. Затем я обнаружил, что sudo env | grep LD_PRELOAD показал, что он действительно установлен в несуществующий файл для команд sudo.

Помимо /etc/environment, любой, у кого есть эта проблема, также должен посмотреть файл [ f10] (который вы должны отредактировать с помощью sudo visudo) и любых файлов в папке /etc/sudoers.d/.

1
ответ дан 22 May 2018 в 16:58

Благодаря ответу @ muru и комментарию @pbhj на этот ответ, я обнаружил, что проблема в том, что для переменной среды LD_PRELOAD было установлено значение «/usr/lib/nvidia-375/libnvidia-ml.so» в файл /etc/environment.

Я, скорее всего, добавил строку в этот файл сам давным-давно, когда я сначала настроил CUDA. Я предполагаю, что это был взлом для проблемы, которую я имел в то время, которая требовала установки LD_PRELOAD на уровне sudo.

Как показал @muru, довольно легко воспроизвести сообщение об ошибке установив переменную среды LD_PRELOAD в файл, который не существует. Тем не менее, мои файлы инициализации оболочки не устанавливали его, а env | grep LD_PRELOAD ничего не возвращали.

Однако, (спасибо комментарию @pbhj), я обнаружил, что во время работы sudo apt-get update будет отображаться ошибка в тонну времени на выходе, sudo env -u LD_PRELOAD apt-get update отображал его только один раз, в самой верхней части вывода. Затем я обнаружил, что sudo env | grep LD_PRELOAD показал, что он действительно установлен в несуществующий файл для команд sudo.

Помимо /etc/environment, любой, у кого есть эта проблема, также должен посмотреть файл /etc/sudoers (который вы должны отредактировать с помощью sudo visudo) и любых файлов в папке /etc/sudoers.d/.

1
ответ дан 18 July 2018 в 04:14

Благодаря ответу @ muru и комментарию @pbhj на этот ответ, я обнаружил, что проблема в том, что для переменной среды LD_PRELOAD было установлено значение «/usr/lib/nvidia-375/libnvidia-ml.so» в файл /etc/environment.

Я, скорее всего, добавил строку в этот файл сам давным-давно, когда я сначала настроил CUDA. Я предполагаю, что это был взлом для проблемы, которую я имел в то время, которая требовала установки LD_PRELOAD на уровне sudo.

Как показал @muru, довольно легко воспроизвести сообщение об ошибке установив переменную среды LD_PRELOAD в файл, который не существует. Тем не менее, мои файлы инициализации оболочки не устанавливали его, а env | grep LD_PRELOAD ничего не возвращали.

Однако, (спасибо комментарию @pbhj), я обнаружил, что во время работы sudo apt-get update будет отображаться ошибка в тонну времени на выходе, sudo env -u LD_PRELOAD apt-get update отображал его только один раз, в самой верхней части вывода. Затем я обнаружил, что sudo env | grep LD_PRELOAD показал, что он действительно установлен в несуществующий файл для команд sudo.

Помимо /etc/environment, любой, у кого есть эта проблема, также должен посмотреть файл /etc/sudoers (который вы должны отредактировать с помощью sudo visudo) и любых файлов в папке /etc/sudoers.d/.

1
ответ дан 24 July 2018 в 18:02

Кажется, что где-то была установлена ​​переменная среды LD_PRELOAD:

$ /bin/true
$ export LD_PRELOAD=/usr/lib/nvidia-375/libnvidia-ml.so
$ /bin/true
ERROR: ld.so: object '/usr/lib/nvidia-375/libnvidia-ml.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

Я предлагаю вам проверить файлы инициализации оболочки (~/.{bashrc,profile}, /etc/{bash.bashrc,profile,profile.d/*}). Или запустите эту команду:

PS4=' ${BASH_SOURCE}:${LINENO} ' bash -lixc exit |& grep LD_PRELOAD
2
ответ дан 22 May 2018 в 16:58
  • 1
    почему вы делаете /bin/true с обеих сторон экспорта? – pbhj 6 November 2017 в 19:30
  • 2
    @pbhj, потому что /bin/true - это команда, которая в противном случае имеет минимальные зависимости и гарантирована. И, конечно, с первой попытки у него не было проблем, но после экспорта я получил ту же ошибку, что и OP. – muru 6 November 2017 в 19:32
  • 3
    Ах, извинившись, слишком быстро перескочил, я думал, что ты предлагаешь исправить! Да, тестирование показывает потенциальное происхождение ошибки. env | grep LD_PRELOAD также покажет его, также env -i $COMMAND должен работать с чистой средой и поэтому не иметь предварительной загрузки (env -u LD_PRELOAD $COMMAND может быть лучше). – pbhj 7 November 2017 в 03:11
  • 4
    Мне жаль, что я не могу дать щедрость вам и @pbhj. Мои файлы инициализации оболочки пользователя ничего не имели, а env | grep LD_PRELOAD тоже ничего не возвращали, но затем я обнаружил, что sudo env | grep LD_PRELOAD отображал переменную окружения LD_PRELOAD как установленную в несуществующей libnvidia-ml.so. После рытья, чтобы выяснить, где могут быть установлены переменные окружения только для корня, найдено LD_PRELOAD, установленное в /etc/environment. Большое вам спасибо обоим вам за то, что вы меня направили в правильном направлении! – edcarden 8 November 2017 в 23:58

Вы пробовали с:

dpkg-reconfigure nvidia-***

Это может решить вашу проблему реконфигурирования и повторной установки при необходимости!

0
ответ дан 22 May 2018 в 16:58

Вы пробовали с:

dpkg-reconfigure nvidia-***

Это может решить вашу проблему реконфигурирования и повторной установки при необходимости!

0
ответ дан 18 July 2018 в 04:14

Кажется, что где-то была установлена ​​переменная среды LD_PRELOAD:

$ /bin/true $ export LD_PRELOAD=/usr/lib/nvidia-375/libnvidia-ml.so $ /bin/true ERROR: ld.so: object '/usr/lib/nvidia-375/libnvidia-ml.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

Я предлагаю вам проверить файлы инициализации оболочки (~/.{bashrc,profile}, /etc/{bash.bashrc,profile,profile.d/*}). Или запустите эту команду:

PS4=' ${BASH_SOURCE}:${LINENO} ' bash -lixc exit |& grep LD_PRELOAD
2
ответ дан 18 July 2018 в 04:14

Вы пробовали с:

dpkg-reconfigure nvidia-***

Это может решить вашу проблему реконфигурирования и повторной установки при необходимости!

0
ответ дан 24 July 2018 в 18:02

Кажется, что где-то была установлена ​​переменная среды LD_PRELOAD:

$ /bin/true $ export LD_PRELOAD=/usr/lib/nvidia-375/libnvidia-ml.so $ /bin/true ERROR: ld.so: object '/usr/lib/nvidia-375/libnvidia-ml.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

Я предлагаю вам проверить файлы инициализации оболочки (~/.{bashrc,profile}, /etc/{bash.bashrc,profile,profile.d/*}). Или запустите эту команду:

PS4=' ${BASH_SOURCE}:${LINENO} ' bash -lixc exit |& grep LD_PRELOAD
2
ответ дан 24 July 2018 в 18:02
  • 1
    почему вы делаете /bin/true с обеих сторон экспорта? – pbhj 6 November 2017 в 19:30
  • 2
    @pbhj, потому что /bin/true - это команда, которая в противном случае имеет минимальные зависимости и гарантирована. И, конечно, с первой попытки у него не было проблем, но после экспорта я получил ту же ошибку, что и OP. – muru 6 November 2017 в 19:32
  • 3
    Ах, извинившись, слишком быстро перескочил, я думал, что ты предлагаешь исправить! Да, тестирование показывает потенциальное происхождение ошибки. env | grep LD_PRELOAD также покажет его, также env -i $COMMAND должен работать с чистой средой и поэтому не иметь предварительной загрузки (env -u LD_PRELOAD $COMMAND может быть лучше). – pbhj 7 November 2017 в 03:11
  • 4
    Мне жаль, что я не могу дать щедрость вам и @pbhj. Мои файлы инициализации оболочки пользователя ничего не имели, а env | grep LD_PRELOAD тоже ничего не возвращали, но затем я обнаружил, что sudo env | grep LD_PRELOAD отображал переменную окружения LD_PRELOAD как установленную в несуществующей libnvidia-ml.so. После рытья, чтобы выяснить, где могут быть установлены переменные окружения только для корня, найдено LD_PRELOAD, установленное в /etc/environment. Большое вам спасибо обоим вам за то, что вы меня направили в правильном направлении! – edcarden 8 November 2017 в 23:58

Другие вопросы по тегам:

Похожие вопросы: