GNS3 / gns3-gui

GNS3 Graphical Network Simulator
http://www.gns3.com
GNU General Public License v3.0
2.12k stars 434 forks source link

Appimage/Flatpak releases #2911

Open bgeschka opened 4 years ago

bgeschka commented 4 years ago

Hi all, i see issues when running the gns3-gui on archlinux and most probably other distro's too. Several times i tried to convince people to use gns3-gui against e.g. my gns3-server or their own i ran into issues of either:

If we got a dedicated machine in our lan with gns3-server, we can have that machine rot in any weird state it wants, as long as gns3-server runs fine as no one has to deal with it directly but only through the gui. At the moment its more feasible for me deploying the windows build with wine for compatibility reasons.

Can we have AppImage or Flatpack or a similar solution for the gns3-gui including python dependencies (maybe QT and maybe Wireshark versions known to work)? I know the images might get probably huge with the dependencies, but then this would be a portable solution to run on probably any desktop linux without major pains and without breaking stuff.

I know there's things link python virtualenv and other ways to get it running, but most people just won't spend the time getting all of this together, nor do i want to have to do this when trying to get people use it on their machines.

Anyways thanks for the awesome project and keep up the good work :)

grossmj commented 4 years ago

Thanks for posting this. Appimage is definitely something we would like to add :+1:

ycharbi commented 4 years ago

Yes, Appimage is a best choice ! Thank you for what you're doing! GNS3 is a really good tool :clap:.

PranavBhattarai commented 4 years ago

@grossmj I don't want to create a new GitHub issue but can u please provide Snap.

snap install gns3 would have been great to have.

Since according to Canonical, PPA is the worst thing they created because they bundle all unnecessary dependencies which is what Flatpak is doing right now.

(This doesn't mean I am saying, "Don't make flatpak packages. I don't like flatpak, etc.".)

grossmj commented 4 years ago

@PranavBhattarai thanks, I am going to check it out soon since we have issues building a classic Debian package for Ubuntu 20.04 LTS: https://github.com/GNS3/gns3-server/issues/1746

ycharbi commented 3 years ago

hello, I never make appimage but I'd like to try it. What is the method you use to compile GNS3 from sources ? I feel it's important to make this type of package. If I can get something done, I think it could help the problem.

35609902357 commented 3 years ago

With the release of Debian 11 this issue has become very relevant. Installation instructions for Debian 10 are lengthy and complicated compared to a Flatpak and AppImage, and since there's the aforementioned building issue on Ubuntu this might be the chance to finally switch to a universal package manager. This would certainly spread the usage of this piece of software around all the Arch, Fedora, OpenSUSE and minor distros users. Flatpak and AppImage should be considered over Snap anyway because the latter has ethical issues being Canonical's proprietary system and has lots of functional issues on non-Ubuntu distros whereas Flatpak and AppImage are fully open-source and supported more and better than Snap.

grossmj commented 3 years ago

Thanks for your input. I tried Snap and found it overly complicated, I prefer the simplicity of AppImage. Do you have a preference between Flatpak and AppImage?

ycharbi commented 3 years ago

Je préfère de très loin Appimage. Ce système n'impose pas de dépendances côté client et un simple copier/coller depuis un dépôt HTTP ou une clé USB permet "d'installer" l'application.

Avec Flatpak il faut installer les outils et charger des "runtime" qui sont d'une lourdeur incroyable (une pensée à ceux qui ont l'ADSL...). On se retrouve avec un disque (souvent SSD où les Go coûtent cher) remplis de dépendances inutiles pour juste utiliser une application (j'ai déjà eu un traitement de texte à plus d'un giga octet avec Flatpak). De plus, si on utilise une distribution qui ne fournis pas Flatpak, l'application sera inutilisable, ce qui n'est pas le cas avec Appimage. Enfin, lorsque l'on veut un système minimaliste, Flatpak brise définitivement tous nos efforts par les simples défauts que j'ai énoncé plus haut. Non clairement, Appimage est vraiment mieux. Il faudra simplement penser à livrer un ".desktop" avec pour avoir le raccourci dans l'interface graphique.


I much prefer Appimage. This system does not impose any client-side dependencies and a simple copy/paste from an HTTP repository or a USB key allows to "install" the application.

With Flatpak, you have to install the tools and load the "runtime", which are incredibly heavy (a thought to those who have ADSL...). You end up with a disk (often SSD where GB are expensive) full of useless dependencies just to use an application (I already had a word processor with more than one gigabyte with Flatpak). Moreover, if you use a distribution that does not provide Flatpak, the application will be unusable, which is not the case with Appimage. Finally, when you want a minimalist system, Flatpak definitely breaks all your efforts by the simple flaws I stated above. No, clearly, Appimage is much better. You'll just have to think about delivering a ".desktop" with it to have the shortcut in the GUI.

