I always had the problem that synology doesn't let us auto update 3rd party packages such as the ones from SynoCommunity, so I wrote a shell script to auto update SynoCommunity Packages:
#! /bin/bash -e
PATH="/bin:/usr/syno/bin:${PATH}"
SYSTEM_PKGS=$(synopkg checkupdateall)
if [[ $(echo "${SYSTEM_PKGS}" | jq length) == 0 ]]
then
echo "Everything is up to date!"
exit 0
fi
TEMP_DIR=$(mktemp -d --suffix '_SynoCommunityAutoUpdate')
cd ${TEMP_DIR}
ARCH=$(uname -a | awk '{print $14}' | cut -d'_' -f2)
BUILD=$(uname -v | awk '{print $1}' | grep -o -E '[0-9]+')
PKGS=$(curl -SsL -d "arch=${ARCH}" -d 'language=enu' -d "build=${BUILD}" https://packages.synocommunity.com)
echo "${SYSTEM_PKGS}" | jq '.[]' -c | while read -r line
do
PKG_NAME=$(echo "$line" | jq -r '.id')
if $(echo "${PKGS}" | jq -e "any(.packages[].package; contains(\"${PKG_NAME}\"))")
then
NEW_VERSION=$(echo "$line" | jq -r '.version')
OLD_VERSION=$(synopkg version ${PKG_NAME})
echo "Upgrading ${PKG_NAME} from ${OLD_VERSION} to ${NEW_VERSION}"
LINK=$(echo "${PKGS}" | jq ".packages[] | select(.package==\"${PKG_NAME}\") | .link" -r)
echo "Downloading to: ${TEMP_DIR}/${PKG_NAME}-${NEW_VERSION}.spk"
curl -SsL -o ${PKG_NAME}-${NEW_VERSION}.spk ${LINK}
INSTALL=$(synopkg install ${PKG_NAME}-${NEW_VERSION}.spk)
if [[ $(echo ${INSTALL} | jq '.success' -r) == 'true' ]]
then
echo "Successfully installed ${PKG_NAME}: ${NEW_VERSION}"
else
echo "Something went wrong!"
echo "${INSTALL}" | jq
echo ""
echo "Dumped enviroment at: ${TEMP_DIR}"
echo "${INSTALL}" > install_error.json
echo "${SYSTEM_PKGS}" > system_pkgs.json
echo "${PKGS}" > synocommunity_pkgs.json
echo "${ARCH}" > arch
echo "${BUILD}" > build
echo "${PKG_NAME}" > pkg_name
echo "${NEW_VERSION}" > version
exit 1
fi
else
echo "${PKG_NAME}: not found in SynoCommunity repository!"
fi
done
rm -rf ${TEMP_DIR}
SSH into your NAS, then make a folder to store the script:
$ mkdir -p $HOME/.local/bin
Copy the script above in to a file:
$ nano $HOME/.local/bin/synocommunity_autoupdate
Make it executable:
$ chmod +x $HOME/.local/bin/synocommunity_autoupdate
Create a scheduled task (user defined script) to run once per day as root.
As command put in the output of:
$ echo "$HOME/.local/bin/synocommunity_autoupdate"
- DS418Play (DSM 7.2)
- DS216Play (DSM 7.2)