Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/07/2007, à 22:38

footware

Script pour un miroir local : des volontaires pour essayer ?

S@lut !

L'objet de ce script et de créer et utiliser dans les meilleures conditions possibles un dépot local.
Si vous êtes intéressé, j'ai fait un bout de manuel ici.

Voici le code de la version 3.1 :

#!/bin/bash

###########################################################
# VARIABLES À ÉDITER SI NÉCESSAIRE

# Informations sur les distributions.
DISTRIBUTION=""
VERSION=""
ARCHITECTURE=""
SERVEUR=""
METHODE=""

# Informations sur le dépot local local :
DESTINATION=""
SECTIONS=""
DEPOTS=""
CLEANUP=""

###########################################################
# VERSION DU SCRIPT ET INDICES D'ÉVOLUTION.
Ver=3.1

# Version 3.1 du 23/09/07 :
# Le fichier "sources.list" provisoire est créé dans le répertoire utilisateur et plus dans le répertoire du dépot local local.
# Utilisation d'un fichier de verrouillage pour interdire une mise à jour redondante.
# Modifications mineures des textes des messages.
# La crétion ou la mise à jour du dépot local (option "-m") devient l'option "-d".
# L'option "-m" devient la mise à jour automatique de la distribution (nouvelle fonctionnalité).

# Version 3.0 du 21/09/07 :
# Amélioration de la lisibilité et optimisations du code.
# Correction de bugs :
#	- seule la section "main" était mise à jour (guillemets à $SECTIONS ).
#	- retrait d'un "/" en trop dans les lignes générées du "sources.list"
# Les messages sont scindés en 3 catégories (Msg_X, Err_X, Aid_X).
# Ajout de la description de la configuration (option "-c" et messages Cfg_X).
# Formalisation de l'option "-m" par défaut et ajout de l'information de nettoyage à la création du dépot local.
# Modification automatique du fichier "sources.list" sur autorisation avec sauvegarde du fichier initial.
# Ajout de la restauration du fichier "sources.list" initial si la sauvegarde existe (option "-r").
# Modifications mineures des textes des messages.
# Initialisation automatique de l'architecture (uniquement pour les "ix86" actuellement).

# Version 2.1 du 19/07/07 :
# Amélioration de la gestion des options (guillemets, option "-m" cachée).
# Correction du chemin du dépot local.

# Version 2.0 du 19/07/07 :
# Abandon du fichier de configuration annexe.
# Ajout des options (aide, version et « source.list » seulement) et d'une configuration par défaut.
# Vérification de la validité du répertoire, de l'installation des dépendances et des autorisations utilisateur.
# Optimisations mineures du code.

# Todo : améliorer l'interactivité (questions / réponses)
# Todo : gestion des erreurs à améliorer
#	- vérifier la sauvegarde et la restauration effectives.
 
###########################################################
# MESSAGES EN FRANÇAIS : on peut traduire ou modifier.
Msg_0="=============================================================="
Msg_1="Création ou mise à jour du dépot local"
Msg_2="vers"
Msg_3="Calcul de la taille des dépots. Veuillez patienter."
Msg_4="Taille des depots :"
Msg_5="Debut de la synchronisation du dépot local	:"
Msg_6="Fin de la synchronisation du dépot local	:"
Msg_7="Un nouveau fichier « sources.list » à été généré"
Msg_8="Le fichier « sources.list » initial à été sauvegardé sous"
Msg_9="Le fichier « sources.list » initial a été restauré."
Msg_10="Pour utiliser ce dépot local,"
Msg_11="devra être accessible."
Msg_12="Le dépot local"
Msg_13="sera"
Msg_14="ne sera pas"
Msg_15="nettoyé"
Msg_16="Une précédente sauvegarde existe déjà."

Err_1="Abandon."
Err_2="n'est pas installé."
Err_3="Dépendance non satisfaite :"
Err_4=": supprimez les espaces dans le point de montage du dépot local."
Err_5="Vous n'avez pas les droits d'écriture sur"
Err_6="n'est pas un répertoire"
Err_7=": option invalide"
Err_8="Le fichier de sauvegarde n'existe pas."
Err_9="L'architecture de votre ordinateur n'est pas référencée."
Err_10="Veuillez éditer la variable « ARCHITECTURE » au début du script."
Err_11="Une mise à jour du dépot local est déja en cours d'exécution."

