if (( ! $+commands[pacman] )); then return 1 fi # Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips alias pacupg='sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system. alias pacin='sudo pacman -S' # Install specific package(s) from the repositories alias pacu='sudo pacman -U' # Install specific package not from the repositories but from a file alias pacre='sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies alias pacrem='sudo pacman -Rns' # Remove the specified package(s) and unneeded dependencies alias pacrm='sudo pacman -Rnsc' # Remove the specified package(s), its configuration(s) and unneeded dependencies alias pacsi='pacman -Sii' # Display information about a given package in the repositories alias pacss='pacman -Ss' # Search for package(s) in the repositories alias pacqi='pacman -Qii' # Display information about a given package in the local database alias pacqs='pacman -Qs' # Search for package(s) in the local database alias pacl='pacman -Ql' # List all files owned by package(s) alias paco='pacman -Qo' # List package owning the given file(s) alias pacdep='sudo pacman -D --asdeps' # Mark package as dependency alias pacexp='sudo pacman -D --asexplicit' # Mark package as explicit alias pacinsd='sudo pacman -S --asdeps' # Install given package(s) as dependencies of another package alias pacmir='sudo pacman -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist [[ -x /usr/bin/packer ]] && alias aur='packer' # https://bbs.archlinux.org/viewtopic.php?id=93683 paclist() { pacman -Qei "$@" | awk 'BEGIN {FS=": "}/^Name/{printf("\033[1;36m%s\033[0m ",$2)}/^Description/{print $2}' } pacclean() { local _count_pkg=$(pacman -Qq | wc -l) local _count_pkg_exp=$(pacman -Qeq | wc -l) local _pkgs=( $(pacman -Qeq) ) for pkg in ${_pkgs[@]}; do # the file has been removed by a previous clean pacman -Qq $pkg 2>&1 1>/dev/null || continue pacman -Qi $pkg | awk 'BEGIN {FS=": "}/^Name/{printf("\n\033[1;36m%s\033[0m ",$2)}/^Description/{print $2}/^(Required|Optional For)/' local edrq='' while true; do echo -n "Explicit, Dependency, Remove, Quit? [Edrq] " read -sk edrq echo case $edrq in [Qq]) break 2 ;; $'\n') ;& [Ee]) break ;; [Rr]) sudo pacman -Rnscu $pkg; break ;; [Dd]) sudo pacman -D --asdeps $pkg; break ;; esac done done local _count_pkg_after=$(pacman -Qq | wc -l) local _count_pkg_exp_after=$(pacman -Qeq | wc -l) local _delta_pkg=$(($_count_pkg_after - $_count_pkg)) local _delta_pkg_exp=$(($_count_pkg_exp_after - $_count_pkg_exp)) printf "\n %8s | %8s" "Packages" "Explicit" printf "\nBefore | %8d | %8d" $_count_pkg $_count_pkg_exp printf "\n After | %8d | %8d" $_count_pkg_after $_count_pkg_exp_after printf "\n | %8d | %8d" $_delta_pkg $_delta_pkg_exp printf "\n" } # [l]ist [o]orphans alias paclo='pacman -Qdt' # [r]emove [o]orphans alias pacro='sudo pacman -Rnscu $(pacman -Qtdq)' # Display information about given packages (merges output of -Sii and -Qii) paci() { for p in $@; do if [[ -n "$(pacman -Qq "$p" 2>/dev/null)" ]]; then diff -u100 <(pacman -Qii "$p") <(pacman -Sii "$p" | sed '/^$/,$ d') | sed -e '1,3 d' -e 's/[-+ ]//' else pacman -Sii "$p" fi done } # will only work after another pacman completion has been called first compdef '_pacman_completions_all_packages' paci=pacman pacstat() { printf "Packages:\n" printf "%7d native\n" $(LC_ALL=C pacman -Qn | wc -l) printf "%7d foreign\n" $(LC_ALL=C pacman -Qm | wc -l) printf "%7d total\n" $(LC_ALL=C pacman -Q | wc -l) printf "Repos:\n" LC_ALL=C pacman -Sl | sed -n '/\[installed\]/s/^\([^ ]*\).*/\1/p' | uniq -c } pacdisowned() { tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$ db=$tmp/db fs=$tmp/fs mkdir "$tmp" trap 'rm -rf "$tmp"' EXIT pacman -Qlq | sort -u > "$db" local -a d if [[ -z $@ ]]; then d=(/etc /usr) else d=($@) fi find ${d[@]} \ ! \( -name lost+found \ -o -path '*/local/*' \ -o -path "*/share/mime/*" \ \) \ \( -type d -printf '%p/\n' -o -print \) | sort > "$fs" comm -23 "$fs" "$db" }