Install NetworkManager on Ubuntu distributions (fixes #1052) (#1070)

Add the following args to the install script:

Syntax: sudo ./install.sh [-h|m|n|q]
  options:
  -h        Display this help message.
  -m        Install and configure NetworkManager (Ubuntu only).
  -n        Disable networking. This will also prevent installation of NetworkManager.
  -q        Silent install, automatically accepts all defaults. For non-interactive use.
This commit is contained in:
Craig Schardt
2024-01-06 08:45:56 -06:00
committed by GitHub
parent bf156f544e
commit b8a6a5d56a
2 changed files with 64 additions and 0 deletions

View File

@@ -4,6 +4,42 @@ package_is_installed(){
dpkg-query -W -f='${Status}' "$1" 2>/dev/null | grep -q "ok installed"
}
help() {
echo "This script installs Photonvision."
echo "It must be run as root."
echo
echo "Syntax: sudo ./install.sh [-h|m|n|q]"
echo " options:"
echo " -h Display this help message."
echo " -m Install and configure NetworkManager (Ubuntu only)."
echo " -n Disable networking. This will also prevent installation of NetworkManager."
echo " -q Silent install, automatically accepts all defaults. For non-interactive use."
echo
}
INSTALL_NETWORK_MANAGER="false"
while getopts ":hmnq" name; do
case "$name" in
h)
help
exit 0
;;
m) INSTALL_NETWORK_MANAGER="true"
;;
n) DISABLE_NETWORKING="true"
;;
q) QUIET="true"
;;
\?)
echo "Error: Invalid option -- '$OPTARG'"
echo "Try './install.sh -h' for more information."
exit 1
esac
done
shift $(($OPTIND -1))
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
@@ -34,6 +70,16 @@ fi
echo "This is the installation script for PhotonVision."
echo "Installing for platform $ARCH_NAME"
DISTRO=$(lsb_release -is)
if [[ "$DISTRO" = "Ubuntu" && "$INSTALL_NETWORK_MANAGER" != "true" && -z "$QUIET" && -z "$DISABLE_NETWORKING" ]]; then
echo ""
echo "Photonvision uses NetworkManager to control networking on your device."
read -p "Do you want this script to install and configure NetworkManager? [y/N]: " response
if [[ $response == [yY] || $response == [yY][eE][sS] ]]; then
INSTALL_NETWORK_MANAGER="true"
fi
fi
echo "Installing curl..."
apt-get install --yes curl
echo "curl installation complete."
@@ -53,6 +99,16 @@ else
echo 'GOVERNOR=performance' > /etc/default/cpufrequtils
fi
if [[ "$INSTALL_NETWORK_MANAGER" == "true" ]]; then
echo "Installing network-manager..."
apt-get install --yes network-manager
cat > /etc/netplan/00-default-nm-renderer.yaml <<EOF
network:
renderer: NetworkManager
EOF
echo "network-manager installation complete."
fi
echo "Installing the JRE..."
if ! package_is_installed openjdk-17-jre-headless
then
@@ -85,7 +141,10 @@ echo "Downloaded latest stable release of PhotonVision."
echo "Creating the PhotonVision systemd service..."
# service --status-all doesn't list photonvision on OrangePi use systemctl instead:
#if systemctl --quiet is-active photonvision; then
if service --status-all | grep -Fq 'photonvision'; then
echo "PhotonVision is already running. Stopping service."
systemctl stop photonvision
systemctl disable photonvision
rm /lib/systemd/system/photonvision.service
@@ -116,6 +175,10 @@ RestartSec=1
WantedBy=multi-user.target
EOF
if [ "$DISABLE_NETWORKING" = "true" ]; then
sed -i "s/photonvision.jar/photonvision.jar -n/" /lib/systemd/system/photonvision.service
fi
cp /lib/systemd/system/photonvision.service /etc/systemd/system/photonvision.service
chmod 644 /etc/systemd/system/photonvision.service
systemctl daemon-reload