/instant_install

Unifying package manager interfaces!

Primary LanguageShell

Instant Install

Simple script that lets you use the same set of commands for all(-ish) package managers, regardless of distro or OS.

Every package manager has its own quirks and weird edge cases and forgettable syntax for common operations. This is my attempt to streamline that inconsistency since I use so many different systems all the time.

Usage

usage: inin command [options]
	unified and simplified cross-distro and cross-platform package management

commands:
	inin (d)own(l)oad		# download a package without installing it
	inin (fi)les			# list the files from a named package
	inin (f)i(n)d			# find which package provides given file (some can only search installed packages)
	inin i(nf)o			# display description for package
	inin (in)stall			# install a package
	inin (re)fresh			# get latest package list (may also upgrade package manager itself)
	inin (r)e(m)ove			# remove and uninstall package
	inin (se)arch			# search for a package by name
	inin (up)grade			# upgrade all outdated packages

in progress:
	inin search --all package   # TODO: find a package by looking in description and tag fields as well
	inin search --regex "^pack" # TODO: find a package by regex
	inin install ./package.deb  # TODO: install package from local file
	inin upgrade package        # TODO: upgrade just this one package to the latest without touching depdendencies
	inin upgrade --deps package # TODO: upgrade just this package and its dependencies
	inin -m eopkg               # TODO: specify a package manager (for when multiple are available)
	more package managers       # TODO: scoop (Windows), pkgman (Haiku), others...

Feel free to add your own OS/distro or missing functionality:
	https://github/com/acook/instant_install

Supported Package Managers

Package manager listed with its command coverage and notes:

  • eopkg [complete]
  • apt/apt-get [complete - will use apt over apt-get if possible, will install apt-file as needed automatically]
  • homebrew [nearly complete]
  • pacman [nearly complete - inin is essential unless you enjoy googling basic functions]
  • emerge [only updating - the most ridiculous task to get right]

I haven't used an RPM-based system in ages, which is why its omission is glaringly obvious. Pull requests accepted!

This script uses a couple bashisms and invokes bash on its shebang line. A pure d/a/sh version would be great, I just haven't gotten around to testing it. Works on every version of bash released this millenium and probably beyond.