GNS3 / gns3-server

GNS3 server
GNU General Public License v3.0
768 stars 258 forks source link

Local server does not verify $PATH env variable on Mac #2306

Closed VanDulti closed 4 months ago

VanDulti commented 8 months ago

I have a similar problem to #1655

If gns3-server is started by the GUI, the path is not loaded correctly. Calling curl -X GET "http://127.0.0.1:3080/v2/compute/qemu/binaries" will return only the three bundled qemu binaries.

If I however start the server by executing /Applications/GNS3.app/Contents/MacOS/gns3server, it works and my custom binaries are loaded correctly.

Any idea why this might be on Mac? Setup: Local Server that boots up with the gu

grossmj commented 8 months ago

Thanks, I fixed this. The local server started by the GUI will get $PATH.

VanDulti commented 8 months ago

Thanks, I fixed this. The local server started by the GUI will get $PATH.

Will this be in the next release, and if so, when would that be approximately?

grossmj commented 8 months ago

Will this be in the next release, and if so, when would that be approximately?

Version 2.2.44 should be released within the next 2 weeks.

VanDulti commented 6 months ago

Will this be in the next release, and if so, when would that be approximately?

Version 2.2.44 should be released within the next 2

Still not working, even in the newest version. Can you provide any update on this?

grossmj commented 4 months ago

Still not working, even in the newest version. Can you provide any update on this?

Please give it a try with v2.2.45 and let me know if the problem is still there. Thanks 👍

VanDulti commented 4 months ago

Doesn't work with v2.2.45.

image

grossmj commented 4 months ago

Strange. How have you installed your custom Qemu executables?

Can you execute one of the binary from the terminal? For instance qemu-system-i386 -version -nographic

Do you see anything in ~/.config/GNS3/2.2/gns3_server.log after curl -X GET "http://127.0.0.1:3080/v2/compute/qemu/binaries"?

Thanks.

VanDulti commented 4 months ago

I installed qemu using Homebrew.

qemu-system-i386 -version -nographic
QEMU emulator version 8.1.3
Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers

One line is added to ~/.config/GNS3/2.2/gns3_server.log after executing curl -X GET "http://127.0.0.1:3080/v2/compute/qemu/binaries":

2024-02-14 11:01:03 INFO web_log.py:211 127.0.0.1 [14/Feb/2024:11:01:03 +0100] "GET /v2/compute/qemu/binaries HTTP/1.1" 200 572 "-" "curl/8.1.2"

The resulting json shows only the three bundled versions:

[
    {
        "path": "/Applications/GNS3.app/Contents/MacOS/qemu/bin/qemu-system-ppc",
        "version": "2.10.1"
    },
    {
        "path": "/Applications/GNS3.app/Contents/MacOS/qemu/bin/qemu-system-i386",
        "version": "2.10.1"
    },
    {
        "path": "/Applications/GNS3.app/Contents/MacOS/qemu/bin/qemu-system-x86_64",
        "version": "2.10.1"
    }
]% 
VanDulti commented 4 months ago

When starting gns3server manually, gns3 shows the following (correct) output... strange indeed

image

grossmj commented 4 months ago

I can reproduce the problem, for some reason the GNS3.app doesn't get the full PATH environment variable. Please try to open the app from the terminal: open -a /Applications/GNS3.app, it worked for me.

grossmj commented 4 months ago

I did some research, looks like the best way is to configure launchctl to add custom paths. Start a terminal and type the following command.

sudo launchctl config user path $PATH

Then reboot as instructed and GNS3.app should see your homebrew Qemu executables. Please let me know if it works on your side. Thanks 👍

More information to set this system wide or undo any customizations can be found there: https://stackoverflow.com/questions/51636338/what-does-launchctl-config-user-path-do