pbonfanti
(usa Debian)
Enviado em 27/08/2018 - 09:43h
Vag_taschetti escreveu:
Vou tentar ser objetivo...
Tenho um programa que preciso rodar no meu desktop, que tem instalado Kubuntu 18.04, e preciso de uma lib "desatualizada" para rodar o programa, porém o sistema acusa vários erros qdo substituo essa lib's... é possível ter mais de uma lib no sistema sendo versões diferentes.
Obrigado...
Vagner Taschetti
Se ainda estiver dentro da mesma API , você resolve esse problema criando um link simbólico com o nome da biblioteca que você precisa, apontando para a biblioteca que você realmente tem. Alguns exemplos do tipo de link:
lrwxrwxrwx 1 root root 26 Mai 15 2017 libkmediaplayer.so.4 -> libkmediaplayer.so.4.14.16
lrwxrwxrwx 1 root root 19 Set 2 2015 libkmime.so.4 -> libkmime.so.4.14.11
lrwxrwxrwx 1 root root 24 Mai 15 2017 libknewstuff2.so.4 -> libknewstuff2.so.4.14.16
lrwxrwxrwx 1 root root 24 Mai 15 2017 libknewstuff3.so.4 -> libknewstuff3.so.4.14.16
lrwxrwxrwx 1 root root 23 Abr 14 2016 libkonq.so.5abi1 -> libkonq.so.5.14.16.abi1
Mas deixa explicar essa parte, a nomenclatura de bibliotecas tem uma convenção: nome-da-biblioteca.so.MAJOR.MINOR
No caso da primeira linha
nome: libkmediaplayer
Major:4
Minor: 14.16
O conceito é que todas bibliotecas dentro do mesmo número major são compatíveis e devem funcionar com os aplicativos compilados para esse major,
por isso links dentro do mesmo major não são problemas, as versões Minor são geralmente correção de bugs e não quebram a compatibilidade.
Quando grandes mudanças são feitas, é mudado o número Major, e não é seguro rodar aplicações em uma biblioteca de versão Major diferente, você pode ter todo tipo de erro possível principalmente, pois uma biblioteca não funciona sozinha, elas são ligadas uma a outra como uma corrente, o mesmo ocorre com binários, você pode ver todas essas ligações com ldd:
root@betelgeuse:/home/usuario# ldd /usr/lib/libkmediaplayer.so.4.14.16
linux-vdso.so.1 => (0x00007ffe93ba0000)
libkparts.so.4 => /usr/lib/libkparts.so.4 (0x00007fe2b1428000)
libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4 (0x00007fe2b0734000)
libkdeui.so.5 => /usr/lib/libkdeui.so.5 (0x00007fe2b00b9000)
libQtDBus.so.4 => /usr/lib/x86_64-linux-gnu/libQtDBus.so.4 (0x00007fe2afe36000)
libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007fe2af943000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe2af5c1000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe2af1f7000)
libkio.so.5 => /usr/lib/libkio.so.5 (0x00007fe2aed2e000)
libkdecore.so.5 => /usr/lib/libkdecore.so.5 (0x00007fe2ae84b000)
libQtXml.so.4 => /usr/lib/x86_64-linux-gnu/libQtXml.so.4 (0x00007fe2ae605000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fe2ae3c2000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe2ae1a5000)
libaudio.so.2 => /usr/lib/x86_64-linux-gnu/libaudio.so.2 (0x00007fe2adf8c000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fe2adc7b000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007fe2ada56000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe2ad83c000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fe2ad592000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007fe2ad33f000)
libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007fe2ad137000)
libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007fe2acf1d000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007fe2acd0d000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fe2acb03000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fe2ac8f1000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fe2ac5b7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe2ac2ae000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe2ac098000)
libattica.so.0.4 => /usr/lib/x86_64-linux-gnu/libattica.so.0.4 (0x00007fe2abddb000)
libQtNetwork.so.4 => /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4 (0x00007fe2aba86000)
libQtSvg.so.4 => /usr/lib/x86_64-linux-gnu/libQtSvg.so.4 (0x00007fe2ab82d000)
libdbusmenu-qt.so.2 => /usr/lib/x86_64-linux-gnu/libdbusmenu-qt.so.2 (0x00007fe2ab5f9000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007fe2ab3f3000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fe2ab1a7000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe2aafa3000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe2aad9b000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe2b1889000)
libstreamanalyzer.so.0 => /usr/lib/libstreamanalyzer.so.0 (0x00007fe2aab1e000)
libsolid.so.4 => /usr/lib/libsolid.so.4 (0x00007fe2aa815000)
libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007fe2aa60d000)
libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007fe2aa408000)
libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007fe2aa1f8000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fe2a9fd6000)
libdlrestrictions.so.1 => /usr/lib/libdlrestrictions.so.1 (0x00007fe2a9dd1000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fe2a9ba8000)
libXt.so.6 => /usr/lib/x86_64-linux-gnu/libXt.so.6 (0x00007fe2a993f000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fe2a973b000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe2a94cb000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007fe2a92c3000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fe2a90be000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fe2a8e9c000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007fe2b19ea000)
libstreams.so.0 => /usr/lib/libstreams.so.0 (0x00007fe2a8c64000)
libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fe2a88a9000)
libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007fe2b19c9000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fe2a86a3000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fe2a8481000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007fe2a81a0000)
libicuuc.so.55 => /usr/lib/x86_64-linux-gnu/libicuuc.so.55 (0x00007fe2a7e0c000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fe2a7bf8000)
libicudata.so.55 => /usr/lib/x86_64-linux-gnu/libicudata.so.55 (0x00007fe2a6141000)
Ou seja para a libkmediaplayer do meu sistema funcionar direito ela precisa dessa lista de bibliotecas em versão compatível, uma versão muito diferente (Major) ia causar problemas com todas essas outras, por isso muita coisa que funciona em uma versão de distro não funciona na próxima porque o código não foi portado para a nova versão. Outra questão é que binários e bibliotecas costumam ser vinculados ao kernel tambem, por isso acontece de algumas bibliotecas sofrerem upgrade junto com o kernel, observe o ldd com o binário kate por exemplo:
root@betelgeuse:/home/usuario# file /usr/bin/kate
/usr/bin/kate: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=c8b10a6ce9291249e31cd9db754ec63f3b5c2e7c, stripped
root@betelgeuse:/home/usuario# ldd /usr/bin/kate
linux-vdso.so.1 => (0x00007fff8a3b9000)
libKF5TextEditor.so.5 => /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5 (0x00007f30fdd24000)
libKF5Parts.so.5 => /usr/lib/x86_64-linux-gnu/libKF5Parts.so.5 (0x00007f30fdacd000)
libKF5KIOWidgets.so.5 => /usr/lib/x86_64-linux-gnu/libKF5KIOWidgets.so.5 (0x00007f30fd7b4000)
libKF5KIOCore.so.5 => /usr/lib/x86_64-linux-gnu/libKF5KIOCore.so.5 (0x00007f30fd459000)
libKF5XmlGui.so.5 => /usr/lib/x86_64-linux-gnu/libKF5XmlGui.so.5 (0x00007f30fd165000)
libKF5TextWidgets.so.5 => /usr/lib/x86_64-linux-gnu/libKF5TextWidgets.so.5 (0x00007f30fcf24000)
libKF5Service.so.5 => /usr/lib/x86_64-linux-gnu/libKF5Service.so.5 (0x00007f30fcc90000)
libKF5Completion.so.5 => /usr/lib/x86_64-linux-gnu/libKF5Completion.so.5 (0x00007f30fca5a000)
libKF5IconThemes.so.5 => /usr/lib/x86_64-linux-gnu/libKF5IconThemes.so.5 (0x00007f30fc81f000)
libKF5ConfigWidgets.so.5 => /usr/lib/x86_64-linux-gnu/libKF5ConfigWidgets.so.5 (0x00007f30fc5ce000)
libKF5I18n.so.5 => /usr/lib/x86_64-linux-gnu/libKF5I18n.so.5 (0x00007f30fc37b000)
libKF5WidgetsAddons.so.5 => /usr/lib/x86_64-linux-gnu/libKF5WidgetsAddons.so.5 (0x00007f30fc03a000)
libKF5ConfigGui.so.5 => /usr/lib/x86_64-linux-gnu/libKF5ConfigGui.so.5 (0x00007f30fbe1a000)
libQt5Xml.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5 (0x00007f30fe545000)
libKF5ConfigCore.so.5 => /usr/lib/x86_64-linux-gnu/libKF5ConfigCore.so.5 (0x00007f30fbbbf000)
libKF5WindowSystem.so.5 => /usr/lib/x86_64-linux-gnu/libKF5WindowSystem.so.5 (0x00007f30fb977000)
libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007f30fb2ea000)
libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f30fada2000)
libKF5CoreAddons.so.5 => /usr/lib/x86_64-linux-gnu/libKF5CoreAddons.so.5 (0x00007f30fab14000)
libKF5Activities.so.5 => /usr/lib/x86_64-linux-gnu/libKF5Activities.so.5 (0x00007f30fa8e4000)
libKF5DBusAddons.so.5 => /usr/lib/x86_64-linux-gnu/libKF5DBusAddons.so.5 (0x00007f30fa6d4000)
libQt5DBus.so.5 => /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5 (0x00007f30fe4c4000)
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f30fa1fe000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f30f9e7c000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f30f9b73000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f30f97a9000)
libQt5Script.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Script.so.5 (0x00007f30f9521000)
libKF5Archive.so.5 => /usr/lib/x86_64-linux-gnu/libKF5Archive.so.5 (0x00007f30f92ee000)
libKF5JobWidgets.so.5 => /usr/lib/x86_64-linux-gnu/libKF5JobWidgets.so.5 (0x00007f30f90c7000)
libQt5PrintSupport.so.5 => /usr/lib/x86_64-linux-gnu/libQt5PrintSupport.so.5 (0x00007f30fe44f000)
libKF5ItemViews.so.5 => /usr/lib/x86_64-linux-gnu/libKF5ItemViews.so.5 (0x00007f30f8e8f000)
libKF5GuiAddons.so.5 => /usr/lib/x86_64-linux-gnu/libKF5GuiAddons.so.5 (0x00007f30f8c75000)
libKF5Codecs.so.5 => /usr/lib/x86_64-linux-gnu/libKF5Codecs.so.5 (0x00007f30f8a3b000)
libKF5SonnetUi.so.5 => /usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5 (0x00007f30f8818000)
libKF5SonnetCore.so.5 => /usr/lib/x86_64-linux-gnu/libKF5SonnetCore.so.5 (0x00007f30f85f7000)
libQt5Network.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Network.so.5 (0x00007f30f849d000)
libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007f30f8298000)
libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f30f8090000)
libKF5GlobalAccel.so.5 => /usr/lib/x86_64-linux-gnu/libKF5GlobalAccel.so.5 (0x00007f30f7e6f000)
libKF5Attica.so.5 => /usr/lib/x86_64-linux-gnu/libKF5Attica.so.5 (0x00007f30f7bd8000)
libQt5Svg.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Svg.so.5 (0x00007f30fe3f3000)
libKF5Auth.so.5 => /usr/lib/x86_64-linux-gnu/libKF5Auth.so.5 (0x00007f30f79c5000)
libQt5X11Extras.so.5 => /usr/lib/x86_64-linux-gnu/libQt5X11Extras.so.5 (0x00007f30fe3ed000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f30f768b000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f30f7469000)
libxcb-keysyms.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-keysyms.so.1 (0x00007f30f7266000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f30f7049000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f30f6df6000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f30f6ae5000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f30f68c0000)
libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f30f6662000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f30f6448000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f30f61d4000)
libfam.so.0 => /usr/lib/libfam.so.0 (0x00007f30f5fcb000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f30f5db5000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f30f5b69000)
libicui18n.so.55 => /usr/lib/x86_64-linux-gnu/libicui18n.so.55 (0x00007f30f5707000)
libicuuc.so.55 => /usr/lib/x86_64-linux-gnu/libicuuc.so.55 (0x00007f30f5373000)
libpcre16.so.3 => /usr/lib/x86_64-linux-gnu/libpcre16.so.3 (0x00007f30f510d000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f30f4f09000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f30f4d01000)
/lib64/ld-linux-x86-64.so.2 (0x00007f30fe38f000)
libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f30f4af1000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f30f48cf000)
libproxy.so.1 => /usr/lib/x86_64-linux-gnu/libproxy.so.1 (0x00007f30f46ae000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f30f44aa000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f30f42a4000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f30f409c000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f30f3e2c000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f30f3b82000)
libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f30f395c000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f30f3733000)
libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x00007f30f3530000)
libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0 (0x00007f30f332d000)
libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f30f3126000)
libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1 (0x00007f30f2f23000)
libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007f30f2cf2000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f30f2ae0000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f30f28dd000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f30f26d7000)
libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f30f24d5000)
libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007f30f22bc000)
libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007f30f20b7000)
libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007f30f1eb1000)
libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f30f1c9f000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f30f1c1a000)
libicudata.so.55 => /usr/lib/x86_64-linux-gnu/libicudata.so.55 (0x00007f30f0163000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f30eff41000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f30efc60000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f30efa4c000)
Resumindo, se a sua biblioteca exigida (você não disse qual é) é compatível com seu sistema, um link simbólico resolve, simples e rápido, se ela é incompatível , na melhor das hipóteses o aplicativo funciona mal ou não funciona.
No tempo do slackware algumas coisas eu baixava código fonte do aplicativo, de bibliotecas e compilava tudo até dar certo ou totalmente errado, e as vezes quebrava o sistema mesmo. É sim possível ter várias versões de biblioteca, mas não é recomendável.
Você não forneceu nenhum detalhe do software que instalou então fica difícil até sugerir uma abordagem, mas espero ter deixado claro porque você está com esse problema.