Aid_1="Pour en savoir davantage, faites : «"
Aid_2="-? »."
Aid_3="        version :"
Aid_4="Usage:"
Aid_5="[OPTION]"
Aid_6="Crée, met à jour ou utilise un dépot local dans le répertoire du script."
Aid_7="Seule la première option sera retenue."								#V3.0
Aid_8="-?, -h, -H   aide (help)      Afficher cet aide-mémoire."
Aid_9="-c, -C       configuration    Afficher la configuration actuelle."
Aid_10="-d, -D       dépot            Créer où mettre à jour le dépot local (défaut)."		# V3.0; V3.1
Aid_11="-s, -S       sources          Créer uniquement le fichier « source.list »."
Aid_12="-v, -V       version          Afficher le nom et la version du script."
Aid_13="-r, -R       restauration     Restaurer le fichier « sources.list » initial."		# V3.0
Aid_14="-m, -M       mise à jour      Mettre à jour la distribution avec le dépot local."	# V3.1

Cfg_0=": état de la configuration en cours."
Cfg_1="Distribution :	"
Cfg_2="Versions :	"
Cfg_3="Sections:	"
Cfg_4="Dépots :	"
Cfg_5="Architecture :	"
Cfg_6="Serveur :	"
Cfg_7="Méthode :	"
Cfg_8="Dépot local :	"

#########################################################
# LE SCRIPT COMMENCE ICI : éditer avec précaution.

# Réglage des variables par défaut.
DEPENDANCE="tr awk debmirror"
SERVEUR=${SERVEUR:-"archive.ubuntu.com"}
FICHIER=`( echo ${0} | awk -F '/' '{print $NF}' )`
STARTTIME=`date '+%d-%m-%y %H:%M:%S'`
LISTE="/etc/apt/sources.list"
SAVE="$LISTE-$FICHIER"
DISTRIBUTION=${DISTRIBUTION:-"ubuntu"}; DISTRIBUTION=`( echo $DISTRIBUTION | tr '[A-Z]' '[a-z]' )`
VERSION=${VERSION:-`( lsb_release -c | awk -F ':' '{print $2}' )`}; VERSION=`( echo $VERSION | tr '[A-Z]' '[a-z]' )`
SECTIONS=${SECTIONS:-"main restricted"}; SECTIONS=`( echo $SECTIONS | tr '[A-Z]' '[a-z]' )`
DEPOTS=${DEPOTS:-"base security updates"}; DEPOTS=`( echo $DEPOTS | tr '[A-Z]' '[a-z]' )`
# On tente de reconnaitre l'architecture de la machine.
ARCHITECTURE=`( echo  ${HOSTTYPE:0:1}"x"${HOSTTYPE:2:2} | tr '[A-Z]' '[a-z]' )`
case "$ARCHITECTURE" in
	"ix86" )						# Les dérivés des 386 sont déja connus.
		ARCHITECTURE="i386" ;;
	*)							# Les autres architectures sont actuellement inconnues.
		ARCHITECTURE="inconnue" ;;
esac
if [ ${SERVEUR%:*} = "ftp" -o ${SERVEUR%:*} = "http" ]
then
	METHODE=`echo ${SERVEUR%:*}`
elif [ -z $METHODE ]
then
	METHODE="ftp"
fi
METHODE=`( echo $METHODE | tr '[A-Z]' '[a-z]' )`
if [ "$METHODE" = "rsync" ]
then
	SPECRSYNC=:
else
	SPECRSYNC=""
