#1 Le 14/03/2009, à 15:14
- thebachman
Problème de mise à jour après création de dépôt
Bonjour,
Je suis en train de créer un dépôt, avec ce tuto--->http://wiki.ombrenoire.net/Debian_-_D%C … enDepot.sh.
La création se passe bien "bien" on va dire, mais au moment d'ajouter le nom du dépôt dans le source.list, puis de mettre tout cela à jour, j'ai cette erreur dans synaptic:
E: Problem parsing dependency Depends
E: Erreur apparue lors du traitement de Mercury-Messenger (NewVersion1)
E: Problem with MergeList /var/lib/apt/lists/monsite.info_mercury_ubuntu_Packages
E: Les listes de paquets ou le fichier « status » ne peuvent être analysés ou lus.
Je ne comprends pas d'où vient le soucis.
Quelqu'un pourrait-il me donner un coup de main s'il vous plait?
Hors ligne
#2 Le 14/03/2009, à 15:20
- wido
Re : Problème de mise à jour après création de dépôt
quelle est ton script?
j'avais fait un script qui fonctionnait:
#!/bin/bash
cd ~/Bureau/ubuntu_local/
rename 's/%3a/:/' *.deb
dpkg-scanpackages . /dev/null |gzip -9c > Packages.gz
#deb file:/media/disk/ubuntu_local ./
Dernière modification par wido (Le 14/03/2009, à 15:21)
Hors ligne
#3 Le 14/03/2009, à 15:21
- thebachman
Re : Problème de mise à jour après création de dépôt
celui avec lequel j'ai généré mon dépot?
Hors ligne
#4 Le 14/03/2009, à 15:23
- wido
Re : Problème de mise à jour après création de dépôt
oui colle le sur le forum.
Hors ligne
#5 Le 14/03/2009, à 15:25
- thebachman
Re : Problème de mise à jour après création de dépôt
Ok il est un poil long.
#!/bin/bash
# Generateur Depot
# Version 0.5d - 24 Juin 2008
# Script sous Licence GPL
# Copyleft 2008 - OmBreNoiRe - http://wiki.ombrenoire.net
################### VALEURS A MODIFIER ######################
# Ce que vous voulez :)
origine="Ubuntu - www.mercury.im"
# L'adresse http ou se trouve le depot
# Exemple : "debian.ombrenoire.net"
# ou encore "debian.ombrenoire.net/mondepot/"
label="thebachman.info/mercury"
# Les distributions prisent en charge (separees par 1 espace)
# NB : Il faut que pour chaque distribution, un repertoire
# du meme nom existe a la racine du site.
# Exemple : "sarge etch lenny"
suite="ubuntu"
# Les architectures prises en charge
architectures="all"
# Components (normalement vous n'avez pas a modifier)
components="main"
#############################################################
##############CODE (NE PAS MODIFIER SANS RAISON)#############
#############################################################
# Si le nombre de parametre n'est pas 1, on affiche l'usage
if [ $# -ne 1 ]
then
nom=`echo $0 | sed 's/^..//g'`
echo Usage : $nom \<racine de votre site\> 1>&2
echo Exemple : $nom /var/www/depot
exit 1
fi
# On demande la passphrase
echo "Quel est votre passphrase pour la cle GnuPG ?"
stty -echo
read motdepasse
stty echo
touch testgpg.tmp
# On test la passphrase avant de lancer le script
retgpg=`echo $motdepasse | gpg --sign -ba -o testgpg.tmp.gpg --quiet --no-tty --passphrase-fd 0 testgpg.tmp 2>/dev/null ; echo $?`
if [ $retgpg -ne 0 ]
then
echo ERREUR : la passphrase est incorrecte.
rm -r testgpg.tmp
exit 2
fi
rm -f testgpg.tmp testgpg.tmp.gpg
# on va dans le repertoire racine du site (par exemple /var/www/depot)
cd $1
racine=$PWD
# on test si tous les elements de $suite sont bien des repertoires
for rep in $suite
do
if [ ! -d $racine/$rep ]
then
echo "ERREUR : la distribution \"$rep\" n'existe pas, veuillez corriger la variable \"suite\""
exit 3
fi
done
# on cree le fichier apt-ftpconfig.tmp.distrib (1 par distrib)
for distrib in $suite
do
echo "
APT::FTPArchive::Release {
Origin \"$origine\";
Label \"$label\";
Suite \"$distrib\";
Architectures \"$architectures\";
Components \"$components\";
}
" > apt-ftpconfig.tmp.$distrib
done
# on efface tous les fichiers (recursif) qui vont etre generes
for rep in $suite
do
find $rep -name "Release*" -type f -print0 | xargs -0 /bin/rm -f
find $rep -name "Sources*" -type f -print0 | xargs -0 /bin/rm -f
find $rep -name "Packages*" -type f -print0 | xargs -0 /bin/rm -f
done
rm -f lst_packages_indiv.tmp 2>/dev/null
rm -f lst_sources_indiv.tmp 2>/dev/null
rm -f add-sources.list.* 2>/dev/null
echo Generation du depot...
# on lance les commandes dans les repertoires de deuxieme niveau (par exemple /var/www/depot/etch/6wall)
lasuite=`echo $suite | sed 's/ /\/|\\.\//g' | sed 's/^/(\\.\//g' | sed 's/$/\/)/g'`
for rep in `find . -depth -maxdepth 2 -mindepth 2 -type d | grep -E $lasuite | grep -v '^\./\..*$' | sed 's/^..//g'`
do
distrib=`echo $rep | sed 's/\/.*//g'`
cd $racine/$rep
apt-ftparchive packages . 2>/dev/null | gzip -f9 > Packages.gz
zcat Packages.gz | bzip2 > Packages.bz2
zcat Packages.gz > Packages
apt-ftparchive sources . 2>/dev/null | gzip -f9 > Sources.gz
zcat Sources.gz | bzip2 > Sources.bz2
zcat Sources.gz > Sources
apt-ftparchive -c $racine/apt-ftpconfig.tmp.$distrib release . > Release.tmp ; mv Release.tmp Release
echo $motdepasse | gpg --sign -ba -o Release.gpg --quiet --no-tty --passphrase-fd 0 Release 2>/dev/null
# on verifie si Packages et Sources n'est pas vide et on affiche la ligne sur /etc/apt/sources.list correspondant
nbsources=`find . -maxdepth 1 -name "Sources" -size +0c | wc -l`
nbpackages=`find . -maxdepth 1 -name "Packages" -size +0c | wc -l`
if [ $nbpackages -ne 0 ]
then
echo deb http://$label/$rep ./ >> $racine/lst_packages_indiv.tmp
fi
if [ $nbsources -ne 0 ]
then
echo \#deb-src http://$label/$rep ./ >> $racine/lst_sources_indiv.tmp
fi
done
# # on lance les commandes dans les repertoires de deuxieme niveau (par exemple /var/www/depot/etch/6wall)
cd $racine
for rep in $suite
do
apt-ftparchive packages $rep/ 2>/dev/null | gzip -f9 > $rep/Packages.gz
zcat $rep/Packages.gz | bzip2 > $rep/Packages.bz2
zcat $rep/Packages.gz > $rep/Packages
apt-ftparchive sources $rep/ 2>/dev/null | gzip -f9 > $rep/Sources.gz
zcat $rep/Sources.gz | bzip2 > $rep/Sources.bz2
zcat $rep/Sources.gz > $rep/Sources
apt-ftparchive -c $racine/apt-ftpconfig.tmp.$rep release $rep/ > $rep/Release.tmp ; mv $rep/Release.tmp $rep/Release
echo $motdepasse | gpg --sign -ba -o $rep/Release.gpg --quiet --no-tty --passphrase-fd 0 $rep/Release 2>/dev/null
nbsources=`find $rep -maxdepth 1 -name "Sources" -size +0c | wc -l`
nbpackages=`find $rep -maxdepth 1 -name "Packages" -size +0c | wc -l`
# Si le repertoire courant n'a pas de paquets (sources et binaires), on efface les fichiers inutiles
if [ $nbpackages -eq 0 ] && [ $nbsources -eq 0 ]
then
find $rep -name "Release*" -type f -print0 | xargs -0 /bin/rm -f
find $rep -name "Sources*" -type f -print0 | xargs -0 /bin/rm -f
find $rep -name "Packages*" -type f -print0 | xargs -0 /bin/rm -f
fi
# Si pour le $rep de cette distribution il a bien des paquets
if [ $nbpackages -ne 0 ] || [ $nbsources -ne 0 ]
then
echo Generation de $racine/add-sources.list.$rep...
echo \# [PAQUET INDIVIDUEL] > add-sources.list.$rep
fi
if [ $nbpackages -ne 0 ]
then
cat $racine/lst_packages_indiv.tmp | grep /$rep/ >> add-sources.list.$rep
fi
if [ $nbsources -ne 0 ]
then
echo >> add-sources.list.$rep
cat $racine/lst_sources_indiv.tmp | grep /$rep/ >> add-sources.list.$rep
fi
if [ $nbpackages -ne 0 ] || [ $nbsources -ne 0 ]
then
echo >> add-sources.list.$rep
echo >> add-sources.list.$rep
echo \# [TOUS LES PAQUETS DISPONIBLES] >> add-sources.list.$rep
fi
if [ $nbpackages -ne 0 ]
then
echo deb http://$label $rep/ >> add-sources.list.$rep
fi
if [ $nbsources -ne 0 ]
then
echo \#deb-src http://$label $rep/ >> add-sources.list.$rep
fi
rm -f $racine/apt-ftpconfig.tmp.$rep
done
rm -f $racine/lst_packages_indiv.tmp
rm -f $racine/lst_sources_indiv.tmp
exit 0
Hors ligne
#6 Le 14/03/2009, à 16:17
- thebachman
Re : Problème de mise à jour après création de dépôt
Même soucis avec ton script
Hors ligne
#7 Le 14/03/2009, à 16:31
- wido
Re : Problème de mise à jour après création de dépôt
tu n'as pas de fichier Packages.gz ?
regarde si ce n'est pas un paquet , mon script était pour un dépot local, j'avais du rajouté des dossiers pour que ce soit détecté par ubuntu.
Hors ligne
#8 Le 14/03/2009, à 16:50
- thebachman
Re : Problème de mise à jour après création de dépôt
j'ai bien un Packages.gz mais ça ne fonctionne pas
Je vais continuer à chercher...
Hors ligne
#9 Le 14/03/2009, à 17:09
- wido
Re : Problème de mise à jour après création de dépôt
il faut peut-être le déplacer comme dans un vrai dépot.
comme dans : http://fr.archive.ubuntu.com/ubuntu/dis … nary-i386/
par exemple:
http://tonsite.com/ubuntu/dists/intrepi … ackages.gz
et pour tes fichiers:
http://tonsite.com/ubuntu/pool/main/truc.deb
et pour un dépot local :
mkdir ~/Bureau/tondepot/ubuntu/dists/intrepid/main/binary-i386/
mkdir ~/Bureau/tondepot/ubuntu/pool/main/
cd ~/Bureau/tondepot/ubuntu/pool/main/
rename 's/%3a/:/' *.deb
dpkg-scanpackages . /dev/null |gzip -9c > Packages.gz
cp ./Packages.gz ~/Bureau/tondepot/ubuntu/dists/intrepid/main/binary-i386/
exit 0
j'ai fait un script sans avoir ubuntu , mais tu peux toujours tester.
Hors ligne
#10 Le 14/03/2009, à 18:44
- thebachman
Re : Problème de mise à jour après création de dépôt
Bon alors ça avance!
Merci pour ton aide.
Je prends des idées ici ou là. Mais il me reste un soucis.
Dans synaptic au moment de mettre à jour mon dépôt, j'ai cette erreur:
Impossible de récupérer http://thebachman.info/ubuntu/Packages.gz 404 Not Found
alors que j'ai bien ce fichier dans mon répertoire sur le serveur, mais je pense que j'ai un problème de droit, parce que si je vais à cette adresse j'ai:
Error 403 - Forbidden
L'accès au fichier requiert une autorisation.
Dernière modification par thebachman (Le 14/03/2009, à 18:56)
Hors ligne
#11 Le 14/03/2009, à 22:27
- wido
Re : Problème de mise à jour après création de dépôt
chmod 755 http://thebachman.info/ubuntu/Packages.gz
chmod 755: tout le monde peut lire et exécuter,seul le proprio peut le modifier
Hors ligne
#12 Le 14/03/2009, à 22:50
- thebachman
Re : Problème de mise à jour après création de dépôt
Bon ben retour à la case départ.....:(
Même erreur que dans le post 1
Hors ligne