X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=src%2Fpackage-manager-abstractions;h=f70bf1d01772d3d403c4a6f45d38d40f45429681;hb=846db7f606b4bea8d064b1c2edcb6a5ecdc4d935;hp=ca3b43bac7d8b7a08704c5b949e1ecbaa50a978e;hpb=6e2c8f47b4b3db766713a0ebd92505db6fa9d7fd;p=distro-functions diff --git a/src/package-manager-abstractions b/src/package-manager-abstractions index ca3b43b..f70bf1d 100644 --- a/src/package-manager-abstractions +++ b/src/package-manager-abstractions @@ -62,11 +62,21 @@ elif command -v apt-get &>/dev/null; then fi } pi() { + if dpkg -s -- "$@" &>/dev/null; then + return 0 + fi + while fuser /var/lib/dpkg/lock &>/dev/null; do sleep 1; done pupdate local s; [[ $EUID != 0 ]] && s=sudo - $s apt-get -y install "$@" + $s $PI_PREFIX apt-get -y install --purge --auto-remove "$@" } + pi-nostart() { + if dpkg -s -- "$@" &>/dev/null; then + return 0 + fi + while fuser /var/lib/dpkg/lock &>/dev/null; do sleep 1; done + pupdate local s; [[ $EUID != 0 ]] && s=sudo local f=/usr/sbin/policy-rc.d $s dd of=$f </dev/null; then exit 101 EOF $s chmod +x $f - pi "$@" + $s apt-get -y install --purge --auto-remove "$@" $s rm $f } pf() { - # scratch a very annoying itch. package description width as + # package name and descriptions + apt-cache search "$@" + } + pff() { + local s; [[ $EUID != 0 ]] && s=sudo + # nice aptitude search from emacs shell. package description width as # wide as the screen, and package name field small aptitude # manual can't figure out how wide emacs terminal is, of course # it doesn't consult the $COLUMNS variable... and in a normal # terminal, it makes the package name field ridiculously big # also, remove that useless dash before the description - local s; [[ $EUID != 0 ]] && s=sudo - $s aptitude -F "%c%a%M %p %$((COLUMNS - 30))d" -w $COLUMNS search "$@" + aptitude -F "%c%a%M %p %$((COLUMNS - 30))d" -w $COLUMNS search "$@" } pu() { local s; [[ $EUID != 0 ]] && s=sudo - $s apt-get -y purge "$@" + while fuser /var/lib/dpkg/lock &>/dev/null; do sleep 1; done + $s apt-get -y remove --purge --auto-remove "$@" + # seems slightly redundant, but it removes more stuff sometimes. $s apt-get -y autoremove } pup() { # upgrade + while fuser /var/lib/dpkg/lock &>/dev/null; do sleep 1; done pupdate local s; [[ $EUID != 0 ]] && s=sudo - $s apt-get -y dist-upgrade "$@" + $s apt-get -y dist-upgrade --purge --auto-remove "$@" $s apt-get -y autoremove } # package info pl() { - aptitude show "$@" + if type -p aptitude &>/dev/null; then + aptitude show "$@" + else + apt-cache show "$@" + fi } pfile() { local file=$1 @@ -110,13 +131,14 @@ EOF # package name. So, commenting this, waiting to find # a config file only tracked by ucfq to see if it gives the # package name and if I can identify this kind of file. -# if [[ $file == /* ]] && ! ucfq -w $file | grep ::: &>/dev/null; then -# ucfq $file + # if [[ $file == /* ]] && ! ucfq -w $file | grep ::: &>/dev/null; then + # ucfq $file if [[ $file == */* ]]; then apt-file find -x "$file"\$ else apt-file find -x /"$file"\$ + update-alternatives --list "$file" 2>/dev/null fi } pkgfiles() {