I see a lot of posts for apps that I would like to try but they all send me to a Github link - What is the process for getting an executable of these apps? Do I have to compile them myself? OR am I missing the .exe or .zip file option?
I really feel like I’m missing something easy…
From the main project page on GitHub there’s a button for “Releases”, which can be a source to get exe or zip archives.
Yeah releases > assets
Just be aware that not everyone releases executables. Some can only be compiled.
It’s entirely up to the developers of the project. If there are premade binaries, it would be under releases.
I’m quite familiar with GitHub now, but remember being new and it was super confusing finding how to actually get the thing. Often it was different per repo. Worse if you’re on mobile (e.g. to get an APK) and almost everything is hidden by default.
But yeah as others have said, first check the readme on the main page for instructions to make sure you’re doing it right, then if that doesn’t help check the releases page that’s linked on the right or on mobile scroll almost all the way to the bottom and look for the releases link in amongst the other stuff.
It may be a good idea to link to which repo you are looking at to get specific advice if what you’ve got so far isn’t helping.
Projects don’t always provide pre built binaries. Some do, some don’t. Check the “Releases” page for the project and see if there’s an executable provided, otherwise you’ll need to build the project yourself or find someone who has.
Are you on mobile?
If I’m mobile I switch to desktop mode.
On the right side, like that separate column there, there is usually a link to the most recent build package.
Edit:
(Desktop mode on Firefox)
So I just looked. From the GitHub users home page… On the right there’s an About column. There’s some info and then scroll a bit it should say “releases”.
Click that.
On that page scroll till you find an “assets” section. This section has the download links.
If you’re on mobile the GitHub android app makes a handy browser. I have no problem grabbing releases with it on my phone and tablet.
Why switch to desktop mode? In mobile, the Releases section is easily accessible near the bottom of the page.
Now that I know I probably won’t. The first time I looked on mobile I couldn’t find it so I just turned to desktop mode ever since.
This is going to depend completely on the project, unfortunately.
GitHub, in the most common case, is going to host the source code for a project. This source code is the blueprint to make the artifact. Artifact in this case can be an executable like a .exe-file, a .apk-file, an ELF-file, a library of some flavour, or perhaps just the verbatim source code to be interpreted by a script interpreter.
For projects that compile to a .exe-file, check the releases tab for the project, in which the developers may have built the artifact for you to use. If not, check the readme for build instructions. Sometimes there may be recommended steps for installation, such as using a package manager or app store.
There’s usually a guide in the README. If there isn’t, it’s a shit repo, but you’re gonna have to compile it yourself.
There’s a lot of shit repos out there with no obvious instructions where to find the installer
90% of the time, you need to build it yourself. If you’re lucky then its a simple git clone and cmake job. Often it isn’t. I once spent half a day building nested dependencies for a project i wanted to work on.
If there aren’t compilation instructions in the readme, check the source code for a “/docs” durectory. Sometimes you can find instructions there.
Thanks for all of your replies. I honestly thought I was going to get a bunch of “just Google it” answers but I appreciate all the help.
At least now I know more about GitHub and what to do
If binaries aren’t pre-built, compiling it yourself is not particularly difficult (assuming it’s a decent repo that’s well-maintained).
-
Readme often has a list of dependencies and basic instructions. On linux, build steps might look something like
make && sudo make install
, possibly with a./configure
thrown in beforehand. You can, of course, runconfigure
where present with a help flag to see all available options, and change them as you like, but many programs ‘just work’ with the default options on a variety of platforms. -
Before that, you have to install the dependencies. Often, it’s a copy/paste command in the readme, and on Debian might look like
sudo apt install libsomething libsomethingelse libsomethingelse
- the overwhelming majority of the time, that gives you the correct versions (may be part of package name) -
Otherwise, you can
make
several times, and if you read the errors, it will often tell you what’s missing and you can iterate through the deps that way. -
I don’t suggest building the dependencies initially. It might be necessary (If memory serves, you still need to drop the PCRE library source in a specific place for Nginx to find, for instance, but the build process also builds that). It’s usually not necessary, and if you delve too far down it can be a frustrating experience.
I’m not in the habit of building for windows, as the only computer I run it on is my work computer, but there may be instructions for that in readme as well. If the dependency installs fail, you’ll have to search your distro’s package manager to find the correct name of the package on your distro, but once it’s present you should be able to proceed from there without problems (in well-maintained projects)
If it doesn’t build, you can always open an issue on the GitHub - there are no stupid questions, particularly if you search issues/closed issues first for keywords in the errors you see. The vast majority of projects are run by decent people who respond reasonably and/or some community member will jump in with an answer.
For some languages, the build steps look very different - Maven projects in Java come to mind. I don’t love that tool, but it’s less evil than some of the alternatives. OTOH, if it’s rust, the build steps are very quick and painless - including installing Rust in the first place.
-
You have to compile it, which is very nuanced, there should be compile instructions for whatever it is you’re building.
i was poking around last night trying to figure it out myself - was trying to get a fork of a mainframe emulator working by compiling the code from github but eventually ran into some weird issues and wrote the whole thing off as a fun thought experiment.
maybe I’ll try again next week