#1 Le 26/11/2007, à 12:01
- Aldian
[resolu]faire un update à partir de fichiers présents sur le dique
Bonjour à tous
Je cherche actuellement à mettre à jour mes listes de paquets manuellement. Je ne peux pas passer par internet car je n'y suis pas connecté. Alors ma question est en fin de sujet, vous pouvez y sauter tout de suite, mais je préfère expliquer mon cheminement.
J'ai procédé de la manière suivante :
éxécution de la commande
sudo apt-get -V update --print-uris >> toto.txt
qui a créé un fichier toto.txt contenant toutes les url de téléchargement de listes. le voici :
'http://security.ubuntu.com/ubuntu/dists/gutsy-security/restricted/binary-i386/Packages.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_restricted_binary-i386_Packages 0 :
'http://security.ubuntu.com/ubuntu/dists/gutsy-security/main/binary-i386/Packages.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_main_binary-i386_Packages 0 :
'http://security.ubuntu.com/ubuntu/dists/gutsy-security/universe/binary-i386/Packages.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_universe_binary-i386_Packages 0 :
'http://security.ubuntu.com/ubuntu/dists/gutsy-security/multiverse/binary-i386/Packages.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_multiverse_binary-i386_Packages 0 :
'http://security.ubuntu.com/ubuntu/dists/gutsy-security/Release.gpg' security.ubuntu.com_ubuntu_dists_gutsy-security_Release.gpg 0
'http://security.ubuntu.com/ubuntu/dists/gutsy-security/restricted/i18n/Translation-fr.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_restricted_i18n_Translation-fr 0 :
'http://security.ubuntu.com/ubuntu/dists/gutsy-security/main/i18n/Translation-fr.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_main_i18n_Translation-fr 0 :
'http://security.ubuntu.com/ubuntu/dists/gutsy-security/universe/i18n/Translation-fr.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_universe_i18n_Translation-fr 0 :
'http://security.ubuntu.com/ubuntu/dists/gutsy-security/multiverse/i18n/Translation-fr.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_multiverse_i18n_Translation-fr 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/restricted/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_restricted_binary-i386_Packages 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/main/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_main_binary-i386_Packages 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/universe/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_universe_binary-i386_Packages 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/multiverse/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_multiverse_binary-i386_Packages 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/Release.gpg' archive.ubuntu.com_ubuntu_dists_gutsy-updates_Release.gpg 0
'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/restricted/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_restricted_i18n_Translation-fr 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/main/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_main_i18n_Translation-fr 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/universe/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_universe_i18n_Translation-fr 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/multiverse/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_multiverse_i18n_Translation-fr 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy/main/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_main_binary-i386_Packages 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy/universe/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_universe_binary-i386_Packages 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy/restricted/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_restricted_binary-i386_Packages 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy/multiverse/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_multiverse_binary-i386_Packages 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy/Release.gpg' archive.ubuntu.com_ubuntu_dists_gutsy_Release.gpg 0
'http://archive.ubuntu.com/ubuntu/dists/gutsy/main/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_main_i18n_Translation-fr 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy/universe/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_universe_i18n_Translation-fr 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy/restricted/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_restricted_i18n_Translation-fr 0 :
'http://archive.ubuntu.com/ubuntu/dists/gutsy/multiverse/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_multiverse_i18n_Translation-fr 0 :
puis j'ai écrit un petit programme en C (je maitrise nettement mieux le C que le shell) que voici :
/*
Date : novembre 2007
Nom : put_wget.cDescription : Le but est de mette àƒ jour la liste des paquets disponibles pour une distribution ne disposant pas de lien direct avec internet.
L'utilisateur doit tout d'abord exàƒÂ©cuter la commande
sudo apt-get -V update --print-uris >> toto.txt
Ce fichier contient donc dàƒÂ©sormais un ensemble d'urls vers les fichiers àƒ tàƒÂ©làƒÂ©charger. Le but de ce simple programme est simple :
convertir le fichier toto.txt en un fichier de tàƒÂ©làƒÂ©chargement dpkg_list.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main(void)
{
//char *test=NULL;
FILE *fpr=fopen("toto.txt","rt");
FILE *fpw=fopen("dpkg_list","wt");
char ch[1024];
while (fgets(ch,1023,fpr)!=NULL)
{
fprintf(fpw,"wget -c ");
fprintf(fpw,ch);
}
return 0;
}
J'ai exécuté la commande gcc put_wget.c && ./a.out
et obtenu le magnifique script de téléchargement suivant :
wget -c 'http://security.ubuntu.com/ubuntu/dists/gutsy-security/restricted/binary-i386/Packages.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_restricted_binary-i386_Packages 0 :
wget -c 'http://security.ubuntu.com/ubuntu/dists/gutsy-security/main/binary-i386/Packages.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_main_binary-i386_Packages 0 :
wget -c 'http://security.ubuntu.com/ubuntu/dists/gutsy-security/universe/binary-i386/Packages.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_universe_binary-i386_Packages 0 :
wget -c 'http://security.ubuntu.com/ubuntu/dists/gutsy-security/multiverse/binary-i386/Packages.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_multiverse_binary-i386_Packages 0 :
wget -c 'http://security.ubuntu.com/ubuntu/dists/gutsy-security/Release.gpg' security.ubuntu.com_ubuntu_dists_gutsy-security_Release.gpg 0
wget -c 'http://security.ubuntu.com/ubuntu/dists/gutsy-security/restricted/i18n/Translation-fr.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_restricted_i18n_Translation-fr 0 :
wget -c 'http://security.ubuntu.com/ubuntu/dists/gutsy-security/main/i18n/Translation-fr.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_main_i18n_Translation-fr 0 :
wget -c 'http://security.ubuntu.com/ubuntu/dists/gutsy-security/universe/i18n/Translation-fr.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_universe_i18n_Translation-fr 0 :
wget -c 'http://security.ubuntu.com/ubuntu/dists/gutsy-security/multiverse/i18n/Translation-fr.bz2' security.ubuntu.com_ubuntu_dists_gutsy-security_multiverse_i18n_Translation-fr 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/restricted/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_restricted_binary-i386_Packages 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/main/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_main_binary-i386_Packages 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/universe/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_universe_binary-i386_Packages 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/multiverse/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_multiverse_binary-i386_Packages 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/Release.gpg' archive.ubuntu.com_ubuntu_dists_gutsy-updates_Release.gpg 0
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/restricted/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_restricted_i18n_Translation-fr 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/main/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_main_i18n_Translation-fr 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/universe/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_universe_i18n_Translation-fr 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy-updates/multiverse/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy-updates_multiverse_i18n_Translation-fr 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy/main/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_main_binary-i386_Packages 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy/universe/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_universe_binary-i386_Packages 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy/restricted/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_restricted_binary-i386_Packages 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy/multiverse/binary-i386/Packages.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_multiverse_binary-i386_Packages 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy/Release.gpg' archive.ubuntu.com_ubuntu_dists_gutsy_Release.gpg 0
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy/main/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_main_i18n_Translation-fr 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy/universe/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_universe_i18n_Translation-fr 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy/restricted/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_restricted_i18n_Translation-fr 0 :
wget -c 'http://archive.ubuntu.com/ubuntu/dists/gutsy/multiverse/i18n/Translation-fr.bz2' archive.ubuntu.com_ubuntu_dists_gutsy_multiverse_i18n_Translation-fr 0 :
.. qui ne va probablement pas marcher vu qu'il y a quelques petits soucis de mise en forme comme les apostrophes à enlever, mais c'est pour le principe.
Et voici la question qui tue : Une fois que ce script sera exécuté sur un ordi linux public, j'aurais les listes sur ma clé usb et je pourrais les ramener sur mon ordi. en fait j'ai déjà essayé. Mais le problème est le suivant : l'ordi ne reconnait pas les listes automatiquement et les considère comme des archives. Comment faire pour lui dire de les installer? Il doit y avoir une commande, mais j'ai eu beau consulter les aides de synaptic et dpkg et je n'ai pas trouvé
Dernière modification par Aldian (Le 12/12/2007, à 12:51)
Hors ligne
#2 Le 26/11/2007, à 15:57
- Woshee
Re : [resolu]faire un update à partir de fichiers présents sur le dique
Je ne réponds pas a ta question, mais je me demande: pourquoi mettre a jour les listes sur un ordi sans internet, juste savoir s'il y a des MAJ dispo sans pouvoir les faire?
Devenez parrain Linux ou trouvez quelqu'un pour vous aider près de chez vous:
http://parrains.linux.free.fr/
Hors ligne
#3 Le 27/11/2007, à 22:11
- Aldian
Re : [resolu]faire un update à partir de fichiers présents sur le dique
Ben c'est tout simple : tu vas dans synaptic, tu sélectionne les paquets que tu veux télécharger, et tu fais "générer un script de téléchargement". Tu emporte le script vers un ordi linux public, tu l'éxécute, et tu ramène les paquets, après quoi tu retournes dans synaptic et tu fais "ajouter les paquets téléchargés" et le tour est joué. Le seul problème est qu'il faut mettre les listes à jour soi-même.
Hors ligne
#4 Le 29/11/2007, à 02:46
- bertrand0
Re : [resolu]faire un update à partir de fichiers présents sur le dique
Si ça peut t'aider, voilà 2 scripts que j'avais fait il y a quelques temps pour rapatrier les listes, étant confronté au même problème:
gen-myupdate-download:
#!/bin/bash
MYSH=myupdate-download
MYTB2=myupdate.tar.bz2
cat > $MYSH << EOF
#!/bin/bash
TMPDIR="\$(mktemp -dt)" || exit 1
trap "rm -rf \\"\$TMPDIR\\"" EXIT
OLDDIR="\$PWD"
cd "\$TMPDIR"
EOF
apt-get update -qq --print-uris \
| awk '/\.bz2/{printf "(wget %s -O- | bunzip2 > %s) \
|| (wget %s -O- | gunzip > %s) \
|| wget %s -O%s\n",$1,$2,gensub("\.bz2","\.gz",1,$1),$2,gensub("\.bz2","",1,$1),$2}; \
!/\.bz2/{print "wget",$1,"-O",$2}' >> $MYSH
echo "tar --mode 644 --owner root --group root -cjf \"\$OLDDIR/$MYTB2\" *" >> $MYSH
chmod 755 $MYSH
et myupdate-copy:
#!/bin/bash
MYTB2=my-update.tar.bz2
[ -f "$MYTB2" ] || exit 1;
OLDDIR="$PWD"
cd /var/lib/apt/lists
tar -xjf "$OLDDIR/$MYTB2"
touch /var/lib/apt/periodic/update-stamp
Je lance "sudo bash gen-myupdate-download" pour créer le script "myupdate-download" à exécuter sur la machine connectée à internet.
Je rapatrie ensuite le fichier myupdate.tar.bz2 et j'exécute dans le même dossier "sudo bash myupdate-copy"
Dernière modification par bertrand0 (Le 29/11/2007, à 03:23)
Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
Buffon, Discours sur le style
Hors ligne
#5 Le 30/11/2007, à 19:28
- Aldian
Re : [resolu]faire un update à partir de fichiers présents sur le dique
D'accord si j'ai bien compris le premier est l'analogue de mon bidouillage C foireux tandis que le deuxième copie les listes dans le bon répertoire? Je vais regarder ça, merci beaucoup.
Hors ligne
#6 Le 30/11/2007, à 23:39
- Aldian
Re : [resolu]faire un update à partir de fichiers présents sur le dique
malheureusement il me manque peut être quelque chose car :
$ sudo bash gen-myupdate-download
[sudo] password for aldian:
awk: line 5: function gensub never defined
awk: line 5: function gensub never defined
Hors ligne
#7 Le 01/12/2007, à 12:51
- bertrand0
Re : [resolu]faire un update à partir de fichiers présents sur le dique
Il faut installer "gawk" car le script utilise la fonction gensub qui n'est pas définie dans mawk, ou bien modifier le script pour pouvoir utiliser sub à la place.
Par exemple, la ligne
apt-get update -qq --print-uris \
| awk '/\.bz2/{printf "(wget %s -O- | bunzip2 > %s) \
|| (wget %s -O- | gunzip > %s) \
|| wget %s -O%s\n",$1,$2,gensub("\.bz2","\.gz",1,$1),$2,gensub("\.bz2","",1,$1),$2}; \
!/\.bz2/{print "wget",$1,"-O",$2}' >> $MYSH
devient
apt-get update -qq --print-uris \
| awk '!/\.bz2/{print "wget",$1,"-O",$2};\
/\.bz2/{sub("\.bz2'\''","",$1);\
printf "(wget %s.bz2'\'' -O- | bunzip2 > %s) \
|| (wget %s.gz'\'' -O- | gunzip > %s) \
|| wget %s'\'' -O%s\n",$1,$2,$1,$2,$1,$2}' >> $MYSH
Dernière modification par bertrand0 (Le 01/12/2007, à 13:44)
Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
Buffon, Discours sur le style
Hors ligne
#8 Le 01/12/2007, à 14:00
- bertrand0
Re : [resolu]faire un update à partir de fichiers présents sur le dique
Pour simplifier, voilà le script gen-myupdate-download tel qu'il doit être pour être utilisé avec mawk:
#!/bin/bash
MYSH=myupdate-download
MYTB2=myupdate.tar.bz2
cat > $MYSH << EOF
#!/bin/bash
TMPDIR="\$(mktemp -dt)" || exit 1
trap 'rm -rf "\$TMPDIR"' EXIT
OLDDIR="\$PWD"
cd "\$TMPDIR"
EOF
apt-get update -qq --print-uris \
| awk '!/\.bz2/{print "wget",$1,"-O",$2};\
/\.bz2/{sub("\.bz2'\''","",$1);\
printf "(wget %s.bz2'\'' -O- | bunzip2 > %s) \
|| (wget %s.gz'\'' -O- | gunzip > %s) \
|| wget %s'\'' -O%s\n",$1,$2,$1,$2,$1,$2}' >> $MYSH
echo "tar --mode 644 --owner root --group root -cjf \"\$OLDDIR/$MYTB2\" *" >> $MYSH
chmod 755 $MYSH
Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
Buffon, Discours sur le style
Hors ligne
#9 Le 01/12/2007, à 18:19
- Aldian
Re : [resolu]faire un update à partir de fichiers présents sur le dique
ok je testerai, merci.
Hors ligne