¿Cómo puedo excluir algunas routes de acceso a la biblioteca enumeradas en "pkg-config –variable pc_path pkg-config"?

Tengo Ubuntu 14.04 actualizado de 12.04 haciendo dist-upgrades. Hice muchas instalaciones manuales como ffmpeg, libglib, etc. en el pasado. Ahora tengo una buena distribución personalizada, funciona bien pero tengo problemas al intentar comstackr aplicaciones. Se origina en conflictos de biblioteca entre packages instalados manualmente desde el código fuente y las bibliotecas de distribución nativas. Un chico me aconsejó cambiar el nombre de /usr/local , pero el arranque falló en el próximo reinicio.

Cuando busco directorys agregados por pkg-config con

  pkg-config --variable pc_path pkg-config 

list

  /usr/local/lib/i386-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig 

No quiero que busque routes en /usr/local/lib...

¿Cómo puedo prohibir esas routes para no permitir que pkg-config busque?

Las cosas en /usr/local generalmente reemplazan las cosas en /usr , así que estoy un poco confundido sobre por qué instalarías bibliotecas allí para tener una "buena distribución personalizada", pero luego no querías comstackr contra ellas. Esas son las bibliotecas que usará el sistema en realidad.

De todos modos, man pkg-config reclama la ruta de búsqueda básica:

es libdir / pkgconfig: datadir / pkgconfig donde libdir es libdir para pkg-config y datadir es el datadir para pkg-config cuando se instaló.

Esto implica que están comstackdos. Noté que es diferente en ubuntu que en fedora: el primero es largo e inclusivo, mientras que el último es breve y exclusivo; en fedora tengo que establecer $PKG_CONFIG_PATH para include /usr/local .

Como las routes en $PKG_CONFIG_PATH se verifican primero , puede establecer:

 PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig 

El hecho de que estos estén al final de las routes incorporadas no importará; si el cheque llega hasta allí sin encontrar nada, no hay nada que encontrar.


Para demostrar cómo funciona esto, cree un directory temporal /opt/bs/pkg y copie un file .pc de uno de los directorys en la ruta pnetworkingeterminada en él, por ejemplo, alsa.pc Primer cheque;

 > pkg-config --libs alsa -lasound 

Ahora vaya a /opt/bs/pkg/alsa.pc y cambie -lasound (está en el campo Libs: -foobar a -foobar . Establezca $PKG_CONFIG_PATH y vuelva a intentarlo:

 > PKG_CONFIG_PATH=/opt/bs/pkg pkg-config --libs alsa -foobar 

Eureka, $PKG_CONFIG_PATH ha anulado las routes incorporadas … puede eliminar /opt/bs/pkg , por supuesto.