fi 
# Si le script est appelé depuis un  autre répertoire, on récupère le chemin. Sinon on utilise le répertoire courant.
# Plus le temps de faire dans la dentelle : j'y vais au marteau pilon. :/
if [ -z ${0%./*} ]
then 
	DESTINATION=$PWD/
fi
DESTINATION=${DESTINATION:-${0%"$FICHIER"}}; DESTINATION=${DESTINATION%./*} 	# V2.1
PID=`( echo $( ps -A | grep "$FICHIER" ) | awk '{print $1}' )`

# Récupération de la première options au lancement. Les autres sont ignorées.
Option=${1:1:1}
case "$Option" in		# V2.1
"s" | "S" )					# Génération du fichier "sources.list"
	Option="s"
;;
"" | "d" | "D"  )				# Création ou mise à jour du dépot local (option par défaut).
	Option="d"
;;
"r" | "R" )					# Restauration du fichier sources.list initial s'il existe.	V3.0
	Option="r"
;;
"v" | "V" )				# Affichage de la version du script.
	Option="v"
;;
"h" | "H" | "?" )				# Affichage de l'aide.
	Option="h"
;;
"c" | "C" )					# Affichage de la configuration courante.			V3.0
	Option="c"
;;
"m" | "M" )				# Mise à jour de la distribution.					V3.1
	Option="m"
;;
* )						# l'option n'est pas valide.
	echo
	echo  "$FICHIER" "$Err_7" « "$1" »
	echo "$Aid_1" "$FICHIER" "$Aid_2"
	echo
	exit
;;
esac
echo

# Les variables étant réglées, on passe au traitement.
case "$Option" in			# V2.1
"v" )						# Affichage de la version du script.
	echo "$FICHIER" "$Aid_3" "$Ver"
;;
"c" )						# Affichage de la configuration courante.		V3.0
	echo "$FICHIER $Cfg_0"
	echo
	echo "$Cfg_1$DISTRIBUTION"
	echo "$Cfg_2$VERSION"
	echo "$Cfg_3$SECTIONS"
	echo "$Cfg_4$DEPOTS"
	echo "$Cfg_5$ARCHITECTURE"
	echo "$Cfg_6$SERVEUR"
	echo "$Cfg_7$METHODE"
	echo "$Cfg_8$DESTINATION$DISTRIBUTION"
	case "$CLEANUP" in
		"--nocleanup" )
			 echo "$Msg_12 $Msg_14 $Msg_15" ;;
		"--cleanup" )
			 echo "$Msg_12 $Msg_13 $Msg_15" ;;
	esac
	if [ -f  "$DESTINATION/$FICHIER.lock" ]
	then
		echo "$Err_11"
	fi
;;
"h" )					# Affichage de l'aide.		V3.0
	echo "$Aid_4" "$FICHIER" "$Aid_5"
	echo "$Aid_6"
	echo
	echo "$Aid_7"
	echo "$Aid_8"
	echo "$Aid_9"
	echo "$Aid_14"
	echo  "$Aid_10"
	echo "$Aid_13"
	echo "$Aid_11"
	echo "$Aid_12"
;;
"d" )					# Vérifications de base pour la mise à jour du dépot local.
	a="1"
	Erreur="0"
	if [ -f  "$DESTINATION/$FICHIER.lock" ]				# On vérifie qu'aucune mise à jour n'est en cours.	V 3.1
	then
		echo "$Err_11"
		Erreur="1"
	fi
	for Dependance in $DEPENDANCE				# On vérifie que les dépendances sont installées.
	do
		for Path in `( echo ${PATH//:/ } )`
		do
			if [ -x "$Path/$Dependance" ]
			then
				a="0"
			fi
		done
		if [ $a = "1" ]
		then
			echo "$Err_3 $Dependance $Err_2"
			Erreur="1"
		fi
		a="1"
	done
	if [ "$ARCHITECTURE" = "inconnue" ]				# On vérifie que la variable "ARCHITECTURE" est bien définie.
	then
		echo "$Err_9"
		echo "$Err_10"
		echo "$Err_1"
		Erreur="1"
	fi
	if [ ! -w $DESTINATION ]											# L'utilisateur doit pouvoir
	then															# écrire dans le répertoire.
		echo "$Err_5 $DESTINATION"
		Erreur=1
	fi
	if [ -d $DESTINATION$DISTRIBUTION -a ! -w $DESTINATION$DISTRIBUTION ]	# L'utilisateur doit pouvoir
	then															#  écrire dans le dépot local.
		echo "$Err_5 $DESTINATION$DISTRIBUTION"
		Erreur=1
	fi
	if [ ! $Erreur = 0 ]								# Si une erreur est survenue,
	then
		echo "$Err_1"							# on abandonne.
		echo
		exit
	else										# Sinon, on crée le fichier de verrouillage.		V3.1
		echo "$PID - $USER sur $HOSTNAME"  >> "$DESTINATION/$FICHIER.lock"
	fi
;;
"s" | "m" )										# Pour les options "-s" ou "-m",
	rm -f "$HOME/sources.list"						# on efface le fichier "source.list" provisoire précédent.
;;
esac
case "$Option" in
"s" | "m" | "d" )										# Pour les options "-s", "-m" ou "-d", on crée ou on met à jour le
	for Architecture in $ARCHITECTURE; do			# dépot local ou le fichier "source.list" provisoire pour chaque
		for Version in $VERSION; do				# architecture, version et dépots sélectionés.
			for Depot in $DEPOTS; do
				if [ "$Depot" = "base" ]				# Si on télécharge la base de la version, le dépot n'est pas ajouté.
				then							# Exemple :"edgy" et pas "edgy-base".
					Miroir=$Version
				else
					Miroir=$Version-$Depot	# Mais si on traite les autres dépots, il faut rajouter le nom du dépot
				fi								#  en cours. Exemple : "edgy-updates".
				Ligne="deb file://$DESTINATION$DISTRIBUTION/ $Miroir"	# Création de la ligne à ajouter au fichier sources.list	V3.0
				for Section in $SECTIONS; do		# V3.0
					Ligne="$Ligne $Section"			# Complément de la ligne à ajouter au fichier sources.list
					if [ "$Option" = "d" ]			# Si l'option "-d" a été saisie, on met à jour le dépot local.		V2.1
					then
						echo "$Msg_0"
						echo "$Msg_1"
						echo "$SERVEUR $DISTRIBUTION $Architecture"
						echo "$Miroir $Section"
						echo "$Msg_2 $DESTINATION"
						case $CLEANUP in		# V3.0
							"--nocleanup" )
								echo "$Msg_12 $Msg_14 $Msg_15" ;;
							"--cleanup" )
								echo "$Msg_12 $Msg_13 $Msg_15" ;;
						esac
						echo "$Msg_0"
						# Création ou mise à jour du dépot local local.
						debmirror "$DESTINATION$DISTRIBUTION" --dist=$Miroir --section=$Section --arch=$Architecture\
						 --method=$METHODE --host=$SERVEUR --root=$SPECRSYNC$DISTRIBUTION $CLEANUP\
						--ignore-release-gpg --nosource --pdiff=none --progress
					fi
				done
				case $Option in
				"s" | "m" )											# Pour les options "-a" et "-m",
					if [ "$Version" = `( lsb_release -c | awk -F ':' '{print $2}' )` ]	# si la version en cours est la version installée,
					then											# on ajoute la ligne complète
						echo $Ligne  >> "$HOME/sources.list"		 		# dans le fichier sources.list provisoire.
					fi
				esac
			done
		done
	done
;;
esac
case "$Option" in
"d" )												# Pour l'option "-d",		V 2.1
	echo "$Msg_0"								# on calcule la taille du dépot local local (c'est long),
	echo "$Msg_3"
	Taille=`( du -sh --block-size=G $DESTINATION )`
	echo "$Msg_4 $Taille"							# on affiche la taille du dépot local local et le temps passé,
	echo "$Msg_0"
	echo "$Msg_5 $STARTTIME"
	echo "$Msg_6 `date '+%d-%m-%y %H:%M:%S'`"
	rm -f "$DESTINATION/$FICHIER.lock"				# et on supprime le fichier de verrouillage.	V 3.1
;;
"s" | "m" )										# Pour les options "-s" et "-m",	V 3.0
	if [ -f "$SAVE" ]
	then
		echo "$Msg_16"							# à moins qu'une sauvegarde précédente existe,
	else
		sudo cp -f "$LISTE" "$SAVE"				# on sauvegarde le fichier sources.list initial,
		echo	
		echo "$Msg_8" "$SAVE" 
	fi
	sudo cp -f  "$HOME/sources.list" "$LISTE"			# on modifie le fichier sources.list,
	echo "$Msg_7"
	echo "$Msg_10 $DESTINATION $Msg_11"
	case "$Option" in
	"m" )										# Pour l' option "-m",				V 3.1
		echo
		sudo apt-get update						# on met la base de donnée
		sudo apt-get upgrade						# et la distribution à jour.
	;;
	esac
;;
esac

case "$Option" in
"r" | "m" )											# Pour les options "-r" et "-m"				V 3.0
	if [ -f "$SAVE" ]								# et si le fichier de sauvegarde existe,
	then 
		sudo mv -f "$SAVE" "$LISTE"				# on restaure le fichier "sources.list" initial.
		echo
		echo "$Msg_9"
	else
		echo "$Err_8" "$Err_1"
	fi
;;
esac
echo

@++

Dernière modification par footware (Le 23/09/2007, à 21:59)


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#2 Le 12/07/2007, à 11:18

Danux

Re : Script pour un miroir local : des volontaires pour essayer ?

ça me tente de le faire mais il y'a combien de go a télécharger?
si pas beaucoup je prend et je test tout de suite!


"La vertue c'est la domination habituelle de la partie irrationnel de l'âme par l'intelligence" Aristote

Hors ligne

#3 Le 12/07/2007, à 12:40

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

Enfin un volontaire que je m'empresse de chaudement remercier. smile

Pour répondre à ta question, j'en suis à l'heure actuelle à 31 Go pour Edgy + Feisty (main universe multiverse restricted) avec les dépots de base, security, updates et backports.
Je pense que tabler sur une quinzaine de Go par version complète me semble raisonnable.

Pour être sincère, c'est surtout la validation des "automatismes" qui m'intéresse (adresse locale du dépot, génération des lignes pour le "sources.list", etc.) donc il n'est pas forcément nécessaire de faire un miroir complet.

Dans tous les cas, tout se passera dans le répertoire ou sera lancé ce script : rien n'en sortira, aucun autre répertoire ou fichier ne sera touché.

En fait le script a continué d'évoluer et j'ai en particulier besoin des critiques de tous sur son utilisation pour améliorer sa souplesse.

@++


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#4 Le 12/07/2007, à 13:03

FCDI

Re : Script pour un miroir local : des volontaires pour essayer ?

le but c'est quoi
recuperer (donc telecharger) : tous les depots universe et multi
pour les mettres sur une dd externe ?

et concernant les mises a jours ca se passerait comment ?

Hors ligne

#5 Le 12/07/2007, à 13:08

Michel_57

Re : Script pour un miroir local : des volontaires pour essayer ?

il cherche simplement à faire un miroir sur un réseau local si j'ai bien compris, donc coupé du net. et pour les mises à jour, comme pour tous les miroirs, il faudra les faire à partir de l'original donc avec une connexion internet, juste le temps de la mise à jour, puis il pourra de nouveau se déconnecter et fournir les ordinateurs de son réseau avec son disque externe pour faire les mises à jour partout sans le net.
c'est bien ça ?

Hors ligne

#6 Le 12/07/2007, à 13:28

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

Michel_57 a bien résumé l'affaire.

Ce miroir local a deux fonctions :
1) - Une fonction standard : servir de dépot pour tous les ordinateurs de mon réseau local.
Un serveur s'occupe (entre autres) de la mise à jour hebdomadaire de ce miroir local. Les autres ordinateurs l'interrogent pour faire leurs propres mises à jour.
2) - Une fonction auxiliaire (mais primordiale pour moi) : comme ce dépot est sur un disque usb externe, je peux l'emporter avec moi pour avoir un dépot autonome au cas ou la liaison internet serait déficiente chez le "client".


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#7 Le 12/07/2007, à 13:50

Danux

Re : Script pour un miroir local : des volontaires pour essayer ?

malheureusement, je suis limité a 15 Go et il ne doit plus m'en rester autant a l'heure actuelle.

C'est super intéressant pour installer ubuntu chez un amis qui n'a pas internet. Ainsi il peut apprendre le système synaptic ou aptitude et j'en passe.

Quand on part en vacance et qu'on a pas internet c'est l'ideal pour avoir sous la mains les paquets et les dépendance qu'on a besoin.


"La vertue c'est la domination habituelle de la partie irrationnel de l'âme par l'intelligence" Aristote

Hors ligne

#8 Le 12/07/2007, à 18:08

FCDI

Re : Script pour un miroir local : des volontaires pour essayer ?

j'ai un peu de mal
j'ai bien creer le fichier script
creer le fichier conf
mais apres je fais quoi
je l'ai lancer en console j'ai bien le fichier sources.list qui se creer
j'ai mis les lignes dans mon autre sources.list mais apres nada

il ne se passe rien

 ./depots
feisty
feisty
==============================================================
Sauvegarde du fichier /media/sda6/linux/sources.list existant.
==============================================================
Création ou mise à jour du miroir
ubuntu feisty main i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty restricted i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty multiverse i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty universe i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-security main i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-security restricted i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-security multiverse i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-security universe i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-updates main i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-updates restricted i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-updates multiverse i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-updates universe i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-backports main i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-backports restricted i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-backports multiverse i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-backports universe i386
vers /media/sda6/linux/ubuntu
==============================================================
./depots: line 65: debmirror : commande introuvable
==============================================================
Calcul de la taille des dépots. Veuillez patienter

==============================================================
Taille des depots : 
==============================================================
Debut de la synchronisation du miroir : 12-07-07 18:12:02
Fin de la synchronisation du miroir : 12-07-07 18:12:03
==============================================================
Un nouveau fichier sources.list à été généré
dans le répertoire /media/sda6/linux.

L'ancien fichier sources.list à été sauvegardé
dans le répertoire /media/sda6/linux.

Pour utiliser ce miroir, /media/sda6/linux devra être accessible
==============================================================

Dernière modification par FCDI (Le 12/07/2007, à 18:13)

Hors ligne

#9 Le 12/07/2007, à 18:40

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

Merci pour le retour.

./depots: line 65: debmirror : commande introuvable
sudo apt-get install debmirror

C'est de ma faute : j'aurais dû signaler qu'il faut installer debmirror avant. roll
Je vais éditer mon premier post.

La nouvelle version du script vérifiera que debmirror est bien installé et demandera son installation dans le cas contraire.

@++


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#10 Le 12/07/2007, à 20:00

FCDI

Re : Script pour un miroir local : des volontaires pour essayer ?

==============================================================
Création ou mise à jour du miroir
ubuntu feisty-backports restricted i386
vers /media/sauve win2k/depots/ubuntu
==============================================================
Mirroring to /media/sauve from ftp://anonymous@security.ubuntu.com/ubuntu/
Arches: i386
Dists: feisty-backports
Sections: restricted
Will NOT clean up.
Pdiff mode: none.
mkdir failed: Permission non accordée at /usr/bin/debmirror line 1563.
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-backports multiverse i386
vers /media/sauve win2k/depots/ubuntu
==============================================================
Mirroring to /media/sauve from ftp://anonymous@security.ubuntu.com/ubuntu/
Arches: i386
Dists: feisty-backports
Sections: multiverse
Will NOT clean up.
Pdiff mode: none.
mkdir failed: Permission non accordée at /usr/bin/debmirror line 1563.
==============================================================
Création ou mise à jour du miroir
ubuntu feisty-backports universe i386
vers /media/sauve win2k/depots/ubuntu
==============================================================
Mirroring to /media/sauve from ftp://anonymous@security.ubuntu.com/ubuntu/
Arches: i386
Dists: feisty-backports
Sections: universe
Will NOT clean up.
Pdiff mode: none.
mkdir failed: Permission non accordée at /usr/bin/debmirror line 1563.
==============================================================
Calcul de la taille des dépots. Veuillez patienter

==============================================================
Taille des depots : 
==============================================================
Debut de la synchronisation du miroir : 12-07-07 19:58:44
Fin de la synchronisation du miroir : 12-07-07 19:58:55
==============================================================
Un nouveau fichier sources.list à été généré
dans le répertoire /media/sauve win2k/depots.

L'ancien fichier sources.list à été sauvegardé
dans le répertoire /media/sauve win2k/depots.

Pour utiliser ce miroir, /media/sauve win2k/depots devra être accessible
==============================================================

manque les droits quelque parts la

un sudo ./depots
regle le probleme

Dernière modification par FCDI (Le 12/07/2007, à 20:01)

Hors ligne

#11 Le 12/07/2007, à 20:33

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

En tant qu'utilisateur, as-tu les droits en écriture sur /media/sauve win2k/depots/ubuntu ?
Encore un truc dont le script doit s'assurer... hmm

Dernière modification par footware (Le 12/07/2007, à 20:34)


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#12 Le 13/07/2007, à 17:54

FCDI

Re : Script pour un miroir local : des volontaires pour essayer ?

bon ca marche, apparement le script ne gerait pas l'espace dans le nom de media

donc j'ai mis _

j'en suis à 3% avec du 10M de debit ca va etre long

on verra a la fin

comment ca se passe en cas de mise a jour
on relance le script et ca se debrouille ?

Hors ligne

#13 Le 13/07/2007, à 18:56

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

FCDI a écrit :

bon ca marche, apparement le script ne gerait pas l'espace dans le nom de media
donc j'ai mis _

Bon à savoir. Une nouvelle vérification à assurer : je met çà dans le "todo".

FCDI a écrit :

comment ca se passe en cas de mise a jour
on relance le script et ca se debrouille ?

Exactement.

@++


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#14 Le 13/07/2007, à 19:47

deathdwarf

Re : Script pour un miroir local : des volontaires pour essayer ?

Très très bonne idée que je m'empresserais de tester dés le retour de mon disque externe. Bravo !

Hors ligne

#15 Le 13/07/2007, à 21:27

FCDI

Re : Script pour un miroir local : des volontaires pour essayer ?

la limite des 15 Go est du a quoi
a la volonté du devellopeur big_smile

ou par rapport aux depots ?

Hors ligne

#16 Le 13/07/2007, à 21:48

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

Çà n'est pas une limite mais une évaluation de ma part par rapport au volume de mon propre dépot local.
Quelle est la raison de cette question ?

Dernière modification par footware (Le 13/07/2007, à 21:50)


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#17 Le 13/07/2007, à 23:09

FCDI

Re : Script pour un miroir local : des volontaires pour essayer ?

juste pour savoir qu'elle quantité je devais garder sur mon DD

Hors ligne

#18 Le 13/07/2007, à 23:42

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

Si c'est juste pour garder ce qui t'est strictement nécessaire, je te conseille d'éditer le script pour remplacer "--nocleanup" par "--cleanup".
De cette façon, le miroir ne contiendra plus que la dernière version disponible de chaque programme.
Çà devrait l'alléger considérablement.

Pour ma part, comme je suis parfois appelé à installer chez d'autres personnes, je suis obligé de conserver un miroir assez conséquent.

Dernière modification par footware (Le 13/07/2007, à 23:44)


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#19 Le 13/07/2007, à 23:47

FCDI

Re : Script pour un miroir local : des volontaires pour essayer ?

je ne comprend pas ta derniere remarque
meme si tu installe chez d'autres gens
pourquoi ne pas garder que les dernieres version
les versions precedentes sont obseletes

et merci pour le modification je regarderais ca

a quand la verification du debmirror et du sudo pour le lancement du script ?

Hors ligne

#20 Le 14/07/2007, à 00:32

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

En fait, si j'ai tout bien compris, quand je fais le miroir en mode "--cleanup", je ne garde que la version la plus récente des logiciels.
À priori, étant en droit de supposer que les versions des backports sont les plus récentes, si je fais un miroir des backports, les versions logicielles antérieures qui sont dépassées sont effacées.

À supposer que, pour une raison particulière, je veuille faire une installation uniquement base et security (donc sans les updates et les backports), je suis coincé : certaines versions correspondantes n'existent plus sur mon dépot local.

Je ne suis pas vraiment sûr de bien m'expliquer. hmm


Pour ce qui concerne le script, je viens de finir la partie "vérification des dépendances".
Pour le reste, il va falloir patienter : je suis très loin d'être un pro du script. big_smile
Je pense donner la prochaine version demain soir (mais pas encore complète).


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#21 Le 14/07/2007, à 10:47

Vysserk3

Re : Script pour un miroir local : des volontaires pour essayer ?

Il me semble que AptOnCD peut faire ça, non ?

Hors ligne

#22 Le 14/07/2007, à 11:28

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

D'après ce que j'ai compris, AptOnCD ne convient pas à mes besoins : il ne fait que le miroir des paquets déjà installés sur la machine et pour le reste, il faut sélectionner et/ou télécharger manuellement les paquets désirés.
Çà manque de souplesse :
- j'ai besoin du miroir complet pour m'adapter aux besoins spécifiques de certains "clients".
- je préfère me balader avec un disque USB externe plutôt qu'avec une floppée de CD/DVD.
- reconstituer l'arborescence complète du dépot facilite les mises à jour de mon réseau local.

À la limite, mon script et AptOnCD sont plus complémentaires que concurrents.

Cela dit, je conviens parfaitement qu'une partie du code doit-être adaptable. Quel dommage que je sois une véritable tare en "C" ! sad

Dernière modification par footware (Le 14/07/2007, à 11:37)


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#23 Le 14/07/2007, à 12:51

Vysserk3

Re : Script pour un miroir local : des volontaires pour essayer ?

Ok ok wink
Peut être y-a-t-il moyen de faire une image ISO avec AptOnCD, de la mettre sur un disque dur externe, de la monter, et de l'utiliser comme source de dépôts... ?
Ou alors utiliser  http://doc.ubuntu-fr.org/tutoriel/creer_un_miroir_de_depot_local ?

Bon t'as surement du regarder ces solutions, mais on sait jamais wink

@++

Hors ligne

#24 Le 14/07/2007, à 13:39

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

Effectivement, le script sur http://doc.ubuntu-fr.org/tutoriel/creer … epot_local m'a servi de point de départ.
Je n'ai fais qu'y rajouter quelques fonctionnalités et épurer le code.

Pour moi c'est, malheureusement, bien plus facile que de récupérer du "C", "perl", "python" et autres langages dans lesquels j'ai bien peur de me noyer avant même d'y avoir trempé le pied. wink


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne

#25 Le 19/07/2007, à 19:54

footware

Re : Script pour un miroir local : des volontaires pour essayer ?

S@lut !

J'ai édité le premier post pour mettre en ligne nouvelle version 2.0 de ce script.

J'y ai rajouté quelques fonctionnalités :
- des options au lancement du script ( "-?" pour l'aide  wink ).
- l'abandon pur et simple du fichier de configuration annexe. La configuration se fera désormais en éditant directement les variables en début du script.
- une configuration par défaut si les variables ne sont pas renseignées. Je planche sur une option pour décrire la configuraton actuelle (option "-c").
- le nom du script n'est plus imposé.
- la vérification de l'installation des dépendances.
- la vérification des autorisations de l'utilisateur sur le répertoire.
- l'interdiction des espaces dans le chemin car je ne sais pas comment "apt-get" va se débrouiller avec des espaces dans les noms des dépots.
- la création du miroir dans le répertoire où se situe le script quel que soit le répertoire d'où on l'appelle. hmm
- et surtout une option ( "-s" ) pour seulement générer le fichier "sources.lists" : quand on connecte le disque externe cette fonction crée les lignes prenant en compte le point de montage actuel du miroir (pratique quand on fait une installation sur une nouvelle machine).
- accessoirement, j'ai optimisé un peu le code et les messages.

Je butte actuellement sur l'initialisation automatique de l'architecture.
Si j'ai bien compris comment gérer le tronc commun des i386 à partir de la variable $HOSTTYPE, je n'ai pas de machine disponible pour savoir ce que répond la commande "echo $HOSTTYPE sur un amd64, un powerpc et un sparc.
Si quelqu'un pouvait me renseigner, ce serait sympa.

J'attends vos remarques.

@++


Mieux vaut porter sa croix que trainer son boulet : au bout du chemin la croix a son utilité.

Hors ligne