GitHub Application Manager
A linux tool similar to apt
and yum
that is used to search for and install applications from GitHub. Works on many different application types that are stored in repos as releases, including:
- deb
- rpm
- AppImage
- Electron (tar/gz)
gam
will automatically add a command to your PATH
and if GNOME is installed it will add a shortcut to the application as well. These are automatically removed when uninstalling applications.
Proud to have made the top spot on r/github and r/coolgithubprojects on launch day.
Contents
Installation
First, install the prequisites.
Debian/Ubuntu:
apt install -y ncurses-bin debianutils jq curl tar xz-utils
CentOS:
yum install -y ncurses which jq curl tar
Then install gam
:
sudo curl https://raw.githubusercontent.com/Fmstrat/gam/master/gam -o /usr/local/bin/gam
sudo chmod 755 /usr/local/bin/gam
Configuration
The first time you use gam
, you will need to run:
sudo gam create-config
This will create an /etc/gam.conf
file with the following settings that can be configured to your liking.
# The folder to install applications into
INSTALL_FOLDER=/opt/github
# Where to symlink executables for the path
BIN_FOLDER=/bin
# Where to place temporary cache files
TMP_FOLDER=/tmp/gam
# If you hit GitHub API limits, you can use a Personal Access Token
# Create one here: https://github.com/settings/tokens/new
#GITHUB_CREDS=username:token
GitHub API limits
If you use gam
a lot at once, you may hit GitHub API limits. If you find installs or searches are not working, create a Personal Access Token (PAT) here: https://github.com/settings/tokens/new
This can be included in the /etc/gam.conf
file to increase API limits to 5000 hits per day.
Usage
Usage can be shown by typing gam
on the command line.
$ gam
Usage:
gam list # List installed applications
gam search <search string> # Get a list of repos that match a search string
gam install <author/repo> # Install one or more applications
gam check [<author/repo>] # Check currently installed applications for updates
gam upgrade [<author/repo>] # Upgrade one, more, or all currently installed applications
gam remove <author/repo> # Remove one or more applications
gam create-config # Create initial configuration
gam update # Update your version of gam
Optional paramaters:
-i|--include <string> [--include <string 2>]
# If more than one asset is matched during an install, use the --include flag to match
# the asset with the include string. Every include string must match to be considered
# for install.
-e|--exclude <string> [--exclude <string 2>]
# If more than one asset is matched during an install, use the --exclude flag to not
# match any assets with the excluded string. Every exclude string must not match to be
# considered for install.
-u:--user
# Run in rootless user mode with a ~/.config/gam/gam.conf configuration, executables in,
# ~/bin (by default), and no support for rpm or deb files.
-d|--debug
# Debug mode to show what is happening behind the scenes.
User mode
You may run this application without sudo
or root by utilizing the --user
flag. The biggest changes will be that application shortcuts will be placed into ~/bin
by default instead of your path, and dep
and rpm
packages are not supported. The basic process is:
gam create-config --user
gam list --user
gam install author/app --user
Automatic update checking
The gam check
command will return an exit code of 133
if an application needs updating. This can be used to auto-check for updates. A combination of cron
and your bashrc
can be used to check for updates.
To check for changes daily at the system level:
echo '/usr/local/bin/gam check >/dev/null 2>&1; echo $? > /tmp/gam-status' |sudo tee /etc/cron.daily/gam
sudo chmod +x /etc/cron.daily/gam
Then, to have your shell alert you about updates:
echo 'if [ -f /tmp/gam-status ] && (( $(cat /tmp/gam-status) == 133 )); then echo "[:] There are new gam updates"; fi' >> ~/.bashrc