-
Notifications
You must be signed in to change notification settings - Fork 165
/
install_os_dependencies.sh
executable file
·82 lines (62 loc) · 1.95 KB
/
install_os_dependencies.sh
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
#!/bin/bash
OS_REQUIREMENTS_FILENAME="requirements.apt"
# Handle call with wrong command
function wrong_command()
{
echo "${0##*/} - unknown command: '${1}'"
usage_message
}
# Print help / script usage
function usage_message()
{
echo "usage: ./${0##*/} <command>"
echo "available commands are:"
echo -e "\tlist\t\tPrint a list of all packages defined on ${OS_REQUIREMENTS_FILENAME} file"
echo -e "\thelp\t\tPrint this help"
echo -e "\n\tCommands that require superuser permission:"
echo -e "\tinstall\t\tInstall packages defined on ${OS_REQUIREMENTS_FILENAME} file. Note: This\n\t\t\t does not upgrade the packages already installed for new\n\t\t\t versions, even if new version is available in the repository."
echo -e "\tupgrade\t\tSame that install, but upgrate the already installed packages,\n\t\t\t if new version is available."
}
# Read the requirements.apt file, and remove comments and blank lines
function list_packages(){
grep -v "#" ${OS_REQUIREMENTS_FILENAME} | grep -v "^$";
}
function install()
{
list_packages | xargs apt --no-upgrade install -y;
}
function upgrade()
{
list_packages | xargs apt install -y;
}
function install_or_upgrade()
{
P=${1}
PARAN=${P:-"install"}
if [[ $EUID -ne 0 ]]; then
echo -e "\nYou must run this with root privilege" 2>&1
echo -e "Please do:\n" 2>&1
echo "sudo ./${0##*/} $PARAN" 2>&1
echo -e "\n" 2>&1
exit 1
else
apt update
# Install the basic compilation dependencies and other required libraries of this project
if [ "$PARAN" == "install" ]; then
install;
else
upgrade;
fi
# cleaning downloaded packages from apt-get cache
apt clean
exit 0
fi
}
# Handle command argument
case "$1" in
install) install_or_upgrade;;
upgrade) install_or_upgrade "upgrade";;
list) list_packages;;
help) usage_message;;
*) wrong_command $1;;
esac