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 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.c

Description : 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é sad

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