improve debian functions
[distro-functions] / src / package-manager-abstractions
index 53ae02942561c631e4d17fcf30e1339acd69caeb..20dbc054d523b8afaa9c74da76dcc57d456e4476 100644 (file)
@@ -64,7 +64,7 @@ elif command -v apt-get &>/dev/null; then
     pi() {
         pupdate
         local s; [[ $EUID != 0 ]] && s=sudo
-        $s apt-get -y install "$@"
+        $s apt-get -y install --purge --auto-remove "$@"
     }
     pi-nostart() {
         local s; [[ $EUID != 0 ]] && s=sudo
@@ -78,24 +78,29 @@ EOF
         $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 "$@"
+        $s apt-get -y remove --purge --auto-remove  "$@"
+        # seems slightly redundant, but it removes more stuff sometimes.
         $s apt-get -y autoremove
     }
     pup() { # upgrade
         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
@@ -103,12 +108,20 @@ EOF
         aptitude show "$@"
     }
     pfile() {
-        if [[ $file == /* ]] && ucfq -w $file | grep -v ::: &>/dev/null; then
-            ucfq $file
-        elif [[ $file == */* ]]; then
-            apt-file find -x "$1"\$
+        local file=$1
+        # ucfq can tell us about config files which are not tracked
+        # with apt-file. but, for at least a few files I tested
+        # which are tracked with apt-file, ucfq doesn't show their
+        # 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 == */* ]]; then
+            apt-file find -x "$file"\$
         else
-            apt-file find -x /"$1"\$
+            apt-file find -x /"$file"\$
         fi
     }
     pkgfiles() {