Merge pull request #9 from carterpeel/main

Added colors & redid readme.md
This commit is contained in:
Louis Abel 2021-05-04 12:26:40 -07:00 committed by GitHub
commit 5e22c910a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 28 deletions

View File

@ -4,8 +4,28 @@ Rocky Tools
Various scripts and tools that we find useful, whether we use them or they are Various scripts and tools that we find useful, whether we use them or they are
made for public consumption. For example, conversion scripts or otherwise. made for public consumption. For example, conversion scripts or otherwise.
## [Centos2Rocky] -- Conversion Script
Running this script will convert an existing CentOS 8 system to Rocky Linux 8.
### Usage
```bash
./centos2rocky.sh -h
├── -h # --> Displays this help
├── -r # --> Converts to Rocky
├── -V # --> Verifies switch
└── -R # --> Reinstalls all packages
[!! USE WITH CAUTION !!]
``` ```
.
├── centos2rocky.sh # Converts a CentOS 8.3 system to Rocky Linux 8.3 ### Debugging
└── README.md
``` The `centos2rocky` script pipes everything shown on `stdout` to `/var/log/centos2rocky.log`.
If you run in to issues executing this script, please submit an issue [here](https://github.com/rocky-linux/rocky-tools/issues).
Make sure to [include the output log](https://pastebin.com/), and remove any sensitive information. (if any)
Feel free to create a pull request if you think you've got the fix.

View File

@ -7,21 +7,25 @@
( (
# Pass everything to a subshell so the output can be piped to /var/log/centos2rocky.log # Pass everything to a subshell so the output can be piped to /var/log/centos2rocky.log
errcolor="\033[3;35m"
nocolor="\033[0m"
blue="\033[1;35m"
set -e set -e
unset CDPATH unset CDPATH
if [[ "$(id -u)" -ne 0 ]]; then if [[ "$(id -u)" -ne 0 ]]; then
echo "You must run this script as root." echo -e "$errcolor""\nYou must run this script as root.$nocolor"
echo "Either use sudo or 'su -c ${0}'" echo -e "$errcolor""Either use sudo or 'su -c ${0}'""$nocolor\n"
fi fi
if [[ "$(wget 2>/dev/null || echo $?)" == 127 ]]; then if [[ "$(wget 2>/dev/null || echo $?)" == 127 ]]; then
echo "Wget is not installed! Installing it..." echo -e "$blue""Wget is not installed! Installing it...""$nocolor"
dnf -y install wget dnf -y install wget
fi fi
if [[ "$(curl 2>/dev/null || echo $?)" == 127 ]]; then if [[ "$(curl 2>/dev/null || echo $?)" == 127 ]]; then
echo "Curl is not installed! Installing it..." echo -e "$blue""Curl is not installed! Installing it...""$nocolor"
dnf -y install curl libcurl dnf -y install curl libcurl
fi fi
@ -71,12 +75,12 @@ exit_message() {
} >&2 } >&2
final_message() { final_message() {
echo "An error occurred while we were attempting to convert your system to Rocky Linux. Your system may be unstable. Script will now exit to prevent possible damage." echo -e "$errcolor""An error occurred while we were attempting to convert your system to Rocky Linux. Your system may be unstable. Script will now exit to prevent possible damage.""$nocolor"
logmessage logmessage
} }
logmessage(){ logmessage(){
echo "A log of this installation can be found at /var/log/centos2rocky.log" echo -e "$blue""A log of this installation can be found at /var/log/centos2rocky.log""$nocolor"
} }
## The actual work ## The actual work
@ -93,9 +97,9 @@ bin_check() {
generate_rpm_info() { generate_rpm_info() {
mkdir /root/convert mkdir /root/convert
echo "Creating a list of RPMs installed: $1" echo -e "$blue""Creating a list of RPMs installed: $1""$nocolor"
rpm -qa --qf "%{NAME}|%{VERSION}|%{RELEASE}|%{INSTALLTIME}|%{VENDOR}|%{BUILDTIME}|%{BUILDHOST}|%{SOURCERPM}|%{LICENSE}|%{PACKAGER}\n" | sort > "${convert_info_dir}/$(hostname)-rpm-list-$1.log" rpm -qa --qf "%{NAME}|%{VERSION}|%{RELEASE}|%{INSTALLTIME}|%{VENDOR}|%{BUILDTIME}|%{BUILDHOST}|%{SOURCERPM}|%{LICENSE}|%{PACKAGER}\n" | sort > "${convert_info_dir}/$(hostname)-rpm-list-$1.log"
echo "Verifying RPMs installed against RPM database: $1" echo -e "$blue""Verifying RPMs installed against RPM database: $1""$nocolor\n"
rpm -Va | sort -k3 > "${convert_info_dir}/$(hostname)-rpm-list-verified-$1.log" rpm -Va | sort -k3 > "${convert_info_dir}/$(hostname)-rpm-list-verified-$1.log"
} }
@ -104,7 +108,7 @@ package_swaps() {
pushd /root/release pushd /root/release
for x in "${release_to_install[@]}"; do for x in "${release_to_install[@]}"; do
wget -q "${current_url}/${x}" || { echo "failed to download ${x}" && logmessage ; exit 20; } wget -q "${current_url}/${x}" || { echo -e "$errcolor""failed to download ${x}""$nocolor\n" && logmessage ; exit 20; }
done done
# Remove packages we need to swap # Remove packages we need to swap
@ -114,10 +118,10 @@ package_swaps() {
rpm -ihv "${release_to_install[@]}" rpm -ihv "${release_to_install[@]}"
# Distrosync if the above succeeded # Distrosync if the above succeeded
if [ $? -eq 0 ]; then if [[ $? -eq 0 ]]; then
echo "Removing dnf cache" echo -e "$blue""Removing dnf cache""$nocolor"
rm -rf /var/cache/{yum,dnf} rm -rf /var/cache/{yum,dnf}
echo "Ensuring repos are enabled before the package swap" echo -e "$blue""Ensuring repos are enabled before the package swap""$nocolor"
dnf config-manager --set-enabled ${list_enabled[@]} || { echo "Repo name missing?" ; exit 25; } dnf config-manager --set-enabled ${list_enabled[@]} || { echo "Repo name missing?" ; exit 25; }
dnf distro-sync -y dnf distro-sync -y
else else
@ -133,7 +137,7 @@ sig_swaps() {
} }
module_check() { module_check() {
echo "Finding our modules that are enabled" echo -e "$blue""Finding our modules that are enabled""$nocolor"
for module in "${enabled_modules[@]}"; do for module in "${enabled_modules[@]}"; do
case ${module} in case ${module} in
container-tools|go-toolset|jmc|llvm-toolset|rust-toolset|virt) container-tools|go-toolset|jmc|llvm-toolset|rust-toolset|virt)
@ -143,15 +147,15 @@ module_check() {
;; ;;
esac esac
done done
if [ ${#unknown_modules[@]} -gt 0 ]; then if [[ ${#unknown_modules[@]} -gt 0 ]]; then
for x in "${unknown_modules[@]}"; do for x in "${unknown_modules[@]}"; do
echo "${x}" echo "${x}"
done done
echo "There are some modules that are unsure of how to handle. This normally shouldn't happen. Do you want to resolve this yourself (Yes) or continue (No)?" echo -e "$blue""There are some modules that are unsure of how to handle. This normally shouldn't happen. Do you want to resolve this yourself (Yes) or continue (No)?""$nocolor"
select yn in "Yes" "No"; do select yn in "Yes" "No"; do
case $yn in case $yn in
Yes) Yes)
echo "Unsure how to switch modules, so we are leaving." echo -e "$errcolor""Unsure how to switch modules, so we are leaving.""$nocolor"
logmessage logmessage
exit 1 exit 1
;; ;;
@ -172,7 +176,7 @@ module_fix() {
dnf module install "${module}" -y dnf module install "${module}" -y
;; ;;
*) *)
echo "Unsure how to deal with the module presented." echo -e "$errcolor""Unsure how to deal with the module presented.""$nocolor"
logmessage logmessage
;; ;;
esac esac
@ -199,18 +203,18 @@ while getopts "hrVR" option; do
reinstall_all_rpms=true reinstall_all_rpms=true
;; ;;
*) *)
echo "Invalid switch." echo -e "$errcolor""Invalid switch.""$nocolor"
usage usage
;; ;;
esac esac
done done
echo "Ensuring rpm, yum, and wget are here." echo -e "$blue""Ensuring rpm, yum, and wget are here.""$nocolor"
for pkg in rpm yum wget curl; do for pkg in rpm yum wget curl; do
bin_check "${pkg}" bin_check "${pkg}"
done done
echo "Ensuring your version of CentOS is supported" echo -e "$blue""Ensuring your version of CentOS is supported""$nocolor"
if ! old_release=$(rpm -q --whatprovides /etc/redhat-release); then if ! old_release=$(rpm -q --whatprovides /etc/redhat-release); then
exit_message "You are not running a supported distribution." exit_message "You are not running a supported distribution."
logmessage logmessage
@ -252,7 +256,7 @@ module_fix
# Warning, this is potentially dangerous. # Warning, this is potentially dangerous.
if "${reinstall_all_rpms}"; then if "${reinstall_all_rpms}"; then
echo "!! THIS MAY CAUSE ISSUES WITH YOUR SYSTEM !!" echo -e "$errcolor""!! THIS MAY CAUSE ISSUES WITH YOUR SYSTEM !!""$nocolor"
rpm_list=("$(rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE} %{VENDOR}\n" | grep CentOS | awk '{print $1}')") rpm_list=("$(rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE} %{VENDOR}\n" | grep CentOS | awk '{print $1}')")
if [[ -n "${rpm_list[*]}" ]]; then if [[ -n "${rpm_list[*]}" ]]; then
echo "Reinstalling rpms: ${rpm_list[*]}" echo "Reinstalling rpms: ${rpm_list[*]}"
@ -260,18 +264,21 @@ if "${reinstall_all_rpms}"; then
fi fi
non_rocky_rpm=("$(rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}|%{VENDOR}|%{PACKAGER}\n" |grep -iv Rocky)") non_rocky_rpm=("$(rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}|%{VENDOR}|%{PACKAGER}\n" |grep -iv Rocky)")
if [[ -n ${non_rocky_rpm[*]} ]]; then if [[ -n ${non_rocky_rpm[*]} ]]; then
echo "Non-Rocky packages are installed. This is generally not an issue. If you see centos packages, you may need to address them and file a bug report at https://bugs.rockylinux.org" echo -e "$blue""Non-Rocky packages are installed. This is generally not an issue. If you see centos packages, you may need to address them and file a bug report at https://bugs.rockylinux.org""$nocolor"
printf '\t%s\n' "${non_rocky_rpm[@]}" printf '\t%s\n' "${non_rocky_rpm[@]}"
fi fi
fi fi
if "${verify_all_rpms}"; then if "${verify_all_rpms}"; then
generate_rpm_info finish generate_rpm_info finish
echo "You may review the following files:" echo -e "$blue""You may review the following files:""$nocolor"
find /root/convert -type f -name "$(hostname)-rpms-*.log" find /root/convert -type f -name "$(hostname)-rpms-*.log"
fi fi
echo "Done, please reboot your system."
echo -e "\n \n"
cat /etc/issue | awk 'NR<=15'
echo -e "$blue\n""Done, please reboot your system.""$nocolor"
logmessage logmessage
) | tee /var/log/centos2rocky.log ) | tee /var/log/centos2rocky.log