init install.sh
This commit is contained in:
parent
8b8ab7a5dc
commit
1e102a22a4
316
code/linux/linux-mint/install.sh
Normal file
316
code/linux/linux-mint/install.sh
Normal file
@ -0,0 +1,316 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script de post-installation pour Linux Mint
|
||||
|
||||
# utilisation
|
||||
# wget https://ton-url.com/postinstall.sh -O postinstall.sh && chmod +x postinstall.sh && ./postinstall.sh
|
||||
|
||||
abort() {
|
||||
echo ""
|
||||
echo ""
|
||||
echo "Erreur : $1. Abandon" > /dev/stderr
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
config_firefox_fr() {
|
||||
echo -e "==> Configuration de Firefox en Français par défaut\n"
|
||||
|
||||
# Création d'un fichier de préférences globales pour Firefox
|
||||
mkdir -p /usr/lib/firefox/browser/defaults/preferences
|
||||
cat <<EOF > /usr/lib/firefox/browser/defaults/preferences/syspref.js
|
||||
// Forcer la langue en Français
|
||||
pref("intl.locale.requested", "fr");
|
||||
// Activer le dictionnaire fr par défaut
|
||||
pref("spellchecker.dictionary", "fr");
|
||||
// Langues préférées pour les sites web
|
||||
pref("intl.accept_languages", "fr, fr-fr, en-us, en");
|
||||
// Activer les DRM (Netflix/Prime)
|
||||
pref("media.eme.enabled", true);
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
config_libreoffice() {
|
||||
echo -e "==> Vérification du support français LibreOffice\n"
|
||||
# Le paquet l10n-fr installe l'interface, hunspell-fr installe le dictionnaire ABC
|
||||
apt install -y libreoffice-l10n-fr hunspell-fr mythes-fr hyphen-fr
|
||||
}
|
||||
|
||||
|
||||
prepa_restauration_firefox() {
|
||||
echo -e "==> Préparation du dossier Firefox (Lancer Firefox 1 fois avant)\n"
|
||||
# S'assure que le dossier existe
|
||||
mkdir -p $HOME/.mozilla/firefox
|
||||
echo "RAPPEL : Pour restaurer, copiez votre sauvegarde dans $HOME/.mozilla/firefox/"
|
||||
}
|
||||
|
||||
|
||||
microcode() {
|
||||
echo -e "==> Installation du microcode (Sécurité CPU)\n"
|
||||
|
||||
# Détection du fabricant du CPU
|
||||
CPU_VENDOR=$(grep -m 1 'vendor_id' /proc/cpuinfo | awk '{print $3}')
|
||||
|
||||
case "$CPU_VENDOR" in
|
||||
GenuineIntel)
|
||||
echo "Processeur Intel détecté..."
|
||||
apt install -y intel-microcode
|
||||
;;
|
||||
AuthenticAMD)
|
||||
echo "Processeur AMD détecté..."
|
||||
apt install -y amd64-microcode
|
||||
;;
|
||||
*)
|
||||
echo "Fabricant inconnu ($CPU_VENDOR), saut de l'étape microcode."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
|
||||
opti_journald() {
|
||||
echo -e "==> Optimizing system logs (Max 100MB)..."
|
||||
|
||||
# Use a regex that handles both commented and existing uncommented lines
|
||||
sudo sed -i 's/^#\?SystemMaxUse=.*/SystemMaxUse=100M/' /etc/systemd/journald.conf
|
||||
|
||||
# Restart the daemon to apply changes
|
||||
sudo systemctl restart systemd-journald
|
||||
|
||||
# Force immediate cleanup of logs older than the limit
|
||||
sudo journalctl --vacuum-size=100M
|
||||
|
||||
echo -e "✅ Optimization complete.\n"
|
||||
}
|
||||
|
||||
|
||||
opti_fstab () {
|
||||
echo -e "==> Optimisation du montage des disques (noatime)\n"
|
||||
# Replaces relatime with noatime everywhere in the file
|
||||
sudo sed -i 's/relatime/noatime/g' /etc/fstab
|
||||
}
|
||||
|
||||
|
||||
opti_apt() {
|
||||
# On s'assure d'avoir les droits root
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "Erreur : Ce script doit être exécuté en tant que root (sudo)."
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "==> Optimisation du gestionnaire de paquets APT\n"
|
||||
|
||||
# 1. Supprime les fichiers .deb des paquets qui ne peuvent plus être téléchargés (obsolètes)
|
||||
apt-get autoclean -y
|
||||
|
||||
# 2. Supprime la totalité du cache (ton code original)
|
||||
apt-get clean
|
||||
|
||||
# 3. Supprime les dépendances inutilisées et leurs fichiers de config
|
||||
apt-get autoremove --purge -y
|
||||
|
||||
# 4. Optionnel : Met à jour la liste des paquets pour repartir sur une base propre
|
||||
# apt-get update
|
||||
|
||||
echo -e "\n[Terminé] Le système est plus léger !"
|
||||
}
|
||||
|
||||
|
||||
modif_systeme() {
|
||||
|
||||
configuration_apt
|
||||
|
||||
# Vérification Live USB
|
||||
if [ -f "/cdrom/preseed/linuxmint.seed" ]; then
|
||||
echo "Mode Live détecté. Fin du script."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
install_logiciels
|
||||
config_firefox_fr
|
||||
config_timeshift_desactive
|
||||
microcode
|
||||
opti_journald
|
||||
opti_fstab
|
||||
|
||||
mises_a_jour
|
||||
|
||||
config_libreoffice
|
||||
prepa_restauration_firefox
|
||||
|
||||
echo -e "==> Optimisation du Swappiness\n"
|
||||
sysctl vm.swappiness=10
|
||||
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swappiness.conf
|
||||
|
||||
opti_apt
|
||||
|
||||
}
|
||||
|
||||
|
||||
config_timeshift_desactive() {
|
||||
echo -e "==> Désactivation des sauvegardes automatiques Timeshift\n"
|
||||
|
||||
# On récupère la partition racine pour que la commande soit valide
|
||||
TARGET_DEV=$(findmnt / -n -o SOURCE)
|
||||
|
||||
# On règle tous les niveaux de rétention à 0
|
||||
timeshift --set-device "$TARGET_DEV" \
|
||||
--schedule-hourly 0 \
|
||||
--schedule-daily 0 \
|
||||
--schedule-weekly 0 \
|
||||
--schedule-monthly 0 \
|
||||
--schedule-boot 0 \
|
||||
--skip-grub \
|
||||
|| echo "Note : Timeshift n'a pas pu être configuré (peut-être non installé)."
|
||||
}
|
||||
|
||||
|
||||
##########################################################
|
||||
# Mises à jour et installation des logiciels utilisateur #
|
||||
##########################################################
|
||||
|
||||
# Installation des polices Microsoft. On le fait au début pour pouvoir vite
|
||||
# accepter l'EULA et pouvoir aller boire un café :-)
|
||||
# L'astuce d'utiliser DEBIAN_FRONTEND=noninteractive ne marche plus, il faudrait
|
||||
# préconfigurer debconf pour éviter d'avoir à répondre ici
|
||||
install_logiciels() {
|
||||
echo -e "==> Installation des polices Microsoft\n"
|
||||
|
||||
# 1. On pré-accepte la licence dans la base de données debconf
|
||||
echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections
|
||||
|
||||
# 2. On installe en forçant le mode non-interactif pour ignorer toute autre question
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y ttf-mscorefonts-installer || abort "problème lors de l'installation des polices"
|
||||
|
||||
# mise à jour du système
|
||||
echo "==> Mise à jour du système\n"
|
||||
apt update || abort "impossible de récupérer les informations des dépôts"
|
||||
apt full-upgrade -y || abort "erreur lors de la mise à jour des paquets"
|
||||
|
||||
# installation de logiciels utilisateurs indispensables ou juste très utiles
|
||||
# - backintime-qt pour avoir un bon logiciel de sauvegardes
|
||||
# - brasero pour graver
|
||||
# - cheese pour tester la webcam
|
||||
# - fonts-contarell et fonts-linuxlibertine parce qu'elles sont jolies et complètes
|
||||
# - keepassxc pour gérer les mots de passe
|
||||
# - nemo-image-converter pour rapidement réduire des images pour l'envoi par mail
|
||||
# - pdfarranger pour découper / assembler des PDF
|
||||
# - verbiste-gnome pour la conjugaison
|
||||
# - gparted pour organiser le partitionnement des disques
|
||||
# - vlc pour lire les fichiers audio et vidéos
|
||||
# - vnstat statisitques utilisation réseau
|
||||
# - iftop afficher les connexions instantannée
|
||||
# - numlockx activation du pavé numérique en X11
|
||||
echo -e "==> Installation des programmes complémentaires\n"
|
||||
apt install -y \
|
||||
backintime-qt \
|
||||
brasero \
|
||||
cheese \
|
||||
fonts-cantarell fonts-linuxlibertine \
|
||||
keepassxc \
|
||||
nemo-image-converter \
|
||||
pdfarranger \
|
||||
verbiste-gnome \
|
||||
gparted \
|
||||
vlc \
|
||||
vnstat \
|
||||
iftop \
|
||||
numlockx \
|
||||
hunspell-fr \
|
||||
mint-meta-codecs \
|
||||
|| abort "problème lors de l'installation des logiciels utilisateurs"
|
||||
|
||||
# Installation de tous les paquets de langue
|
||||
echo -e "==> Installation du support français pour les programmes déjà installés\n"
|
||||
apt install -y language-selector-common
|
||||
apt install -y $(check-language-support -l fr)
|
||||
|
||||
echo -e "==> Francisation de Firefox (.deb)\n"
|
||||
# On installe le paquet de langue officiel des dépôts Mint/Ubuntu
|
||||
apt install -y firefox-locale-fr || echo "Note: Impossible d'installer le pack FR pour Firefox apt."
|
||||
# curl -L -o /usr/lib/firefox/distribution/extensions/dictionnaire-francais.xpi https://addons.mozilla.org/fr/firefox/downloads/latest/1750/addon-1750-latest.xpi
|
||||
# sed -i 's/preferredDictionary =.*/preferredDictionary = fr/' /usr/lib/firefox-*/dictionaries/dictionaries.xml
|
||||
}
|
||||
################
|
||||
# Mises à jour #
|
||||
################
|
||||
mises_a_jour() {
|
||||
echo -e "Configuraiton de dconf\n"
|
||||
# Configuration de dconf pour permettre de modifier certaines configurations
|
||||
# par défaut
|
||||
mkdir -p /etc/dconf/profile
|
||||
echo -e\
|
||||
"user-db:user\n"\
|
||||
"system-db:local" > /etc/dconf/profile/user
|
||||
mkdir -p /etc/dconf/db/local.d
|
||||
|
||||
# Ne pas demander à l'utilisateur l'utilisation de dépôts locaux
|
||||
echo -e \
|
||||
"[com/linuxmint/updates]\n"\
|
||||
"default-repo-is-ok=true" > /etc/dconf/db/local.d/00-alpinux
|
||||
|
||||
dconf update
|
||||
|
||||
}
|
||||
|
||||
|
||||
# Fonctions Utilisateur (SANS sudo)
|
||||
personnalisation_utilisateur() {
|
||||
echo -e "${GREEN}==> Personnalisation de l'environnement (User: $USER)${NC}"
|
||||
# Cinnamon / Nemo
|
||||
dconf write /org/nemo/desktop/trash-icon-visible true
|
||||
dconf write /org/nemo/desktop/home-icon-visible true
|
||||
dconf write /org/cinnamon/desktop/interface/clock-show-date true
|
||||
dconf write /org/cinnamon/desktop/interface/first-day-of-week 1
|
||||
# Note: sudo dconf update n'est pas nécessaire pour les clés utilisateur locales
|
||||
}
|
||||
|
||||
|
||||
configuration_apt() {
|
||||
echo -e "==> Mise à jour de la liste des dépots\n"
|
||||
apt update
|
||||
# Met à jour les langues pour toutes les applications Flatpak installées
|
||||
flatpak update -y
|
||||
|
||||
# Configuration de apt-proxy
|
||||
echo -e "==> Configuration de apt-proxy\n"
|
||||
apt install -y auto-apt-proxy || abort "Échec de l'installation d'auto-apt-proxy"
|
||||
echo 'Acquire::http::ProxyAutoDetect "auto-apt-proxy";' > /etc/apt/apt.conf.d/01proxy
|
||||
|
||||
}
|
||||
|
||||
###############################################################
|
||||
# GRUB : sélection automatique de la dernière entrée utilisée #
|
||||
###############################################################
|
||||
modif_grub() {
|
||||
echo -e "==> Modification de GRUB\n"
|
||||
# On comment la ligne "GRUB_DEFAULT=0" et on ajoute les "bonnes" options
|
||||
sed -i '/^GRUB_DEFAULT=0/ i#GRUB_DEFAULT=0\
|
||||
GRUB_DEFAULT=saved\
|
||||
GRUB_SAVEDEFAULT=true' /etc/default/grub
|
||||
# On met à jour GRUB
|
||||
update-grub
|
||||
}
|
||||
|
||||
|
||||
|
||||
del_itself() {
|
||||
rm "$0" || echo "Impossible de supprimer ce script" > /dev/stderr
|
||||
}
|
||||
|
||||
|
||||
##############################
|
||||
# Auto-destruction du script #
|
||||
##############################
|
||||
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
personnalisation_utilisateur
|
||||
echo "Passage en mode Root pour les modifications système..."
|
||||
sudo "$0" "$@"
|
||||
del_itself
|
||||
exit $?
|
||||
else
|
||||
modif_systeme
|
||||
echo -e "\n${GREEN}Terminé ! Un redémarrage est conseillé.${NC}"
|
||||
fi
|
||||
Loading…
Reference in New Issue
Block a user