Mettre en place les dépôts sur les clinux

À l'installation d'un clinux, les dépôts sont tous dans le fichier /etc/apt/sources.list.

Or, il manque certains dépôts et il est recommandé de ne garder dans ce fichier que les dépôts pour Debian et de mettre les autres avec des fichiers "xxx.list" dans le répertoire /etc/apt/sources.list.d/.

C'est le but du script startup.linux, proposé ci-dessous, de réaliser ce travail avec un fichier sambaedu.list pour les dépôts gérés par Sambaédu.

On placera ce fichier dans le répertoire /etc/sambaedu/applications/depots/ en le nommant startup.linux pour qu'il puisse être lancé à chaque démarrage du clinux.

Procédure

  1. Se connecter sur le SE4FS en root

  2. Créer le répertoire /etc/sambaedu/applications/depots/.

    La commande pour créer ce répertoire depots est la suivante :

    mkdir -p /etc/sambaedu/applications/depots/

  3. Déposer le script startup.linux fourni ci-après dans le répertoire /etc/sambaedu/applications/depots/.

    script startup.linux pour paramétrer les dépôts nécessaires à la gestion du clinux

    1
    ladate="$(date +%Y_%m_%d_%Hh%Mmin%Ss)"
    2
    texte_temoin_creation="création du répertoire /root/temoins le ${ladate}"
    3
    texte_temoin_passage="on a utilisé startup.linux pour les dépôts le ${ladate}"
    4
    temoin=/root/temoins/temoin.depots
    5
    DEPOT_debian="deb.debian.org"
    6
    NOMCODE=$(lsb_release --codename | cut -f2)
    7
    version="bullseye"
    8
    DEPOT_sambaedu="deb.sambaedu.org"
    9
    10
    tester_se4()
    11
    {
    12
        # pour éviter de lancer le script sur le se4fs
    13
        # On rend le script "crétin-résistant"
    14
        [ -e /var/sambaedu/clinux ] && echo "Malheureux... Ce script est à exécuter sur les clients-Linux, pas sur le serveur !" && exit 1
    15
    }
    16
    17
    repertoire_root_temoins()
    18
    {
    19
        # le répertoire /root/temoins servira éventuellement pour un script unefois ou chaquefois
    20
        if [ ! -e "/root/temoins" ]
    21
        then
    22
            # il n'existe pas : on le crée
    23
            mkdir -p /root/temoins
    24
            # on pose un témoin de création
    25
            echo "${texte_temoin_creation}" > ${temoin}
    26
            echo "${texte_temoin_passage}" >> ${temoin}
    27
        else
    28
            # il existe : on pose un témoin de passage
    29
            echo "${texte_temoin_passage}" > ${temoin}
    30
        fi
    31
    }
    32
    33
    test_version()
    34
    {
    35
        # tester si on est sur la bonne version de Debian
    36
        if [ "$NOMCODE" = "$version" ]
    37
        then
    38
            echo "on est sur une Debian/$version" >> ${temoin}
    39
        else
    40
            echo "on n'est pas sur une Debian/$version !" >> ${temoin}
    41
        fi
    42
    }
    43
    44
    modifier_sources_debian()
    45
    {
    46
        # on teste si le fichier /etc/apt/sources.list contient déjà ce qu'il faut
    47
        test=$(grep 'fin du sources.list' /etc/apt/sources.list | awk  '{print $2 " " $3 " " $4}')
    48
        if [ "$test" != "fin du sources.list" ]
    49
        then
    50
            # on sauvegarde le fichier existant avec la date avant de l'écraser
    51
            cp /etc/apt/sources.list /root/sources.list.sauve.${ladate}
    52
            cat > /etc/apt/sources.list << END
    53
    #############################################
    54
    ## sources.list complet pour le dépot ${DEPOT_debian}
    55
    ## 
    56
    ## fichier /etc/apt/sources.list
    57
    ###############################
    58
    ### $version
    59
    deb http://${DEPOT_debian}/debian/ ${version} main contrib non-free
    60
    61
    ### ### $version-updates
    62
    deb http://${DEPOT_debian}/debian/ ${version}-updates main contrib non-free
    63
    64
    ### ### ### ### $version-backports
    65
    deb http://${DEPOT_debian}/debian/ ${version}-backports main contrib non-free
    66
    67
    ### ### ### ### ### $version security
    68
    deb http://${DEPOT_debian}/debian-security ${version}-security main contrib non-free
    69
    70
    ################################################
    71
    ## Autres dépots : à ne pas mettre dans ce fichier (recommandation)
    72
    ## créer un fichier spécifique nom_spécifique.list (un fichier par dépôt) dans /etc/apt/sources.list.d/
    73
    74
    ## fin du sources.list complet pour le dépot ${DEPOT_debian}
    75
    ################################################
    76
    END
    77
            echo "on a remplacé le fichier /etc/apt/sources.list" >> ${temoin}
    78
        else
    79
            echo "fichier /etc/apt/sources.list conforme" >> ${temoin}
    80
        fi
    81
    }
    82
    83
    cles_depots_debian()
    84
    {
    85
        ###### est-ce utile ?
    86
        # Installation des clefs des dépots si elle ne sont pas installées
    87
        # clés pour debian-keyring
    88
        apt-get install debian-keyring
    89
        echo "on a installé les clefs des dépôts debian" >> ${temoin}
    90
    }
    91
    92
    maj_key_sambaedu()
    93
    {
    94
        # récupérer la nouvelle clé du dépôt sambaedu
    95
        wget -O - https://deb.sambaedu.org/sambaedu.gpg.key|apt-key add -
    96
        echo "on a récupéré la nouvelle clé du dépôt sambaedu" >> ${temoin}
    97
    }
    98
    99
    modifier_se4list()
    100
    {
    101
        # on teste l'existence de /etc/apt/sources.list.d/se4.list
    102
        if [ ! -e "/etc/apt/sources.list.d/se4.list" ]
    103
        then
    104
            # on le crée
    105
            touch /etc/apt/sources.list.d/se4.list
    106
        fi
    107
        # on teste si le fichier /etc/apt/sources.list.d/se4.list contient déjà ce qu'il faut
    108
        test=$(grep 'fin du se4.list' /etc/apt/sources.list.d/se4.list | awk  '{print $2 " " $3 " " $4}')
    109
        if [ "$test" != "fin du se4.list" ]
    110
        then
    111
            # on sauvegarde le fichier existant avec la date avant de l'écraser
    112
            cp /etc/apt/sources.list.d/se4.list /root/se4.list.sauve.${ladate}
    113
            # création du /etc/apt/sources.list.d/se4.list
    114
            cat > /etc/apt/sources.list.d/se4.list << END
    115
    #############################################
    116
    ## se4.list pour le dépot ${DEPOT_sambaedu}
    117
    ## 
    118
    ## fichier /etc/apt/sources.list.d/se4.list
    119
    ###############################
    120
    #### Dépôt en XP
    121
    #deb http://${DEPOT_sambaedu}/debian ${version} se4XP
    122
    123
    #### Dépôt en stable
    124
    #deb http://${DEPOT_sambaedu}/debian ${version} stable
    125
    126
    ## fin du se4.list pour le dépôt ${DEPOT_sambaedu}
    127
    #############################################
    128
    END
    129
            echo "on a créé le fichier /etc/apt/sources.list.d/se4.list" >> ${temoin}
    130
        else
    131
            echo "fichier /etc/apt/sources.list.d/se4.list conforme" >> ${temoin}
    132
        fi
    133
    }
    134
    135
    determiner_canal()
    136
    {
    137
        # on se met dans un canal : stable ou se4XP
    138
        # par exemple en stable :
    139
        #sed -i '/bullseye se4XP/s/^d/#d/' /etc/apt/sources.list.d/se4.list
    140
        #sed -i '/bullseye stable/s/^#d/d/' /etc/apt/sources.list.d/se4.list
    141
        # par exemple en se4XP :
    142
        sed -i '/bullseye se4XP/s/^#d/d/' /etc/apt/sources.list.d/se4.list
    143
        sed -i '/bullseye stable/s/^d/#d/' /etc/apt/sources.list.d/se4.list
    144
        # on détermine dans quel canal on se trouve : stable ou se4XP
    145
        test=$(grep '^[^#;]' /etc/apt/sources.list.d/se4.list | awk '{print $4}')
    146
        case "$test" in
    147
            stable)
    148
                echo "le canal de mise à jour est stable" >> ${temoin}
    149
            ;;
    150
            se4XP)
    151
                echo "le canal de mise à jour est se4XP" >> ${temoin}
    152
            ;;
    153
            *)
    154
                echo "canal de mise à jour inconnu : $test" >> ${temoin}
    155
            ;;
    156
        esac
    157
    }
    158
    159
    recharger_paquets()
    160
    {
    161
        # on recharge la liste des paquets
    162
        apt-get update
    163
        if [ "$?" != "0" ]
    164
        then
    165
            echo "le rechargement de la liste des paquets ne s'est pas fait correctement" >> ${temoin}
    166
        else
    167
            echo "on a rechargé la liste des paquets" >> ${temoin}
    168
        fi
    169
    }
    170
    171
    # Programme
    172
    tester_se4
    173
    repertoire_root_temoins
    174
    #test_version
    175
    if [ "$NOMCODE" = "$version" ]
    176
    then
    177
        echo "on est sur une Debian/$version" >> ${temoin}
    178
        modifier_sources_debian
    179
        #maj_key_sambaedu
    180
        modifier_se4list
    181
        determiner_canal
    182
        recharger_paquets
    183
    else
    184
        echo "on n'est pas sur une Debian/$version !" >> ${temoin}
    185
    fi
  4. Résultat

    Et c'est tout ! Les dépôts nécessaires à la gestion du clinux sont mis en place lors du (re-)démarrage du clinux.

    Cela peut concerner l'installation d'applications ou la mise à jour du système et des applications installées.