mirror of
https://github.com/rocky-linux/rocky-tools.git
synced 2024-11-29 00:16:28 +00:00
Merge pull request #9 from carterpeel/main
Added colors & redid readme.md
This commit is contained in:
commit
5e22c910a5
28
README.md
28
README.md
@ -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.
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user