Видео ролики бесплатно онлайн

Смотреть измена видео

Официальный сайт oriflame100 24/7/365

Смотреть видео бесплатно

BrokenBrake 04.08.2010 20:58

Tips & tricksУзнать версию или наличие требуемой библиотеки

Часто встречается ситуация, когда приложение требует какую-то определённую версию библиотеки.
Узнать, какая версия есть в системе можно с помощью простенькой функции (у меня она в .zshrc):
1
2
# Проверить версию библиотеки
lib() { ls /usr/lib/$1* | awk -F/ '{ print $4 }' }


Пример использования(из жизни, только что):
~ me > agave
agave: error while loading shared libraries: libatkmm-1.6.so.1: cannot open shared object file: No such file or directory
~ me > lib libat
libatk-1.0.la
libatk-1.0.so
libatk-1.0.so.0
libatk-1.0.so.0.3009.1
libattr.a
libattr.so

Ага, значит обновить надо пакетик.
Думаю, эта функция должна работать с любым дистрибутивом Linux.

P.S. По мотивам проверки пакета в SlackWare.


Тэги: lib библиотеки
+ 1 -
Похожие Поделиться

Shtsh 04.08.2010 21:10 #
+ 1 -
а нафига?
Shtsh 04.08.2010 21:11 #
+ 2 -
в слаке нету менеджера пакета с проверкой версий в смысле?
BrokenBrake 04.08.2010 22:28 #
+ 1 -
Название файла библиотеки часто может совершенно не совпадать с названием пакета. Так в любом дистрибутиве скорей всего.
K900 04.08.2010 21:55 #
+ 0 -
Вот это хороший вопрос. Да, я завел блог "Сниппеты"
main 04.08.2010 22:26 #
+ 3 -
В тему:
Ещё может помочь утилита ldd
ldd - print shared library dependencies
Так:
main@dell:~$ ldd /bin/bash
linux-gate.so.1 => (0x00e0b000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00a23000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x002f0000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x005cb000)
/lib/ld-linux.so.2 (0x00e5e000)

Или так:
main@dell:~$ ldd -v /bin/bash
linux-gate.so.1 => (0x00397000)
libncurses.so.5 => /lib/libncurses.so.5 (0x0098e000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x0018a000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00e0f000)
/lib/ld-linux.so.2 (0x001d5000)

Version information:
/bin/bash:
libdl.so.2 (GLIBC_2.1) => /lib/tls/i686/cmov/libdl.so.2
libdl.so.2 (GLIBC_2.0) => /lib/tls/i686/cmov/libdl.so.2
libc.so.6 (GLIBC_2.4) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.11) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libc.so.6
/lib/libncurses.so.5:
libdl.so.2 (GLIBC_2.1) => /lib/tls/i686/cmov/libdl.so.2
libdl.so.2 (GLIBC_2.0) => /lib/tls/i686/cmov/libdl.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libc.so.6
/lib/tls/i686/cmov/libdl.so.2:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/tls/i686/cmov/libc.so.6
/lib/tls/i686/cmov/libc.so.6:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
BrokenBrake 04.08.2010 22:29 #
+ 0 -
Не знал про такую штуку. Спасибо.
main 04.08.2010 22:37 #
+ 0 -
your welcome!
lava 04.08.2010 23:58 #
+ 0 -
lib() {
for libdir in "/lib" "/usr/lib" "/usr/local/lib"
do
ls -la "$libdir/$1"* 2>/dev/null | egrep -o "$1.*"
done
}


Преимущества:
  • "Проверяет" не одну директорию
    (по-хорошему, следовало бы вообще из системы вытягивать список библиотек, но это может разниться от системы к системе)

  • Честно показывает линки
    (мало ли куда они ведут и какие проблемы создают)

  • Да и вообще, мне кажется, набрать 'lib libatk' не сильно быстрее 'ls /usr/lib/libatk*'
    (особенно, если есть автодополнение)

BrokenBrake 05.08.2010 00:04 #
+ 0 -
В общем-то, да. Я просто к zsh ещё не привык :)
Раньше надоедало весь путь писать (много раз нажимать Tab),
а теперь ведь можно вообще /u/lib/+Tab.

В общем, не слишком полезная функция получилась, да.
kstep 05.08.2010 01:23 #
+ 1 -
Да, ldconfig и ldd уже отменили?
razum2um 05.08.2010 18:42 #
+ 2 -
pkg-config --list-all | grep ...
pkg-config --modversion ...

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн