Você entendeu errado: bibliotecas "antigas" são instaladas em caminhos de todo o sistema, e esse é o comportamento desejável. O modo como funciona é: se duas versões de biblioteca são compatíveis no nível binário, você tem apenas uma instalada e cada aplicativo que usa essa versão usa o mesmo arquivo de biblioteca. Se duas versões da biblioteca não forem compatíveis no nível binário, você terá várias cópias instaladas, cada uma com seu próprio nome, e os aplicativos que requerem diferentes versões da biblioteca usarão o arquivo de biblioteca apropriado.
Por exemplo, se você tiver libboost-filesystem-1.49
instalado (em /usr/lib/libboost_filesystem.so.1.49.0
), isso não ajuda um aplicativo que requer a versão 1.42.0, porque os binários não são compatíveis. Esse aplicativo requer /usr/lib/libboost_filesystem.so.1.42.0
. Os gerenciadores de pacotes instalarão automaticamente a versão necessária da biblioteca quando você instalar um aplicativo. Se você tiver um aplicativo que requer 1,42 e outro que requer 1,49, você terá duas versões diferentes da biblioteca em /usr/lib
, cada uma com seu próprio nome de arquivo, para que possam viver juntas em paz. Atualmente, a maioria dos gerenciadores de pacotes também pode desinstalar automaticamente versões de bibliotecas que não são mais usadas por nenhum aplicativo.
Instalar bibliotecas em diretórios de aplicativos é uma maneira pobre de lidar com dependências, usado em sistemas operacionais que não possuem bons canais de distribuição e gerenciamento de pacotes. Para fazer as coisas funcionarem sem complicações, elas agrupam todas as bibliotecas exigidas por um aplicativo com o próprio aplicativo. Isso significa que você acaba com várias cópias da mesma versão da biblioteca, e não há uma maneira fácil de atualizar bibliotecas - você acaba com várias cópias obsoletas da mesma biblioteca.
Não há e não será uma opção para instalar bibliotecas em diretórios de aplicativos, porque ter um gerenciador de pacotes significa que você não precisa fazer isso.