#!/bin/bash
###############################################################################
# Universal Multi-Distro Mostly Used Aliases Script ###########################
########################################## More than 20 pkg managers supported!
# What is this script for? It creates aliases that can be used as simple as:
# i = install package, up = update repos, ug = upgrade sytem, r = remove, etc.
# This scripts works with any distro (it knows more than 20 package managers).
# It also adds "lsb" command which shows you info about your distro & packages.
# And you don't have to look which actual package manager your system uses.
###############################################################################
# Based on package management article from distrowatch which is here:
# http://distrowatch.com/package-management
###############################################################################
# This script was written in the idea of uniting several package management
# system into one single command that can be issued easily.
# This script DOES NOT detect your distros because it is not so important
# while we just want to see if you have any package managers installed.
# That wouldn't be a problem because small amount of people uses more than one
# package managers (guys you will have to fix this script in this case)
# ################## Currently supported package managers #####################
# Main distributions: Ubuntu, Debian (apt-get), OpenSUSE (zypper),
# Fedora, CentOS, RedHat (yum/dnf), Mandriva, Mageia (urpmi).
# Slackware distros: Slackware (slackpkg), Vector (slapt-get), Zenwalk (netpkg),
# Independent distros: Sabayon (equo), Arch/Manjaro (pacman),
# Foresight, rPath (conary), Alpine (apk).
# Multi-distro (distro-agnostic) package managers: Mandria, OpenSUSE (smart),
# Fedora, Ubuntu, openSUSE, Mandriva (pkcon).
# Source package managers: Gentoo (emerge), Lunar (lin), Source Mage (cast),
# New, binary pac.-man. systems: NixOS (nix), Void (xbps), Ubuntu (snappy).
# FreeBSD: 10.0+ (pkg).
# Totally this script supports 6 categories of package managers, 20+ pcs.
###############################################################################
# Written 19~23 feb 2016 by Security XIII at Gmail Dot Com.
# v 0.04 alpha, has to check it on many distros ! but probably usable somehow #
###############################################################################
# Re-creates empty bash aliases file for you (fix if needed)
afile="$HOME/.bash_aliases"
rm $afile; touch $afile
# If your distro/user doesen't need sudo just comment the following line:
sn='sudo'
# Choose your editor (to open mirror files)
ed='nano'
# Distro founded
df="You're using"
# Set debug="echo" to turn on debug mode (does not make any syschanges)
debug=""
# Error handling
err1="echo"
err2="not needed"
# Aliases (you can edit them to your like)
mkaliases() {
shopt -s expand_aliases
$debug echo "alias i=\"$sn $1 $2\"" >> $afile # installing packages (from repo)
$debug echo "alias ii=\"$sn $3 $4\"" >> $afile # installing packages (from file)
$debug echo "alias r=\"$sn $5 $6\"" >> $afile # removing packages
$debug echo "alias up=\"$sn $7 $8\"" >> $afile # updating packages (list)
$debug echo "alias ug=\"$sn $9 ${10}\"" >> $afile # upgrading packages (themselves)
$debug echo "alias s=\"$sn ${11} ${12}\"" >> $afile # searching packages
$debug echo "alias li=\"$sn ${13} ${14}\"" >> $afile # list installed packages
$debug echo "alias rl=\"$sn ${15} ${16}\"" >> $afile # list your repositories
$debug echo "alias ra=\"$sn ${17} ${18}\"" >> $afile # add new repository or PPA
$debug echo "alias rr=\"$sn ${19} ${20}\"" >> $afile # removes repository or PPA
$debug echo "alias lsb=\"echo /etc/*_ver* /etc/*-rel*; cat /etc/*_ver* /etc/*-rel*\"" >> $afile # info
source ~/.bash_aliases
}
# Command to check existence of package manager (can also be command or type)
checkcmd='hash'
# To add your own package manager, write function for it similar to
# the following functions, adding "f" letter in the front of package
# manager name, and add it to the end of checkarray list.
# Example: your package manager is "zeta", write function with the name
# "fzeta" similar to others. Last step, add it to the end of 'checkarray' array.
# When writing functions, include options from mkaliases one after another
# (!) Don't forget to include empty places '' if no variable is needed (!)
# (!) You should pass total of 20 variables, most of which shouldn't be empty.
# Writing own function help sample
fapt-get() { s='apt-get'; echo "$df $s on Debian/Ubuntu"
mkaliases $s install dpkg -i $s remove $s update $s upgrade apt-cache search dpkg -l cat /etc/apt/sources.list apt-add-repository '' apt-add-repository -r
# ^funct ^$1 ^$2 ^$3 ^$4 ^$5 ^$6 ^$7 ^$8 ^$9 ^$10 ^$11 ^$12 ^$13 ^$14 ^$15 ^$16 ^$17 ^$18 ^$19 ^$20
# Variables just go one by one, one after another, from mkaliases list.
}
function fzypper { s='zypper'; echo "$df $s on OpenSUSE"
mkaliases $s install $s install $s remove $s refresh $s update $s search $s 'search -is' $s repos $s addrepo $s removerepo
}
function fyum { s='yum'; echo "$df $s on Fedora/CentOS"
mkaliases $s install $s localinstall $s erase $s check-update $s update $s list rpm -qa $s repolist 'cd /etc/yum.repos.d/' '&& ls' 'cd /etc/yum.repos.d/' '&& ls'
}
function furpmi { s='urpmi'; echo "$df $s on Mandriva/Mageia"
mkaliases $s '' $s '' urpme '' $s.update -a $s '--auto-select' urpmq '' rpm -qa urpmq --list-media $s.addmedia '' $s.removemedia ''
}
function fslackpkg { s='slackpkg'; echo "$df $s on Slackware"
mkaliases $s install $s install $s remove $s update $s upgrade-all $s search ls /var/log/packages/ cat /etc/slackpkg/mirrors "$sn $ed" '/etc/slackpkg/mirrors' "$sn $ed" '/etc/slackpkg/mirrors'
}
function fslapt-get { s='slapt-get'; echo "$df $s on Vector"
mkaliases $s --install $s --install $s --remove $s --update $s --upgrade $s --search $s --installed cat /etc/slapt-get/slapt-getrc "$sn $ed" '/etc/slapt-get/slapt-getrc' "$sn $ed" '/etc/slapt-get/slapt-getrc'
}
function fnetpkg { s='netpkg'; echo "$df $s on Zenwalk"
mkaliases $s '' $s '' $s remove "$err1" "$err2" $s upgrade $s 'list | grep' $s 'list I' $s mirror "$sn $ed" '/etc/netpkg.conf' "$sn $ed" '/etc/netpkg.conf'
}
function fequo { s='equo'; echo "$df $s on Sabayon"
mkaliases $s install $s install $s remove $s update $s upgrade $s search $s list $s repoinfo 'cd /etc/entropy/repositories.conf.d' '&& ls' 'cd /etc/entropy/repositories.conf.d' '&& ls'
}
function fpacman { s='pacman'; echo "$df $s on Arch/Manjaro"
mkaliases $s -S $s -U $s -R $s -Sy $s -Su $s -Ss $s -Q cat /etc/pacman.conf $ed /etc/pacman.conf $ed /etc/pacman.conf
}
function fconary { s='conary'; echo "$df $s on Foresight/rPath"
mkaliases $s update $s update $s erase "$err1" "$err2" $s updateall $s query $s query "$err1" "$err2" "$err1" "$err2" "$err1" "$err2"
}
function fapk { s='apk'; echo "$df $s on Alpine"
mkaliases $s add $s 'add --force' $s del $s update $s upgrade $s search $s info cat /etc/apk/repositories setup-apkrepos '' $ed /etc/apk/repositories
}
function fsmart { s='smart'; echo "$df $s on Mandriva/OpenSUSE"
mkaliases $s install $s install $s remove $s update $s upgrade $s search $s 'query --installed' $s 'channel --show' $s 'channel --add' $s 'channel --remove'
}
function fpkcon { s='pkcon'; echo "$df $s on Fedora/Ubuntu/OpenSUSE/Mandriva"
mkaliases $s install $s install-file $s remove $s refresh $s upgrade $s search $s search $s repo-list "$err1" "$err2" "$err1" "$err2"
}
function femerge { s='emerge'; echo "$df $s on Gentoo"
mkaliases $s '' "$err1" "$err2" $s '-aC' $s '--sync' $s '-NuDa world' $s '--search' qlist -I layman -L layman -a layman -d
}
function flin { s='lin'; echo "$df $s on Lunar"
mkaliases $s '' "$err1" "$err2" lrm '' $s moonbase lunar update lvu search lvu installed "$err1" "$err2" "$err1" "$err2" "$err1" "$err2"
}
function fcast { echo "$df $s on Source Mage"
mkaliases cast '' "$err1" "$err2" dispel '' scribe update sorcery upgrade gaze search gaze installed scribe index scribe add scribe remove
}
function fnix-env { s='nix-env'; echo "$df $s on NixOS"
mkaliases $s -i "$err1" "$err2" $s -e nix-channel --update nix-env -u nix-env -qa nix-env -q nix-channel --list nix-channel --add nix-channel --remove
}
function fxbps-install { s='xbps-install'; echo "$df $s on Void"
mkaliases $s '' "$err1" "$err2" xbps-remove '' $s -S $s -u xbps-query -Rs xbps-query -l xbps-query -L 'cd /etc/xbps/repo.d/' '&& ls' 'cd /etc/xbps/repo.d/' '&& ls'
}
function fsnappy { s='snappy'; echo "$df $s on Ubuntu Snappy"
mkaliases $s install "$err1" "$err2" $s remove "$err1" "$err2" $s update $s search $s list "$err1" "$err2" "$err1" "$err2" "$err1" "$err2"
}
function fpkg { s='pkg'; echo "$df $s on FreeBSD 10.0+"
mkaliases $s install $s add $s remove $s update $s upgrade $s search $s info "$err1" "$err2" "$err1" "$err2" "$err1" "$err2"
}
checkarray=(apt-get zypper yum urpmi slackpkg slapt-get netpkg equo pacman conary apk smart pkcon emerge lin cast nix-env xbps-install snappy pkg)
for i in ${checkarray[@]};
do
($checkcmd $i &>/dev/null) && f$i
done
echo "Aliases added. If you don't know them just open this script to find out."
Comments