35609902357 commented 3 years ago

@grossmj Both Flatpaks and AppImages have their pros and cons. While it's true Flatpaks require a few hundreds MB of runtime, this is only for the first one, the following Flatpaks you install will be light as you already have the runtime installed. In the long run AppImages require more data to download because everytime they are updated you need to download the whole app and the bundled libraries for each application. Flatpaks are also sandboxed by default, AppImages need to be run on top of firejail and that often doesn't work (as in they don't launch), and even when it works Flatpak's bubblewrap is a superior sandbox. Having it listed in Flathub will also give the project more visibility. On their side AppImages are like Windows portable applications, they are download and run. They also work more reliably than Flatpaks. I think you should provide both, just make sure to ship Flatpak via Flathub and to provide a self-installing .desktop file and auto-update feature for AppImage (i.e. the AppImage should be named something like GNS3.AppImage, not GNS3_v_x.xx.xx.AppImage otherwise the .desktop file will have to be manually changed after every update). You should also make reproducible builds. Your users will then decide which one to use. Even though it might seem daunting to provide two different packaging systems keep in mind you won't have to maintain the Debian repos and the PPAs for present and past releases.

arrowmaster commented 2 years ago

This needs more attention as the jammy ppa is incompatible with Debian Bookworm because the .dpkg packages are now compressed with zstd and the focal packages are built for a too old version of python to work. The only current way to install on Debian Bookworm is via pip.

Mehdi-YC commented 1 year ago

any news on this ? maybe at least a vm so we can load it faster since the install instructions are not "compatible" with some new distro releases , it might be challenging to put it in an app image or flatpak or we could use the system docker for networking or package only the gui and the server ?

zefr0x commented 3 months ago

Hey,

I began packaging GNS3-GUI as a Flatpak: https://github.com/zefr0x/flathub/tree/gns3-gui

For now there might be some limitations when running external tools like wireshark or xterm. If possible i will find a way to get around that maybe by submitting some patches to the upstream in the worst case.

Probably the best solution is just shipping those tools as plugins.

P.S. xterm is an X11 app, so we need to ship another terminal to work better with Wayland.

We also need a com.gns3.GNS3-GUI.metainfo.xml file in upstream to describe the application. If there was no one, i will submit a PR in the near future.


For the GNS3 Server, it will be shipped as a plugin (since it's optional), but there might be some limitations since it does interact with low level stuff. It there was no way to get around those limitations they will just be disabled in the Flatpak version.

When I get most server stuff woking I will post an update.

grossmj commented 3 months ago

Thanks, I am going to check this out in detail soon.

For the GNS3 Server, it will be shipped as a plugin (since it's optional), but there might be some limitations since it does interact with low level stuff.

Just wondering if gns3-server should be shipped as a plugin because there is the case when users only want the server installed on a remote Linux machine or VM? Also, now you choose to only install the gns3-server and use the web-ui for all your projects.

zefr0x commented 3 months ago

For the GNS3 Server, it will be shipped as a plugin (since it's optional), but there might be some limitations since it does interact with low level stuff.

Just wondering if gns3-server should be shipped as a plugin because there is the case when users only want the server installed on a remote Linux machine or VM? Also, now you choose to only install the gns3-server and use the web-ui for all your projects.

Flatpak is not designed to ship stand alone non-gui applications (also it will not be accepted in Flathub). For hosting the gns3-server by it self its better to be packaged as a snap. I haven't done one before, but snaps are better for server-focused applications.

grossmj commented 3 months ago

Ok got it, thanks for this clarification :+1:

grossmj commented 2 months ago

We also need a com.gns3.GNS3-GUI.metainfo.xml file in upstream to describe the application. If there was no one, i will submit a PR in the near future.

Have you made progress? please don't hesitate to submit a PR. Thanks 👍

ycharbi commented 1 month ago

Hello,

Some time ago I tried to build an AppImage for GNS3 without success due to the multitude of components it contains (non-embedded Python dependencies in particular). Do you have an offline installation method I could try again? It would be even better to be able to start from the sources of all the components eventually, so as not to depend on any external repository for building the image. If you know how to do a "from scratch" installation from the sources of all the dependencies and GNS3 itself, I'd love to hear from you!

For those who'd like to get started, I've written a procedure for building an AppImage for a simple Electron application (VSCodium): https://doc.ycharbi.fr/index.php/Appimage#Construction_d'une_image