1

Мой терминал (FREE BSD) использует CShell от defualt, под которым vim работает нормально. Но чтобы запустить некоторые тестовые сценарии, я должен использовать оболочку bash, где определены некоторые из моих переменных env. Когда я нахожусь в Bash Shell, если я запускаю Vim, эта ошибка теряет

/libexec/ld-elf.so.1: Shared object "libgtk-12.so.2" not found, required by "vim"

VI работает нормально, хотя.Может кто-нибудь помочь мне решить это?

2 ответа2

2

Правдоподобное объяснение состоит в том, что в зависимости от того, какую оболочку вы используете, у вас могут быть разные настройки переменных среды. Сравните вывод

echo $PATH
echo $LD_LIBRARY_PATH

под bash и под csh. Возможно, $LD_LIBRARY_PATH включает местоположение libgtk-12.so.2 когда вы находитесь в csh, но не в bash. Или, возможно, $PATH приводит к другому исполняемому файлу vim в csh и bash (тот, который требует gtk в bash, и тот, который не требует gtk в csh). Чтобы проверить это, запустите type vim под bash, а which vim под csh.

РЕДАКТИРОВАТЬ: основываясь на ваших комментариях, есть vim в /volume/perl/bin/vim , который вам не подходит, но вам также нужно что-то в /volume/perl/bin чтобы быть первым в PATH , возможно, perl . У вас есть несколько решений:

  • Сначала поместите /volume/perl/bin/vim в $PATH , а alias vim=/usr/local/bin/vim поместите в ваш .bashrc и в .cshrc .

  • Ни в коем случае не помещайте /volume/perl/bin/vim в $PATH , но организуйте запуск сценариев perl с /volume/perl/bin/vim вместо локального perl.

  • Никогда не помещайте /volume/perl/bin/vim в $PATH . Вместо этого сначала поместите ~/bin в $PATH и создайте символические ссылки на то, что вам нужно, из /volume/perl/bin в ~/bin , например, ln -s /volume/perl/bin/perl ~/bin .

  • Попробуйте установить PERL5LIB а не PATH , если вам нужна не более новая версия perl, а некоторые дополнительные библиотеки. Например, setenv PERL5LIB /volume/perl/lib/perl/5.10 (настроить для любых необходимых каталогов; вы можете посмотреть каталоги по умолчанию для /volume/perl/bin/perl , запустив /volume/perl/bin/perl -le 'map print, @INC').

  • Обновите свой Perl, чтобы ваши скрипты работали с ними (возможно, в дополнение к предыдущему предложению).

  • Установите библиотеки, которые нужны /volume/perl/bin/vim .

  • Удалите vim из /volume/perl/bin .

Что бы вы ни делали, я не рекомендую иметь разные настройки PATH в разных оболочках, это очень быстро сбивает с толку (как вы уже заметили). Установите PATH в .login (при условии, что csh - ваша оболочка для входа, в противном случае - в .profile).

0

Вы упомянули терминал, но библиотека, на которую он жалуется, является библиотекой GUI. Вы заботитесь о GUI? если нет, то вы можете не запускать графический интерфейс и не пытаться загрузить эту библиотеку, но я далеко не гуру vim. Вы даже можете отключить ваш DISPLAY, и vim должен будет работать в режиме терминала.

Как ответили другие, это, вероятно, ваш LD_LIBRARY_PATH, или вы используете другой vim, чем вы думаете. Посмотрите, что установлено в bash и csh., И различия

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .