~lecotegougdelaforce/ubuntu-fr-scripts/apt-off

« back to all changes in this revision

Viewing changes to apt-off

  • Committer: Skippy le Grand Gourou
  • Author(s): LóQuercynol
  • Date: 2009-03-05 21:30:13 UTC
  • Revision ID: skippy_le_grand_gourou_lecotegougdelaforce_at_free_dot_fr-20090305213013-adwxvy5b8jd4zqbv
Améliorations par LóQuercynol :

« Les modifications sont les suivantes :
- Adaptation aux architectures i386 et amd64,
- Possibilité de forcer l'installation en cas de problème de dépendances détecté sur la machine à mettre à jour (passage de l'argument -f à apt-get),
- Possibilité d'utiliser un fichier "sources.list" spécifique en modifiant la variable "SOURCE" en début de script (utilisation de la ressource "Dir::Etc::sourcelist" au niveau des appels à apt-get) : j'ai utilisé cette possibilité pour avoir un /etc/apt/sources.list pointant uniquement vers un média amovible, évitant ainsi l'émission de requêtes réseau récurrentes vouées à l'échec.

J'ai testé ce script sur une Hardy amd64 et une Gutsy i386 (kubuntu). »
[LóQuercynol, http://forum.ubuntu-fr.org/profile.php?id=113211]

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
FAILURE=1
4
4
SUCCESS=0
 
5
FIX_BROKEN=""
5
6
 
6
7
# Répertoires
7
8
CURRENTDIR="${PWD}/"
31
32
        \tplus ou moins volumineux, aussi prévoyez un support de\n
32
33
        \ttransport de capacité suffisante.${BOLD}${ROUGE} N'oubliez pas le fichier\n
33
34
        \t${BLEU}${OFFLINE}${NORMAL} !!!${NORMAL}\n\n
 
35
        \t${VERT}-f${NORMAL} ou${VERT} ----fix-broken${NORMAL}\n
 
36
        \tCorrection ; essaye de réparer un système dont les dépendances sont\n
 
37
        \tdéfectueuses. Cette option, utilisée avec install ou remove, peut\n
 
38
        \tomettre tout paquet de façon à permettre à APT de déduire une solution viable.\n
 
39
        \tChaque paquet spécifié doit complètement corriger le problème.\n
 
40
        \tCette option est quelquefois nécessaire lorsque l´on exécute APT pour\n
 
41
        \tla première fois ; APT lui-même interdit les dépendances défectueuses dans\n
 
42
        \tun système. Il est possible que la structure de dépendances d´un système\n
 
43
        \tsoit tellement corrompue qu´elle requiert une intervention manuelle\n
 
44
        \t(ce qui veut dire la plupart du temps utiliser ${BOLD}dselect(8)${NORMAL} ou ${BOLD}dpkg --remove${NORMAL}\n
 
45
        \tpour éliminer les paquets en cause).\n\n
34
46
        \t${VERT}-g${NORMAL} ou${VERT} --generate${BLEU} [paquet1 paquet2 ...]${NORMAL} ou${BLEU} [dist-upgrade]${NORMAL}\n
35
47
        \tGénère la liste des paquets à  télécharger. Cette liste est\n
36
48
        \tstockée dans le fichier ${BLEU}${OFFLINE}${NORMAL}.\n\n
101
113
        # Cas particulier : mise à  jour
102
114
        elif  [[ $1 == "dist-upgrade" ]]
103
115
        then
104
 
                sudo apt-get -o dir::cache::archives=${PWD}/${DEB} dist-upgrade
 
116
                sudo apt-get -o dir::cache::archives=${PWD}/${DEB} -o Dir::Etc::sourcelist=${SOURCE} ${FIX_BROKEN} dist-upgrade
105
117
        else
106
118
                # Liste des paquets à  installer
107
119
                for ((i=1; i<="$#"; i++ ))
108
120
                do 
109
 
                        sudo apt-get -o dir::cache::archives=${PWD}/${DEB} install ${!i}
 
121
                        sudo apt-get -o dir::cache::archives=${PWD}/${DEB} -o Dir::Etc::sourcelist=${SOURCE} ${FIX_BROKEN} install ${!i}
110
122
                done
111
123
        fi
112
124
 
124
136
##########################################
125
137
function generate()
126
138
{
 
139
    case `uname -m` in
 
140
        amd64 | x86_64)
 
141
            DEB_ARCH=amd64 ;;
 
142
        i386 | i586 | i686 | *)
 
