From 99c8df2eb0e7284d0d8f04b0f12c856d8fce46fa Mon Sep 17 00:00:00 2001 From: nodiego Date: Sat, 14 Dec 2024 20:16:02 +0100 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?= =?UTF-8?q?"/"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.txt | 9 + config-fedora.sh | 673 +++++++++++++++++++++++++++++++++++++++++++++++ extra-conf.txt | 5 + flatpak.list | 25 ++ gnome.list | 11 + 5 files changed, 723 insertions(+) create mode 100644 CHANGELOG.txt create mode 100644 config-fedora.sh create mode 100644 extra-conf.txt create mode 100644 flatpak.list create mode 100644 gnome.list diff --git a/CHANGELOG.txt b/CHANGELOG.txt new file mode 100644 index 0000000..28395c5 --- /dev/null +++ b/CHANGELOG.txt @@ -0,0 +1,9 @@ +2024-10-31 : +Ajout de l'option upgrade pour mettre à niveau vers la version suivante de Fedora si elle existe et est stable. + +2024-09-29 : +Correction du reboot si nécessaire qui ne fonctionnait plus + +2024-09-25 : +Compatibilité ajoutée avec dnf5 pour Fedora41. +Ajout de l'option scriptupdate pour mettre à jour le script depuis lui même. diff --git a/config-fedora.sh b/config-fedora.sh new file mode 100644 index 0000000..e3b3464 --- /dev/null +++ b/config-fedora.sh @@ -0,0 +1,673 @@ +#! /usr/bin/env bash + +################# +### VARIABLES ### +################# +RPMFUSIONCOMP="rpmfusion-free-appstream-data rpmfusion-nonfree-appstream-data rpmfusion-free-release-tainted rpmfusion-nonfree-release-tainted" +CODEC="gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-bad-free gstreamer1-plugins-good-extras gstreamer1-plugins-bad-free-extras gstreamer1-plugins-ugly-free gstreamer1-plugin-libav gstreamer1-plugins-ugly libdvdcss gstreamer1-plugin-openh264" +LOGFILE="/tmp/config-fedora.log" +DNFVERSION="$(readlink $(which dnf))" +FC0=$(rpm -E %fedora) +FC1=$(($FC0 + 1)) +##################### +### FIN VARIABLES ### +##################### + + +################# +### FONCTIONS ### +################# + +check_cmd() +{ +if [[ $? -eq 0 ]] +then + echo -e "\033[32mOK\033[0m" +else + echo -e "\033[31mERREUR\033[0m" +fi +} + + +check_repo_file() +{ + if [[ -e "/etc/yum.repos.d/$1" ]] + then + return 0 + else + return 1 + fi +} + +check_pkg() +{ + rpm -q "$1" > /dev/null +} +add_pkg() +{ + dnf install -y --nogpgcheck "$1" >> "$LOGFILE" 2>&1 +} + +del_pkg() +{ + if [[ "${DNFVERSION}" == "dnf-3" ]] + then + dnf autoremove -y "$1" >> "$LOGFILE" 2>&1 + fi + if [[ "${DNFVERSION}" == "dnf5" ]] + then + dnf remove -y "$1" >> "$LOGFILE" 2>&1 + fi +} +swap_pkg() +{ + dnf swap -y "$1" "$2" --allowerasing > /dev/null 2>&1 +} +check_flatpak() +{ + flatpak info "$1" > /dev/null 2>&1 +} +add_flatpak() +{ + flatpak install flathub --noninteractive -y "$1" > /dev/null 2>&1 +} +del_flatpak() +{ + flatpak uninstall --noninteractive -y "$1" > /dev/null && flatpak uninstall --unused --noninteractive -y > /dev/null +} +check_copr() +{ + if [[ ${DNFVERSION} == "dnf-3" ]] + then + COPR_ENABLED=$(dnf copr list --enabled | grep -c "$1") + fi + if [[ ${DNFVERSION} == "dnf5" ]] + then + COPR_ENABLED=$(dnf copr list | grep -v '(disabled)' | grep -c "$1") + fi + return $COPR_ENABLED +} +add_copr() +{ + dnf copr enable -y "$1" > /dev/null 2>&1 +} + +refresh_cache() +{ + dnf check-update --refresh fedora-release > /dev/null 2>&1 +} +refresh_cache_testing() +{ + dnf check-update --enablerepo=*updates-testing fedora-release > /dev/null 2>&1 +} +check_updates_rpm() +{ + yes n | dnf upgrade +} +check_updates_testing_rpm() +{ + yes n | dnf upgrade --enablerepo=*updates-testing +} +check_updates_flatpak() +{ + yes n | flatpak update +} +need_reboot() +{ + if [[ ${DNFVERSION} == "dnf-3" ]] + then + needs-restarting -r >> "$LOGFILE" 2>&1 + NEEDRESTART="$?" + fi + if [[ ${DNFVERSION} == "dnf5" ]] + then + dnf needs-restarting -r >> "$LOGFILE" 2>&1 + NEEDRESTART="$?" + fi + return $NEEDRESTART +} +ask_reboot() +{ + echo -n -e "\033[5;33m/\ REDÉMARRAGE NÉCESSAIRE\033[0m\033[33m : Voulez-vous redémarrer le système maintenant ? [y/N] : \033[0m" + read rebootuser + rebootuser=${rebootuser:-n} + if [[ ${rebootuser,,} == "y" ]] + then + echo -e "\n\033[0;35m Reboot via systemd ... \033[0m" + sleep 2 + systemctl reboot + exit + fi + if [[ ${rebootuser,,} == "k" ]] + then + kexec_reboot + fi +} + +kexec_reboot() +{ + echo -e "\n\033[1;4;31mEXPERIMENTAL :\033[0;35m Reboot via kexec ... \033[0m" + LASTKERNEL=$(rpm -q kernel --qf "%{INSTALLTIME} %{VERSION}-%{RELEASE}.%{ARCH}\n" | sort -nr | awk 'NR==1 {print $2}') + kexec -l /boot/vmlinuz-$LASTKERNEL --initrd=/boot/initramfs-$LASTKERNEL.img --reuse-cmdline + sleep 0.5 + # kexec -e + systemctl kexec + exit +} + + +ask_maj() +{ + echo -n -e "\n\033[36mVoulez-vous lancer les MàJ maintenant ? [y/N] : \033[0m" + read startupdate + startupdate=${startupdate:-n} + echo "" + if [[ ${startupdate,,} == "y" ]] + then + bash "$0" + fi + +} + +upgrade_fc() +{ + if curl --fail -s --output /dev/null https://dl.fedoraproject.org/pub/fedora/linux/releases/$FC1 + then + echo "Lancement de l'upgrade $FC0 -> $FC1" + if dnf system-upgrade --releasever=$FC1 download + then + dnf system-upgrade reboot + else + echo -e "\033[31mERREUR lors de la phase préparatoire. Abandon! \033[0m" + exit 3; + fi + else + echo -e "\033[33mLa version $FC1 n'est pas notée stable. Abandon! \033[0m" + exit 4; + fi +} + +##################### +### FIN FONCTIONS ### +##################### + + +#################### +### DEBUT SCRIPT ### +#################### + +# Verif option +if [[ -z "$1" ]] +then + echo "OK" > /dev/null +elif [[ "$1" == "coffee" ]] || [[ "$1" == "check" ]] || [[ "$1" == "testing" ]] || [[ "$1" == "upgrade" ]] || [[ "$1" == "scriptupdate" ]] +then + echo "OK" > /dev/null +else + echo "Usage incorrect du script :" + echo "- $(basename $0) : Lance la config et/ou les mises à jour" + echo "- $(basename $0) check : Vérifie les mises à jour disponibles et propose de les lancer" + echo "- $(basename $0) testing : Vérifie les mises à jour disponibles en test" + echo "- $(basename $0) upgrade : Lance la mise à niveau de Fedora vers la version suivante" + echo "- $(basename $0) scriptupdate : Met à jour le script depuis Github" + exit 1; +fi + +# Easter Egg +if [[ "$1" = "coffee" ]] +then + echo "Oui ce script fait aussi le café !" + echo "" + echo ' ( ) ( ) )' + echo ' ) ( ) ( (' + echo ' ( ) ( ) )' + echo ' _____________' + echo ' <_____________> ___' + echo ' | |/ _ \' + echo ' | | | |' + echo ' | |_| |' + echo ' ___| |\___/' + echo '/ \___________/ \' + echo '\_____________________/' + echo "" + echo "Impressionnant n'est ce pas !?" + + exit 0; +fi + +# Upgrade Fedora +if [[ "$1" = "upgrade" ]] +then + upgrade_fc +fi + +# Script Update +if [[ "$1" = "scriptupdate" ]] +then + echo $0 + wget -O- https://raw.githubusercontent.com/aaaaadrien/fedora-config/refs/heads/main/config-fedora.sh > "$0" + chmod +x "$0" + + wget -O- -q https://raw.githubusercontent.com/aaaaadrien/fedora-config/refs/heads/main/CHANGELOG.txt | head + + exit 0; +fi + +# Tester si root +if [[ $(id -u) -ne "0" ]] +then + echo -e "\033[31mERREUR\033[0m Lancer le script avec les droits root (su - root ou sudo)" + exit 1; +fi + +# Tester si bien Fedora Workstation +if ! check_pkg fedora-release-workstation +then + echo -e "\033[31mERREUR\033[0m Seule Fedora Workstation (GNOME) est supportée !" + exit 2; +fi + +# Infos fichier log +echo -e "\033[36m" +echo "Pour suivre la progression des mises à jour : tail -f $LOGFILE" +echo -e "\033[0m" + +# Date dans le log +echo '-------------------' >> "$LOGFILE" +date >> "$LOGFILE" + + +################# +### PROGRAMME ### +################# +ICI=$(dirname "$0") + + +## CAS CHECK-UPDATES +if [[ "$1" = "check" ]] +then + echo -n "01- - Refresh du cache : " + refresh_cache + check_cmd + + echo "02- - Mises à jour disponibles RPM : " + check_updates_rpm + + echo "03- - Mises à jour disponibles FLATPAK : " + check_updates_flatpak + + ask_maj + + exit; +fi + +## CAS CHECK-UPDATES-TESTING +if [[ "$1" = "testing" ]] +then + echo -n "01- - Refresh du cache : " + refresh_cache_testing + check_cmd + + echo "02- - Mises à jour disponibles RPM TESTING : " + check_updates_testing_rpm + + echo -e "\n \033[36mRAPPEL : Pas de MàJ testing gérée par le script ! Pour upgrader un paquet en testing : " + echo -e " dnf upgrade --enablerepo=*updates-testing paquet1 paquet2 \033[0m \n" + + exit; +fi + + +### CONF DNF +echo "01- Vérification configuration DNF" +# plus necessaire avec dnf5, option non prise en compte +#if [[ $(grep -c 'fastestmirror=' /etc/dnf/dnf.conf) -lt 1 ]] +#then +# echo -n "- - - Correction miroirs rapides : " +# echo "fastestmirror=true" >> /etc/dnf/dnf.conf +# check_cmd +#fi +if [[ $(grep -c 'max_parallel_downloads=' /etc/dnf/dnf.conf) -lt 1 ]] +then + echo -n "- - - Correction téléchargements parallèles : " + echo "max_parallel_downloads=10" >> /etc/dnf/dnf.conf + check_cmd +fi +if [[ $(grep -c 'countme=' /etc/dnf/dnf.conf) -lt 1 ]] +then + echo -n "- - - Correction statistiques : " + echo "countme=false" >> /etc/dnf/dnf.conf + check_cmd +fi +if [[ $(grep -c 'deltarpm=' /etc/dnf/dnf.conf) -lt 1 ]] +then + echo -n "- - - Correction deltarpm désactivés : " + echo "deltarpm=false" >> /etc/dnf/dnf.conf + check_cmd +fi + +echo -n "- - - Refresh du cache : " +refresh_cache +check_cmd + +if ! check_pkg "dnf-utils" +then + echo -n "- - - Installation dnf-utils : " + add_pkg "dnf-utils" + check_cmd +fi + + +### MAJ RPM +echo -n "02- Mise à jour du système DNF : " +dnf update -y >> "$LOGFILE" 2>&1 +check_cmd + + +### MAJ FP +echo -n "03- Mise à jour du système FLATPAK : " +flatpak update --noninteractive >> "$LOGFILE" 2>&1 +check_cmd + +# Verif si reboot nécessaire +if ! need_reboot +then + ask_reboot +fi + + +### CONFIG DEPOTS +echo "04- Vérification configuration des dépôts" +## COPR PERSO +if check_copr 'adriend/fedora-apps' +then + echo -n "- - - Activation COPR adriend/fedora-apps : " + add_copr "adriend/fedora-apps" + check_cmd +fi + + +## RPMFUSION +if ! check_pkg rpmfusion-free-release +then + echo -n "- - - Installation RPM Fusion Free : " + add_pkg "https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm" + check_cmd +fi +if ! check_pkg rpmfusion-nonfree-release +then + echo -n "- - - Installation RPM Fusion Nonfree : " + add_pkg "https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm" + check_cmd +fi + +## VIVALDI +if ! check_repo_file vivaldi.repo +then + echo -n "- - - Installation Vivaldi Repo : " + echo "[vivaldi] + name=vivaldi + baseurl=https://repo.vivaldi.com/archive/rpm/x86_64 + enabled=1 + gpgcheck=1 + gpgkey=http://repo.vivaldi.com/archive/linux_signing_key.pub" 2>/dev/null > /etc/yum.repos.d/vivaldi.repo + check_cmd + sed -e 's/\t//g' -i /etc/yum.repos.d/vivaldi.repo +fi + +## GOOGLE CHROME +if [[ -e /etc/yum.repos.d/google-chrome.repo && $(grep -c 'enabled=0' /etc/yum.repos.d/google-chrome.repo) -eq 1 ]] +then + rm -f /etc/yum.repos.d/google-chrome.repo +fi +if ! check_repo_file google-chrome.repo +then + echo -n "- - - Installation Google Chrome Repo : " + echo "[google-chrome] + name=google-chrome + baseurl=https://dl.google.com/linux/chrome/rpm/stable/x86_64 + enabled=1 + gpgcheck=1 + gpgkey=https://dl.google.com/linux/linux_signing_key.pub" 2>/dev/null > /etc/yum.repos.d/google-chrome.repo + check_cmd + sed -e 's/\t//g' -i /etc/yum.repos.d/google-chrome.repo +fi + +## FLATHUB +if [[ $(flatpak remotes | grep -c flathub) -ne 1 ]] +then + echo -n "- - - Installation Flathub : " + flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo > /dev/null + check_cmd +fi + +## COMPOSANTS RPM FUSION +echo "05- Vérification composants RPM Fusion" +for p in $RPMFUSIONCOMP +do + if ! check_pkg "$p" + then + echo -n "- - - Installation composant RPM Fusion $p : " + add_pkg "$p" + check_cmd + fi +done + +### SWAPPING DES SOFT +echo "06- Vérification swapping des composants" + +## FFMPEG +if check_pkg "ffmpeg-free" +then + echo -n "- - - Swapping ffmpeg : " + swap_pkg "ffmpeg-free" "ffmpeg" + check_cmd +fi + +## MESA-VA +#if check_pkg "mesa-va-drivers" +#then +# echo -n "- - - Swapping MESA VAAPI : " +# swap_pkg "mesa-va-drivers" "mesa-va-drivers-freeworld" +# check_cmd +#fi + +## MESA-VDPAU +#if check_pkg "mesa-vdpau-drivers" +#then +# echo -n "- - - Swapping MESA VDPAU : " +# swap_pkg "mesa-vdpau-drivers" "mesa-vdpau-drivers-freeworld" +# check_cmd +#fi + +## INSTALL CODECS +echo "07- Vérification CoDec" +for p in $CODEC +do + if ! check_pkg "$p" + then + echo -n "- - - Installation CoDec $p : " + add_pkg "$p" + check_cmd + fi +done + +### INSTALL OUTILS GNOME +echo "08- Vérification composants GNOME" +while read -r line +do + if [[ "$line" == add:* ]] + then + p=${line#add:} + if ! check_pkg "$p" + then + echo -n "- - - Installation composant GNOME $p : " + add_pkg "$p" + check_cmd + fi + fi + + if [[ "$line" == del:* ]] + then + p=${line#del:} + if check_pkg "$p" + then + echo -n "- - - Suppression composant GNOME $p : " + del_pkg "$p" + check_cmd + fi + fi +done < "$ICI/gnome.list" + +### INSTALL/SUPPRESSION RPMS SELON LISTE +echo "09- Gestion des paquets RPM" +while read -r line +do + if [[ "$line" == add:* ]] + then + p=${line#add:} + if ! check_pkg "$p" + then + echo -n "- - - Installation paquet $p : " + add_pkg "$p" + check_cmd + fi + fi + + if [[ "$line" == del:* ]] + then + p=${line#del:} + if check_pkg "$p" + then + echo -n "- - - Suppression paquet $p : " + del_pkg "$p" + check_cmd + fi + fi +done < "$ICI/packages.list" + +### INSTALL/SUPPRESSION FLATPAK SELON LISTE +echo "10- Gestion des paquets FLATPAK" +while read -r line +do + if [[ "$line" == add:* ]] + then + p=${line#add:} + if ! check_flatpak "$p" + then + echo -n "- - - Installation flatpak $p : " + add_flatpak "$p" + check_cmd + fi + fi + + if [[ "$line" == del:* ]] + then + p=${line#del:} + if check_flatpak "$p" + then + echo -n "- - - Suppression flatpak $p : " + del_flatpak "$p" + check_cmd + fi + fi +done < "$ICI/flatpak.list" + +### Vérif configuration système +echo "11- Configuration personnalisée du système" +SYSCTLFIC="/etc/sysctl.d/adrien.conf" +if [[ ! -e "$SYSCTLFIC" ]] +then + echo -n "- - - Création du fichier $SYSCTLFIC : " + touch "$SYSCTLFIC" + check_cmd +fi +if [[ $(grep -c 'vm.swappiness' "$SYSCTLFIC") -lt 1 ]] +then + echo -n "- - - Définition du swapiness à 10 : " + echo "vm.swappiness = 10" >> "$SYSCTLFIC" + check_cmd +fi +if [[ $(grep -c 'kernel.sysrq' "$SYSCTLFIC") -lt 1 ]] +then + echo -n "- - - Définition des sysrq à 1 : " + echo "kernel.sysrq = 1" >> "$SYSCTLFIC" + check_cmd +fi + +#PROFILEFIC="/etc/profile.d/adrien.sh" +#if [[ ! -e "$PROFILEFIC" ]] +#then +# echo -n "- - - Création du fichier $PROFILEFIC : " +# touch "$PROFILEFIC" +# check_cmd +#fi +#if [[ $(grep -c 'QT_QPA_PLATFORMTHEME=' "$PROFILEFIC") -lt 1 ]] +#then +# echo -n "- - - Définition du thème des applis KDE à gnome : " +# echo "export QT_QPA_PLATFORMTHEME=gnome" >> "$PROFILEFIC" +# check_cmd +#fi +#if [[ $(grep -c 'QT_QPA_PLATFORM=' "$PROFILEFIC") -lt 1 ]] +#then +# echo -n "- - - Fix du décalage des menus des applis Qt sous Wayland : " +# echo "export QT_QPA_PLATFORM=xcb" >> "$PROFILEFIC" +# check_cmd +#fi + +if ! check_pkg "pigz" +then + echo -n "- - - Installation pigz : " + add_pkg "pigz" + check_cmd +fi +if [[ ! -e /usr/local/bin/gzip ]] +then + echo -n "- - - Configuration gzip multithread : " + ln -s /usr/bin/pigz /usr/local/bin/gzip + check_cmd +fi +if [[ ! -e /usr/local/bin/gunzip ]] +then + echo -n "- - - Configuration gunzip multithread : " + ln -s /usr/local/bin/gzip /usr/local/bin/gunzip + check_cmd +fi +if [[ ! -e /usr/local/bin/zcat ]] +then + echo -n "- - - Configuration zcat multithread : " + ln -s /usr/local/bin/gzip /usr/local/bin/zcat + check_cmd +fi + + +if ! check_pkg "lbzip2" +then + echo -n "- - - Installation lbzip2 : " + add_pkg "lbzip2" + check_cmd +fi +if [[ ! -e /usr/local/bin/bzip2 ]] +then + echo -n "- - - Configuration bzip2 multithread : " + ln -s /usr/bin/lbzip2 /usr/local/bin/bzip2 + check_cmd +fi +if [[ ! -e /usr/local/bin/bunzip2 ]] +then + echo -n "- - - Configuration bunzip2 multithread : " + ln -s /usr/local/bin/bzip2 /usr/local/bin/bunzip2 + check_cmd +fi +if [[ ! -e /usr/local/bin/bzcat ]] +then + echo -n "- - - Configuration bzcat multithread : " + ln -s /usr/local/bin/bzip2 /usr/local/bin/bzcat + check_cmd +fi + +# Verif si reboot nécessaire +if ! need_reboot +then + ask_reboot +fi diff --git a/extra-conf.txt b/extra-conf.txt new file mode 100644 index 0000000..a6cdf84 --- /dev/null +++ b/extra-conf.txt @@ -0,0 +1,5 @@ +## Ne pas écraser le vivaldi-snapshot sopranos (Vivaldi vert) qui fait conflit avec vivaldi-snapshot noir présent dans les dépôts +echo "exclude=vivaldi-snapshot" >> /etc/dnf/dnf.conf + +## Kernel CMD +preempt=full threadirqs diff --git a/flatpak.list b/flatpak.list new file mode 100644 index 0000000..a33c529 --- /dev/null +++ b/flatpak.list @@ -0,0 +1,25 @@ +# GUI : Multimedia +#add:com.github.marinm.songrec +#add:com.obsproject.Studio + +# GUI : Graphisme +#add:org.upscayl.Upscayl + +# GUI : Internet +#add:com.anydesk.Anydesk +#del:com.discordapp.Discord +#add:org.telegram.desktop + +# GUI : Utilitaires +#add:com.usebottles.bottles +#add:com.github.tchx84.Flatseal + +# GUI : Jeux +#add:com.valvesoftware.Steam +#add:com.github.k4zmu2a.spacecadetpinball + +# GUI : Virtualisation +#add:org.virt_manager.virt-viewer + +# GUI : Admin système +#add:io.dbeaver.DBeaverCommunity diff --git a/gnome.list b/gnome.list new file mode 100644 index 0000000..1029c4a --- /dev/null +++ b/gnome.list @@ -0,0 +1,11 @@ +# Intégration Qt dans GTK +add:adwaita-qt5 +add:adwaita-qt6 +add:qgnomeplatform-qt5 +add:qgnomeplatform-qt6 + +# Extensions +add:gnome-extensions-app +add:gnome-shell-extension-dash-to-dock +add:gnome-shell-extension-appindicator +add:gnome-shell-extension-gsconnect