First commit of files to backup and restore Solus packages
This commit is contained in:
parent
c5c4d696e3
commit
29bcf0a4c2
2 changed files with 198 additions and 0 deletions
135
solus_package_restore.sh
Executable file
135
solus_package_restore.sh
Executable file
|
|
@ -0,0 +1,135 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
function usage {
|
||||
echo "./$(basename "$0")[-h] [-r -d -y] -- Makes a list of installed packages for Solus, optionaly removes package cache, adds the repo specified and reinstalls packages
|
||||
|
||||
where:
|
||||
-h Show this help text
|
||||
-b Back up list of packages even if the backup file already exists
|
||||
-d Delete the repo cache
|
||||
-r Repo to install: stable (default) or unstable
|
||||
-v Show verbose output
|
||||
|
||||
Ex:
|
||||
Restore the unstable repo and packages
|
||||
solus_package_restore.sh -r unstable
|
||||
|
||||
Make package backup, delete repo cache, restore the unstable repo and packages
|
||||
solus_package_restore.sh -b -d -r unstable
|
||||
"
|
||||
}
|
||||
|
||||
function print_out {
|
||||
local MESSAGE="$*"
|
||||
if [[ "${VERBOSE}" == true ]];then
|
||||
echo "$MESSAGE"
|
||||
fi
|
||||
}
|
||||
|
||||
function savepkgs {
|
||||
echo "Saving package list as requested"
|
||||
source "${FOLDER}"/solus_package_backup.sh
|
||||
}
|
||||
|
||||
function delete_cache {
|
||||
if [[ "${DELCACHE}" == true ]];then
|
||||
print_out "Deleting the package cache"
|
||||
sudo rm -rf /var/lib/eopkg/*
|
||||
print_out "Rebuilding package database"
|
||||
sudo eopkg rdb
|
||||
fi
|
||||
}
|
||||
|
||||
function check_repo_status {
|
||||
echo "Checking repo status"
|
||||
STABLE_STATUS=$(sudo eopkg list-repo |sed -n '/Solus \+/p')
|
||||
UNSTABLE_STATUS=$(sudo eopkg list-repo |sed -n '/Solus-Dev \+/p')
|
||||
|
||||
}
|
||||
|
||||
function install_repo {
|
||||
sudo eopkg ar $NAME $URL
|
||||
sudo eopkg enable-repo $NAME
|
||||
}
|
||||
|
||||
# Set defaults
|
||||
FILE=~/InstalledPackages
|
||||
FOLDER=~/git/shell-scripts
|
||||
REPO=stable
|
||||
NAME=Solus
|
||||
URL=https://mirrors.rit.edu/solus/packages/shannon/eopkg-index.xml.xz
|
||||
|
||||
# list of arguments expected in the input
|
||||
optstring=":hbdr:v"
|
||||
|
||||
while getopts ${optstring} option; do
|
||||
case "${option}" in
|
||||
h) usage
|
||||
exit
|
||||
;;
|
||||
b)
|
||||
BACKUP_PKGS='true'
|
||||
;;
|
||||
d) DELCACHE='true'
|
||||
delete_cache
|
||||
;;
|
||||
r) REPO="${OPTARG}"
|
||||
;;
|
||||
v)
|
||||
VERBOSE='true'
|
||||
print_out "Verbose mode is ON"
|
||||
;;
|
||||
?)
|
||||
echo "Invalid option: -${OPTARG}." >&2
|
||||
usage >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
print_out "Repo to install from: $REPO"
|
||||
# Export all installed packages to a text file in one line if the file does not exist
|
||||
if [ -f "${FILE}" ]; then
|
||||
print_out "Package list file ${FILE} found."
|
||||
else
|
||||
echo "${FILE} does not exist or is empty! Making a backup of packages now."
|
||||
|
||||
savepkgs
|
||||
fi
|
||||
|
||||
if [[ "${BACKUP_PKGS}" == true ]];then
|
||||
savepkgs
|
||||
fi
|
||||
|
||||
check_repo_status
|
||||
|
||||
# Add stable repo and enable if necessary
|
||||
# The stable repo should always be installed
|
||||
if [[ $STABLE_STATUS =~ active ]]; then
|
||||
print_out "Stable repo is already installed"
|
||||
else
|
||||
echo "Installing and enabling the stable repo"
|
||||
install_repo
|
||||
fi
|
||||
|
||||
# Add unstable repo and enable based on input
|
||||
if [[ ${REPO} = 'unstable' ]]; then
|
||||
print_out "Checking the unstable repo"
|
||||
if [[ $UNSTABLE_STATUS =~ active ]]; then
|
||||
echo "Unstable repo is already installed"
|
||||
else
|
||||
echo "Installing and enabling the unstable repo, disabling the stable repo"
|
||||
URL=https://mirrors.rit.edu/solus/packages/unstable/eopkg-index.xml.xz
|
||||
NAME=Solus-Dev
|
||||
sudo eopkg disable-repo Solus
|
||||
install_repo
|
||||
fi
|
||||
fi
|
||||
|
||||
# Upgrade
|
||||
sudo eopkg up
|
||||
# Install all previously installed packages.
|
||||
sudo eopkg install $(cat ${FILE})
|
||||
|
||||
echo "Package restore complete"
|
||||
Loading…
Add table
Add a link
Reference in a new issue