5 votos

¿Cómo obtener qué PATH está disponible para una aplicación GUI?

Necesito entender qué versión de sqlite3 utiliza una aplicación GUI.

Tengo varias versiones instaladas en mi máquina y quiero saber cuál está disponible para la aplicación GUI de MacOS. Debe haber un lugar que defina un PATH para las aplicaciones GUI.

¿Cómo puedo saberlo? ¿Cómo puedo modificarlo?

0 votos

Algunas aplicaciones y frameworks proporcionan y utilizan su propio binario sqlite (por ejemplo, Onyx o Mono).

0 votos

Usted necesita saber cómo se construyó la aplicación - buenas aplicaciones tendrán la biblioteca sqlite en su paquete o estáticamente vinculado ot que va a utilizar la definida en su construcción o si originalmente escrito para otro Unix el LD_LIBRARY_PATH podría ser utilizado - aunque las versiones posteriores de OSX hacer que sea más difícil de hacer developer.apple.com/library/content/documentation/ En resumen, pregunte al promotor

7voto

Steve Evans Puntos 155

Asumiendo que SQLite está enlazado dinámicamente en la aplicación que se está ejecutando, puedes encontrar el PATH utilizando la variable de entorno ps comando.

Como alternativa, utilice Monitor de actividad para ver la aplicación Archivos y puertos abiertos . A continuación, puede buscar en la salida para ver si la biblioteca se mantiene abierta por el proceso.

Ruta - Uso ps

PATH forma parte de las variables de entorno de un proceso. Si puede verlas, encontrará PATH .

Utilice el ps herramienta con las banderas -wwwE en MacOS para ver las variables de entorno pasadas a un proceso:

ps -p <PID> -wwwE

Ver ¿Variables de entorno de un proceso en ejecución en Unix?

Ejemplo

A continuación se muestra un ejemplo de salida de la ejecución de este comando en la aplicación gráfica de Mac Xcode:

ps -p 1648 -wwwE

  PID TTY           TIME CMD
 1648 ??         0:03.46 /Applications/Xcode.app/Contents/MacOS/Xcode TMPDIR=/var/folders/b2/[redacted]n/T/ __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x2 HOME=[redacted] SHELL=/bin/bash Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.[redacted]/Render SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.[redacted]/Listeners PATH=/usr/bin:/bin:/usr/sbin:/sbin LOGNAME=[redacted] DISPLAY=/private/tmp/com.apple.launchd.[redacted]/org.macosforge.xquartz:0 XPC_SERVICE_NAME=com.apple.dt.Xcode.64852 MallocNanoZone=0 USER=[redacted] XPC_FLAGS=0x1

Como menciona Mark en un comentario más abajo, esto puede no mostrar la biblioteca vinculada.

Información de la Biblioteca Vinculada - Uso otool

Como otra alternativa, intente otool para extraer la información de la estructura y la biblioteca vinculada. El comando a ejecutar es:

otool -L <path to binary>

Usando Xcode.app como ejemplo, el comando y la salida son:

$ otool -L /Applications/Xcode.app/Contents/MacOS/Xcode 
/Applications/Xcode.app/Contents/MacOS/Xcode:
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0)
    @rpath/DVTFoundation.framework/Versions/A/DVTFoundation (compatibility version 1.0.0, current version 1.0.0)
    @rpath/DVTKit.framework/Versions/A/DVTKit (compatibility version 1.0.0, current version 1.0.0)
    @rpath/IDEFoundation.framework/Versions/A/IDEFoundation (compatibility version 1.0.0, current version 14154.0.0)
    @rpath/IDEKit.framework/Versions/A/IDEKit (compatibility version 1.0.0, current version 14154.0.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1452.20.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1561.40.104)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1452.20.0)
    @rpath/libswiftAVFoundation.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreAudio.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreFoundation.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreImage.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftCoreMedia.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftDarwin.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftDispatch.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftFoundation.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftIOKit.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftMetal.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftQuartzCore.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftXPC.dylib (compatibility version 1.0.0, current version 902.0.48)
    @rpath/libswiftsimd.dylib (compatibility version 1.0.0, current version 902.0.48)

Reenlace

Reenlazar un binario no es aconsejable pero parece posible. Véase Cómo copiar (y revincular) binarios en OSX utilizando otool e install_name_tool para obtener instrucciones detalladas.

1 votos

Sin embargo PATH no se utiliza para las bibliotecas de carga dybamic

0 votos

Gracias. Con ps @coolnodje puede encontrar la información de la ruta pedida en la pregunta, y he ampliado la respuesta para introducir otool para mostrar las bibliotecas enlazadas. Esperemos que esto les ayude a encontrar la información que buscan.

0 votos

Espero que sí, pero la adición a la ruta para obtener las bibliotecas compartidas es la forma de Windows, así que sospecho que es más complejo - y su respuesta no gibe una manera de chnage las librerías :(

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X