Come ottenere quale PATH è disponibile per un'applicazione GUI?

3

Devo capire quale versione di sqlite3 è utilizzata da un'app della GUI.

Ho diverse versioni installate sulla mia macchina e voglio sapere quale è disponibile per l'app GUI MacOS. Deve esserci un luogo che definisce un PERCORSO per le app della GUI.

Come posso sapere? Come posso modificarlo?

    
posta coolnodje 08.04.2018 - 14:37
fonte

1 risposta

6

Supponendo che SQLite sia collegato dinamicamente all'applicazione in esecuzione, puoi trovare la variabile di ambiente PATH utilizzando il comando ps .

In alternativa, utilizza Monitoraggio attività per visualizzare Apri file e porte dell'applicazione. È quindi possibile cercare l'output per vedere se la libreria viene mantenuta aperta dal processo.

Percorso: utilizza ps

PATH fa parte delle variabili di ambiente di un processo. Se riesci a vederli, troverai PATH .

Utilizza lo strumento ps con i flag -wwwE su macOS per visualizzare le variabili di ambiente passate a un processo:

ps -p <PID> -wwwE

Vedi Variabili d'ambiente di un processo in esecuzione su Unix?

Esempio

Di seguito è riportato un esempio di output dall'esecuzione di questo comando sull'applicazione grafica Xcode per Mac:

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

Come indicato da Mark in un commento qui sotto, questo potrebbe non mostrare la libreria collegata.

Informazioni sulla libreria collegata - Utilizza otool

Come altra alternativa, prova otool per estrarre il framework collegato e le informazioni sulla libreria. Il comando da eseguire è:

otool -L <path to binary>

Usando Xcode.app come esempio, il comando e l'output sono:

$ 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)

Relinking

Ricollegare un binario non è consigliabile ma apparentemente possibile. Vedi Come copiare (e ricollegare) i binari su OSX usando otool e install_name_tool per istruzioni dettagliate.

    
risposta data 08.04.2018 - 16:01
fonte

Leggi altre domande sui tag