143
            DEB_ARCH=i386 ;;
 
144
    esac
 
145
    
127
146
        # Il faut au moins une liste de paquets
128
 
        if [[ `ls ${LISTDIR} | grep binary-i386_Packages | wc -l` == 0 ]]
 
147
        if [[ `ls ${LISTDIR} | grep binary-${DEB_ARCH}_Packages | wc -l` == 0 ]]
129
148
        then
130
149
                # Si toute première utilisation, on prépare la configuration
131
150
                if [[ ! -e ${CONFIGDIR} ]]
132
151
                then
133
152
                        mkdir ${CONFIGDIR}
 
153
            echo "DEB_ARCH=${DEB_ARCH}" > ${CONFIGDIR}/${CONFIGFILE}
134
154
                        # Déduction des listes de paquets à  télécharger, d'après le sources.list
135
 
                        awk '($1=="deb" || $1=="deb-src") && !match($2,"cdrom") { split($2,A,"/"); for(i=4;i<=NF;++i) print "wget -O "A[3]"_"A[4]"_dists_"$3"_"$i"_binary-i386_Packages.gz "$2"dists/"$3"/"$i"/binary-i386/Packages.gz" }' < ${SOURCE} > ${CONFIGDIR}/${CONFIGFILE}
 
155
                        awk '($1=="deb" || $1=="deb-src") && !match($2,"cdrom") { split($2,A,"/"); for(i=4;i<=NF;++i) print "wget -O "A[3]"_"A[4]"_dists_"$3"_"$i"_binary-${DEB_ARCH}_Packages.gz "$2"dists/"$3"/"$i"/binary-${DEB_ARCH}/Packages.gz" }' < ${SOURCE} >> ${CONFIGDIR}/${CONFIGFILE}
136
156
                        # Un message de prévention...
137
157
                        echo -e "ATTENTION : Il semblerait que c'est la première fois que vous essayez d'utiliser un dérivé d'apt-get sur cet ordinateur. Afin de terminer la configuration, veuillez exécuter la commande${VERT} apt-off -c${NORMAL} sur un ordinateur disposant d'un accès à  internet, puis poursuivre la procédure."
138
158
                        exit
178
198
        # Cas particulier : mise à  jour
179
199
        elif [[ $1 == "dist-upgrade" ]]
180
200
        then
181
 
                sudo apt-get -qq --print-uris dist-upgrade > .offline_tmp
 
201
                sudo apt-get -o Dir::Etc::sourcelist=${SOURCE} ${FIX_BROKEN} -qq --print-uris dist-upgrade > .offline_tmp
 
202
        # Ajout de l'option -f pour éviter un abandon en cas de problème de dépendances
182
203
        else
183
204
                # Liste des paquets à  installer
184
205
                for ((i=1; i<="$#"; i++ ))
185
206
                do 
186
 
                        sudo apt-get -qq --print-uris install ${!i} >> .offline_tmp
 
207
                        sudo apt-get -o Dir::Etc::sourcelist=${SOURCE} ${FIX_BROKEN} -qq --print-uris install ${!i} >> .offline_tmp
187
208
                done
188
209
        fi
189
210
 
266
287
                        else
267
288
                                download
268
289
                        fi;;
 
290
                f ) FIX_BROKEN="--fix-broken";;
269
291
                g )
270
292
                        while [[ $#>1 ]]
271
293
                        do
308
330
                                                PKG="${PKG} ${1}"
309
331
                                        done
310
332
                                        extract ${PKG};;
 
333
                                fix-broken )    FIX_BROKEN="--fix-broken";;
311
334
                                generate )
312
335
                                        while [[ $#>1 ]]
313
336
                                        do