все проблемы (лучше даже саазать вот так: "все эти вендовенькие проблемы") -- решаются прописыванием ИНДИВИДУАЛЬНЫХ переменных окружения для каждого из Java-приложений(да и вообще слово Java -- тут непричём. для Java это CLASSPATH, для Python это PYTHONPATH, для обычного C/C++ это LD_LIBRARY_PATH, ... так-что суть не меняется)
манипулированием путей для переменных окружения -- пусть занимаются пакетные манеджеры (эти пакетные менеджеру уже сегодня способны копировать библиотеки не просто в [помойку] /usr/lib/ , а аккуратненько: в /usr/lib/my_super_lib_v1/ или /usr/lib/my_super_lib_v2/ )
для прописывания же индивидуальных переменных окружения внутри запускаемой программы (ведущщим к путям где библиотеки) -- пусть используются sh-скрипты`Wrapper`ы
....в чом проблемато?
не придётся же для каждой программы которая использует /usr/lib/my_super_lib_v2/ делать индивидуально каждый раз копию директории /usr/lib/my_super_lib_v2/ ... так-что в какомто смысле принцип "единой библиотеки для всех" остаётся
********************************************************************************
мало того! если расширить проблему ещё глубже, то я вообще щитаю, что _всё_ что установленно как _зависимости_программ_ (а не как _требуется_для_человека_ ) -- не должно класться _напрямую_ в /usr/bin/ и /usr/lib/ .... всё это должнобыть _строго_ в /usr/bin/my_program_version_X.Y.Z/ и /usr/lib/my_library_version_X.Y.Z/
...а вот если _именно_человек_ хочет для себя (а не для решения зависимости) установить какойнить программный пакет, то в этом случае пусть пакетный-менеджер распокует для человека sh-скрипт-Wrapper , внутрь директории /usr/bin/ , (который внутри своего sh-кода будет ссылаться на /usr/bin/my_program_version_X.Y.Z/ и /usr/lib/my_library_version_X.Y.Z/ )
ато захломили весь GNU/Linux всяким гавном внутри ${PATH} и ${LD_LIBRARY_PATH} , аж тошнит!!.
я хочу какуюнить прогу поставить, а мне всемте с этой программой ещё кучу утилит внутри ${PATH} появляется :-/ ... ЗАЧЕМ ОНИ МНЕ? они НЕ МНЕ нужны а той программе которую я устанавливаю!! а мне ненужны! а если будут нужны то я установлю их!
...например если я хочу установить себе Gajim, а Gajim требует для себя Python и SQLite.... ... ... то ПУСТЬ пакетный менеджер установит Python (какой-нить там Python-2.6) внутри отдельной подериктории!, которая не будет поумолчанию в _человеческом_ ${PATH} .
...а человек же для себя может постановить индивидуальный Python (ту версию которую он хочет), и ВОТ ТОГДА-ТО внутри ${PATH} должна появиться команда "python" ! но не раньше!