-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathap.linux-apt+pac
executable file
·147 lines (139 loc) · 4.01 KB
/
ap.linux-apt+pac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/usr/bin/env bash
# common apt use
# As this script may be called from sudo, suggest safer permissions
l=($(ls -l `readlink -f $0`))
[ ${l[0]:2:1} != "-" ] && [ "${l[2]}" != "root" ] ||
[ ${l[0]:5:1} != "-" ] && [ "${l[3]}" != "root" ] ||
[ ${l[0]:8:1} != "-" ] && {
echo -e "Script uses or is called from sudo often.\nOnly root should be able to modify.\n${l[@]}\n";}
# Get usage_self()
# handle cases where user has linked script into their bin
if ! type usage_self >/dev/null 2>&1 ; then
if readlink $0 >/dev/null 2>&1 ; then
source $(dirname $(readlink $0))/humanism.sh usage_self
else
source $(dirname $0)/humanism.sh usage_self
fi
fi
if [ $# -eq -0 ]; then
usage_self
exit
fi
command -v apt-get >/dev/null && APTGET=1
command -v pacman >/dev/null && PACMAN=1 && unset APTGET
test -z "$APTGET" -a -z "$PACMAN" &&
echo "unknown package manager" && exit 1
# grep --color?
echo a | grep --color a >/dev/null 2>&1 &&
alias grep="grep --color"
echo a | grep -E --color a >/dev/null 2>&1 &&
alias grep -E="grep -E --color"
case "$1" in
install)
#Install package
[ $APTGET ] && apt-get install --no-install-recommends ${@:2}
[ $PACMAN ] && pacman -S ${@:2}
;;
reinstall)
#Re-install package
[ $APTGET ] && apt-get install --reinstall ${@:2}
[ $PACMAN ] && pacman -S ${@:2}
;;
remove)
#Uninstall and purge of all deps no longer required
[ $APTGET ] && (
# purge removes configs as well, install just the bin
apt-get remove --purge --auto-remove ${@:2}
# now remove any unneeded deps globlly
apt-get -y autoremove )
[ $PACMAN ] && pacman -Rs ${@:2}
;;
download)
#Download package to local disk without extracting
[ $APTGET ] && sudo apt-get install --download-only ${@:2}
[ $PACMAN ] && pacman -Sw ${@:2} && echo see /var/cache/pacman/pkg/
;;
extract)
#Extract package file to current directory
[ $APTGET ] && echo "todo. not yet available"
[ $PACMAN ] && tar --preserve-permissions \
-xvf ${@:2} -C `pwd` --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO
;;
update)
#Update package database
[ $APTGET ] && apt-get $*
[ $PACMAN ] && pacman -Syyu
;;
updatesecurity)
#Install security updates
[ $PACMAN ] && echo "pacman systems require complete system update: pacman -Syu" && exit 1
#echo -e "\nUPDATING CACHE\n"
#apt-get update
echo -e "\nTHE FOLLOWING PACKAGES WILL BE UPDATED:\n"
unattended-upgrade --dry-run
read -p "Run update? " answer
while true; do
case $answer in
[yY]* )
echo "Running"
unattended-upgrade -d
break;;
[nN]* ) exit;;
* ) echo "Enter Y or N, please."; break ;;
esac
done
;;
search)
#Show packages available or already installed
[ $APTGET ] && (
echo -e "\nAVAILABLE:"
apt-cache search $2 | grep -E -i "$2"
echo -e "\nINSTALLED:"
dpkg --list | grep -E -i "$2" )
[ $PACMAN ] && (
echo -e "\nAVAILABLE:"
pacman -Ss $2 | grep -E -i "$2|$"
echo -e "\nINSTALLED:"
pacman -Qs $2 | grep -E -i "$2|$" )
;;
ownerof)
#Show package for file
[ $APTGET ] && (dpkg --search $2 | grep -i "$2")
[ $PACMAN ] && pacman -Qo $2
;;
ineed)
#Show packages that would provide a file if installed
[ $APTGET ] && apt-file search "/$2" | grep -i -w "$2"
[ $PACMAN ] && (
(command -v pkgfile >/dev/null || (echo "missing pkgfile" && exit 1)) &&
pkgfile -s -r ".*/$2.*" -v )
;;
ineedbadly)
#Show any package that contains string
[ $APTGET ] && apt-file search "$2" | grep -i "$2" # grep adds the coloring
[ $PACMAN ] && (
(command -v pkgfile >/dev/null || (echo "missing pkgfile" && exit 1)) &&
pkgfile -s -g ".*$2.*" -v )
;;
info)
#information about package
[ $APTGET ] && apt-cache show $2
[ $PACMAN ] && pacman -Si $2
;;
list)
#show files installed by package
[ $APTGET ] && dpkg -L $2
[ $PACMAN ] && pacman -Ql $2
;;
upgrade)
#upgrade package cache and package
[ $APTGET ] && apt-get $@
[ $PACMAN ] && pacman --sync --refresh && $0 install $2
;;
*)
#pass through any other command on to apt-get
[ $APTGET ] && apt-get $*
[ $PACMAN ] && pacman $*
;;
esac
exit 0