Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

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 23/11/2020, à 05:28

nany

Régénérer sources.list en une ligne de commandes (+ script recommandé)

Bonjour,

[edit]Si vous avez la flemme de lire ce post, allez directement au deuxième.[/edit]
[edit2]Des changements vont être effectués dans ce message, prière de se référer pour le moment aux messages #10 à #13.[/edit2]
[edit3]
Bon, flemme de faire des changements sur ce message car je me suis rendu compte que la ligne n’est valable que pour une LTS.
Du coup j’ai fait un script qui tient la route et qu’il vaut mieux utiliser.
[/edit3]
[edit4]
Modifications finalement effectuées. Et ça doit marcher pour une non LTS.
[/edit4]


Il arrive fréquemment que le sources.list soit dans un état incohérent qu’il vaut mieux le recréer de toute pièce plutôt que de réparer ligne après ligne.
Je ne ferai pas de commentaire sur le fait de comment le sources.list est devenu incohérent si ce n’est sans doute que son propriétaire a probablement suivi un ou des tutos sur le net devenus obsolètes.


J’ai donc cherché une source officielle qui, j’espère, ne changera pas de place au fil du temps : https://github.com/canonical/cloud-init … buntu.tmpl.



En préambule, je conseille de faire une sauvegarde du sources.list existant. En effet, celui-ci peut contenir des dépôts tiers (dus à des pratiques ancestrales qui ajoutent le dépôt dans ce fichier plutôt que de créer un fichier spécifique dans le répertoire prévu à cet effet depuis maintenant quelques années, mais là n’est pas le propos et je ne vais pas partir en guerre contre les tutos mal fichus sur le net tel Don Quichotte se battant contre les moulins à vent).
Bref, sauvegarder votre sources.list car il peut contenir des éléments qui seront effacer par la ligne de commande que je présente ci-dessous.



Alors voilà, je vais essayer de détailler du mieux que je peux :

  1. on télécharge le fichier modèle ;

    wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl

    on obtient donc ceci ;

    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$ wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl
    ## template:jinja
    ## Note, this file is written by cloud-init on first boot of an instance
    ## modifications made here will not survive a re-bundle.
    ## if you wish to make changes you can:
    ## a.) add 'apt_preserve_sources_list: true' to /etc/cloud/cloud.cfg
    ##     or do the same in user-data
    ## b.) add sources in /etc/apt/sources.list.d
    ## c.) make changes to template file /etc/cloud/templates/sources.list.tmpl
    
    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    deb {{mirror}} {{codename}} main restricted
    # deb-src {{mirror}} {{codename}} main restricted
    
    ## Major bug fix updates produced after the final release of the
    ## distribution.
    deb {{mirror}} {{codename}}-updates main restricted
    # deb-src {{mirror}} {{codename}}-updates main restricted
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team. Also, please note that software in universe WILL NOT receive any
    ## review or updates from the Ubuntu security team.
    deb {{mirror}} {{codename}} universe
    # deb-src {{mirror}} {{codename}} universe
    deb {{mirror}} {{codename}}-updates universe
    # deb-src {{mirror}} {{codename}}-updates universe
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team, and may not be under a free licence. Please satisfy yourself as to
    ## your rights to use the software. Also, please note that software in
    ## multiverse WILL NOT receive any review or updates from the Ubuntu
    ## security team.
    deb {{mirror}} {{codename}} multiverse
    # deb-src {{mirror}} {{codename}} multiverse
    deb {{mirror}} {{codename}}-updates multiverse
    # deb-src {{mirror}} {{codename}}-updates multiverse
    
    ## N.B. software from this repository may not have been tested as
    ## extensively as that contained in the main release, although it includes
    ## newer versions of some applications which may provide useful features.
    ## Also, please note that software in backports WILL NOT receive any review
    ## or updates from the Ubuntu security team.
    deb {{mirror}} {{codename}}-backports main restricted universe multiverse
    # deb-src {{mirror}} {{codename}}-backports main restricted universe multiverse
    
    ## Uncomment the following two lines to add software from Canonical's
    ## 'partner' repository.
    ## This software is not part of Ubuntu, but is offered by Canonical and the
    ## respective vendors as a service to Ubuntu users.
    # deb http://archive.canonical.com/ubuntu {{codename}} partner
    # deb-src http://archive.canonical.com/ubuntu {{codename}} partner
    
    deb {{security}} {{codename}}-security main restricted
    # deb-src {{security}} {{codename}}-security main restricted
    deb {{security}} {{codename}}-security universe
    # deb-src {{security}} {{codename}}-security universe
    deb {{security}} {{codename}}-security multiverse
    # deb-src {{security}} {{codename}}-security multiverse
    
    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$ 
  2. on supprime les huit premières lignes de ce modèle qui sont des commentaires sur l’utilisation de celui-ci à l’aide de la commande

    sed "1,8d"

    que l’on ajoute avec un pipe (|) à la commande précédente ;

    wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d"

    on obtient alors ;

    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$ wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d"
    
    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    deb {{mirror}} {{codename}} main restricted
    # deb-src {{mirror}} {{codename}} main restricted
    
    ## Major bug fix updates produced after the final release of the
    ## distribution.
    deb {{mirror}} {{codename}}-updates main restricted
    # deb-src {{mirror}} {{codename}}-updates main restricted
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team. Also, please note that software in universe WILL NOT receive any
    ## review or updates from the Ubuntu security team.
    deb {{mirror}} {{codename}} universe
    # deb-src {{mirror}} {{codename}} universe
    deb {{mirror}} {{codename}}-updates universe
    # deb-src {{mirror}} {{codename}}-updates universe
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team, and may not be under a free licence. Please satisfy yourself as to
    ## your rights to use the software. Also, please note that software in
    ## multiverse WILL NOT receive any review or updates from the Ubuntu
    ## security team.
    deb {{mirror}} {{codename}} multiverse
    # deb-src {{mirror}} {{codename}} multiverse
    deb {{mirror}} {{codename}}-updates multiverse
    # deb-src {{mirror}} {{codename}}-updates multiverse
    
    ## N.B. software from this repository may not have been tested as
    ## extensively as that contained in the main release, although it includes
    ## newer versions of some applications which may provide useful features.
    ## Also, please note that software in backports WILL NOT receive any review
    ## or updates from the Ubuntu security team.
    deb {{mirror}} {{codename}}-backports main restricted universe multiverse
    # deb-src {{mirror}} {{codename}}-backports main restricted universe multiverse
    
    ## Uncomment the following two lines to add software from Canonical's
    ## 'partner' repository.
    ## This software is not part of Ubuntu, but is offered by Canonical and the
    ## respective vendors as a service to Ubuntu users.
    # deb http://archive.canonical.com/ubuntu {{codename}} partner
    # deb-src http://archive.canonical.com/ubuntu {{codename}} partner
    
    deb {{security}} {{codename}}-security main restricted
    # deb-src {{security}} {{codename}}-security main restricted
    deb {{security}} {{codename}}-security universe
    # deb-src {{security}} {{codename}}-security universe
    deb {{security}} {{codename}}-security multiverse
    # deb-src {{security}} {{codename}}-security multiverse
    
    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$ 
  3. on va ensuite remplacer les occurences entre doubles-accolades à l’aide de la commande sed ;

    sed "commandes_de_remplacements_détaillées_ci-dessous"

    notons la présence des guillemets doubles car on va utiliser des commandes externes qui ne serait pas interprétées avec des guillemets simples ;

    1. commençons par remplacer {{mirror}} par l’adresse du serveur (j’utilise ici le serveur pour France qu’il faudra donc adapter selon votre situation géographique) ;

      s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#
    2. remplaçons ensuite {{codename}} par le code de la version en cours ;

      s#{{codename}}#$(lsb_release -sc)#
    3. enfin remplaçons {{security}} par l’adresse du dépôt security ;

      s#{{security}}#http://security.ubuntu.com/ubuntu/#

    on sépare les commandes de sed par des points-virgules et on ajoute le tout aux commandes précédentes avec un pipe ;

    wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d;s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu#"

    on obtient ;

    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$ wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d;s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu#"
    
    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal main restricted
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal main restricted
    
    ## Major bug fix updates produced after the final release of the
    ## distribution.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-updates main restricted
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-updates main restricted
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team. Also, please note that software in universe WILL NOT receive any
    ## review or updates from the Ubuntu security team.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal universe
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal universe
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-updates universe
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-updates universe
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team, and may not be under a free licence. Please satisfy yourself as to
    ## your rights to use the software. Also, please note that software in
    ## multiverse WILL NOT receive any review or updates from the Ubuntu
    ## security team.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal multiverse
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal multiverse
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-updates multiverse
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-updates multiverse
    
    ## N.B. software from this repository may not have been tested as
    ## extensively as that contained in the main release, although it includes
    ## newer versions of some applications which may provide useful features.
    ## Also, please note that software in backports WILL NOT receive any review
    ## or updates from the Ubuntu security team.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
    
    ## Uncomment the following two lines to add software from Canonical's
    ## 'partner' repository.
    ## This software is not part of Ubuntu, but is offered by Canonical and the
    ## respective vendors as a service to Ubuntu users.
    # deb http://archive.canonical.com/ubuntu focal partner
    # deb-src http://archive.canonical.com/ubuntu focal partner
    
    deb http://security.ubuntu.com/ubuntu/ focal-security main restricted
    # deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted
    deb http://security.ubuntu.com/ubuntu/ focal-security universe
    # deb-src http://security.ubuntu.com/ubuntu/ focal-security universe
    deb http://security.ubuntu.com/ubuntu/ focal-security multiverse
    # deb-src http://security.ubuntu.com/ubuntu/ focal-security multiverse
    
    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$ 

    on peut se rendre compte ici que je suis sous focal pour mon exemple ;

  4. optionnel mais je l’ajoute car ça peut aporter des infos sur l’historique d’installation, les infos du CD ;
    j’ajoute donc une commande d’insertion en première ligne à sed, commande un peu complexe que je ne vais pas détailler ici mais je dirai simplement qu’elle va lire les infos dans /var/log/installer/media-info et les mettre en forme pour le sources.list ;

    9i\\$(test -s /var/log/installer/media-info && awk -F'[ "]' '{if ( $3 ) {cn = $5} else {cn = $4};gsub("\"","_",$0);print "# deb-cdrom:["$0"]/ "tolower(cn)" main restricted"}' /var/log/installer/media-info)"

    on ajoute cette commande dans le sed en mettant un point-virgule avant pour obtenir ;

    wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d;s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu#;9i\\$(test -s /var/log/installer/media-info && awk -F'[ "]' '{if ( $3 ) {cn = $5} else {cn = $4};gsub("\"","_",$0);print "# deb-cdrom:["$0"]/ "tolower(cn)" main restricted"}' /var/log/installer/media-info)"

    qui donne ;

    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$ wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d;s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu#;9i\\$(test -s /var/log/installer/media-info && awk -F'[ "]' '{if ( $3 ) {cn = $5} else {cn = $4};gsub("\"","_",$0);print "# deb-cdrom:["$0"]/ "tolower(cn)" main restricted"}' /var/log/installer/media-info)"
    # deb cdrom:[Ubuntu 20.04 LTS _Focal Fossa_ - Release amd64 (20200423)]/ focal main restricted
    
    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal main restricted
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal main restricted
    
    ## Major bug fix updates produced after the final release of the
    ## distribution.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-updates main restricted
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-updates main restricted
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team. Also, please note that software in universe WILL NOT receive any
    ## review or updates from the Ubuntu security team.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal universe
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal universe
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-updates universe
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-updates universe
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team, and may not be under a free licence. Please satisfy yourself as to
    ## your rights to use the software. Also, please note that software in
    ## multiverse WILL NOT receive any review or updates from the Ubuntu
    ## security team.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal multiverse
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal multiverse
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-updates multiverse
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-updates multiverse
    
    ## N.B. software from this repository may not have been tested as
    ## extensively as that contained in the main release, although it includes
    ## newer versions of some applications which may provide useful features.
    ## Also, please note that software in backports WILL NOT receive any review
    ## or updates from the Ubuntu security team.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
    
    ## Uncomment the following two lines to add software from Canonical's
    ## 'partner' repository.
    ## This software is not part of Ubuntu, but is offered by Canonical and the
    ## respective vendors as a service to Ubuntu users.
    # deb http://archive.canonical.com/ubuntu focal partner
    # deb-src http://archive.canonical.com/ubuntu focal partner
    
    deb http://security.ubuntu.com/ubuntu/ focal-security main restricted
    # deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted
    deb http://security.ubuntu.com/ubuntu/ focal-security universe
    # deb-src http://security.ubuntu.com/ubuntu/ focal-security universe
    deb http://security.ubuntu.com/ubuntu/ focal-security multiverse
    # deb-src http://security.ubuntu.com/ubuntu/ focal-security multiverse
    
    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$

    on se rend compte dans mon exemple que j’ai fait une installation de focal sans être passé par une mise à niveau ;

  5. terminons par écrire ce que ces commandes retournent dans le fichier sources.list ainsi que sa sauvegarde en tant qu’administrateur à l’aide de la commande tee ;

    sudo tee /etc/apt/sources.list{,.save}

    que l’on ajoute avec un pipe pour avoir ;

    wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d;s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu#;9i\\$(test -s /var/log/installer/media-info && awk -F'[ "]' '{if ( $3 ) {cn = $5} else {cn = $4};gsub("\"","_",$0);print "# deb-cdrom:["$0"]/ "tolower(cn)" main restricted"}' /var/log/installer/media-info)" | sudo tee /etc/apt/sources.list{,.save}

    et obtenir ;

    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$ wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d;s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu#;9i\\$(test -s /var/log/installer/media-info && awk -F'[ "]' '{if ( $3 ) {cn = $5} else {cn = $4};gsub("\"","_",$0);print "# deb-cdrom:["$0"]/ "tolower(cn)" main restricted"}' /var/log/installer/media-info)" | sudo tee /etc/apt/sources.list{,.save}
    # deb cdrom:[Ubuntu 20.04 LTS _Focal Fossa_ - Release amd64 (20200423)]/ focal main restricted
    
    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal main restricted
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal main restricted
    
    ## Major bug fix updates produced after the final release of the
    ## distribution.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-updates main restricted
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-updates main restricted
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team. Also, please note that software in universe WILL NOT receive any
    ## review or updates from the Ubuntu security team.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal universe
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal universe
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-updates universe
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-updates universe
    
    ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
    ## team, and may not be under a free licence. Please satisfy yourself as to
    ## your rights to use the software. Also, please note that software in
    ## multiverse WILL NOT receive any review or updates from the Ubuntu
    ## security team.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal multiverse
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal multiverse
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-updates multiverse
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-updates multiverse
    
    ## N.B. software from this repository may not have been tested as
    ## extensively as that contained in the main release, although it includes
    ## newer versions of some applications which may provide useful features.
    ## Also, please note that software in backports WILL NOT receive any review
    ## or updates from the Ubuntu security team.
    deb http://fr.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
    # deb-src http://fr.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
    
    ## Uncomment the following two lines to add software from Canonical's
    ## 'partner' repository.
    ## This software is not part of Ubuntu, but is offered by Canonical and the
    ## respective vendors as a service to Ubuntu users.
    # deb http://archive.canonical.com/ubuntu focal partner
    # deb-src http://archive.canonical.com/ubuntu focal partner
    
    deb http://security.ubuntu.com/ubuntu/ focal-security main restricted
    # deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted
    deb http://security.ubuntu.com/ubuntu/ focal-security universe
    # deb-src http://security.ubuntu.com/ubuntu/ focal-security universe
    deb http://security.ubuntu.com/ubuntu/ focal-security multiverse
    # deb-src http://security.ubuntu.com/ubuntu/ focal-security multiverse
    
    ┏[ lundi 23 novembre 2020 ]
    ┣ nany@stupidcomputer :
    ┗▶ ~$

En espérant que ces explications sont suffisamment claires…

Dernière modification par nany (Le 13/06/2021, à 06:12)

En ligne

#2 Le 23/11/2020, à 05:33

nany

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

Tl;dr :
[edit]
Pour ceux qui auraient vu l’edit3 du premier message : j’ai modifié la ligne ci-dessous pour que ça passe en non LTS.
Vous l’utiliserez donc à vos risques et périls. Mieux vaut utiliser le script que j’ai créé suite à la petite conversation avec Watael et qui de surcroît permet de choisir son serveur.
[/edit]

wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d;s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu#;9i\\$(test -s /var/log/installer/media-info && awk -F'[ "]' '{if ( $3 ) {cn = $5} else {cn = $4};gsub("\"","_",$0);print "# deb-cdrom:["$0"]/ "tolower(cn)" main restricted"}' /var/log/installer/media-info)" | sudo tee /etc/apt/sources.list{,.save}


À noter qu’après une mise à niveau les lignes commentées (en général pour les sources) gardent le nom de l’ancienne version ; plutôt que d’utiliser la commande ci-dessus, j’utilise la suivante pour remplacer les occurrences incorrectes :

sudo sed -i "s/\(ubuntu\/* \) *[a-z]*/\1$(lsb_release -sc)/" /etc/apt/sources.list

Dernière modification par nany (Le 13/06/2021, à 06:12)

En ligne

#3 Le 23/11/2020, à 08:04

xubu1957

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

Bonjour,

C'est de la belle ouvrage. smile

# deb http://archive.canonical.com/ubuntu focal partner

Et pour dé-commenter, pour libérer les dépôts partenaires ?

Et les PPA, il faudra les réactiver à la main ?


Important : Pensez à passer vos sujets en [Résolu] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Xubuntu 20.04 LTS - Lenovo T410 -18.04.1 LTS Toshiba Satellite A300  Membre de Linux-Azur

En ligne

#4 Le 23/11/2020, à 08:14

nany

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

xubu1957 a écrit :

Et pour dé-commenter, pour libérer les dépôts partenaires ?

sudo sed -i '/partner/s/^# \(deb http\)/\1/' /etc/apt/sources.list
xubu1957 a écrit :

Et les PPA, il faudra les réactiver à la main ?

Oui.

En ligne

#5 Le 23/11/2020, à 08:21

xubu1957

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

Comme certains empilent les PPA, avec empressement !

Merci. wink


Important : Pensez à passer vos sujets en [Résolu] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Xubuntu 20.04 LTS - Lenovo T410 -18.04.1 LTS Toshiba Satellite A300  Membre de Linux-Azur

En ligne

#6 Le 23/11/2020, à 08:30

nany

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

Pour les PPAs, ils sont normalement ajoutés dans /etc/apt/sources.list.d, donc ma commande n’y touche pas.
Seulement il y a toujours quelques dépôts tiers (comme par exemple winehq) qui sont ajoutés dans le sources.list.

nany a écrit :

En effet, celui-ci peut contenir des dépôts tiers (dus à des pratiques ancestrales qui ajoutent le dépôt dans ce fichier plutôt que de créer un fichier spécifique dans le répertoire prévu à cet effet depuis maintenant quelques années, mais là n’est pas le propos et je ne vais pas partir en guerre contre les tutos mal fichus sur le net tel Don Quichotte se battant contre les moulins à vent).

En ligne

#7 Le 23/11/2020, à 17:16

geole

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

nany a écrit :

Tl;dr :
la commande pour reconstruire un sources.list en bonne et due forme est

wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | tail +9 | sed "s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu/#;1i\# deb cdrom:$(sed 's/^/\[/;s/\"/_/g;s/$/\]/' /var/log/installer/media-info)/ $(awk -F'"' '{sub(" .*","",$2); print tolower($2)}' /var/log/installer/media-info) main restricted" | sudo tee /etc/apt/sources.list

Bonjour
Bonne recherche
Cela fait quand même un affichage de 53 lignes dont 43 me semblent inutiles
La fin pourrait-elle devenir ?

grep ^deb | sudo tee /etc/apt/sources.list

Hors ligne

#8 Le 23/11/2020, à 19:48

nany

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

geole a écrit :

La fin pourrait-elle devenir ?

grep ^deb | sudo tee /etc/apt/sources.list

Plutôt remplacer

tail +9

par

grep -E "^deb|^# deb|^$"

Mais je préfère m’en tenir à un sources.list semblable à celui d’une fraîche install.

En ligne

#9 Le 27/11/2020, à 16:02

enebre

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

Superbe nany, c'est justement ce qu'il me semblait avoir à rechercher pour rafraichir mon bureau.
Jusqu'à présent, je changeais tout ça ligne par ligne, je crois que ça va aller plus vite avec ton oeuvre de bien vaillance.
Merci

Hors ligne

#10 Le 27/11/2020, à 16:39

Watael

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

on se débarasse du tail :

wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,9d; s#..." | sudo ...

est-il bien nécessaire de faire répéter les extractions de /var/log/installer/media-info à chaque ligne traitée pas sed ? est-ce que les données ne pourraient pas être assignées à des variables, puis ces dernières utilisées dans sed ?
traitant le même fichier, ces données ne peuvent-elles pas être récupérées en une seule fois (soit par sed, soit par awk) dans un tableau bash ? ça complique un peu les choses pour un béotien. sad

Dernière modification par Watael (Le 27/11/2020, à 16:39)


Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 27/11/2020, à 19:44

nany

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

Watael a écrit :

on se débarasse du tail :

Bien vu !
Bon maintenant ça m’oblige à revoir le post #1 pour modifier ça. hmm

Watael a écrit :

est-il bien nécessaire de faire répéter les extractions de /var/log/installer/media-info à chaque ligne traitée pas sed ?

Si j’interprète bien le man de sed, la commande pour la ligne désignée par son numéro n’est exécutée que pour cette ligne (donc une seule fois).

Watael a écrit :

est-ce que les données ne pourraient pas être assignées à des variables, puis ces dernières utilisées dans sed ?
traitant le même fichier, ces données ne peuvent-elles pas être récupérées en une seule fois (soit par sed, soit par awk) dans un tableau bash ? ça complique un peu les choses pour un béotien. sad

Ça semble en effet compliquer les choses donc je crois que je vais en rester là :

wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d;s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu/#;9i\# deb cdrom:$(sed 's/^/\[/;s/\"/_/g;s/$/\]/' /var/log/installer/media-info)/ $(awk -F'[ "]' '{print tolower($5)}' /var/log/installer/media-info) main restricted" | sudo tee /etc/apt/sources.list

 

Me reste plus qu’ revoir le post #1 (à tête reposée).

En ligne

#12 Le 27/11/2020, à 20:14

Watael

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

je ne trouve pas de fichier media-info sous /var/log/installer/ sur mon container lxc, tu peux m'envoyer le tien en MP* ? que je vois si je peux optimiser.
parce que je trouve étrange de parser un même fichier avec plusieurs commandes (un seul awk devrait être possible), de surcroît pour une seule ligne à modifier...

--
* ou nous l'afficher, s'il n'est pas immense, ET que rien de personnel n'y apparaît.

Dernière modification par Watael (Le 27/11/2020, à 20:15)


Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 27/11/2020, à 22:07

nany

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

Watael a écrit :

* ou nous l'afficher, s'il n'est pas immense, ET que rien de personnel n'y apparaît.

Panipwoblem’ :

~$ cat /var/log/installer/media-info
Ubuntu 20.04 LTS "Focal Fossa" - Release amd64 (20200423)
~$

Et on doit insérer cette ligne :

# deb-cdrom:[Ubuntu 20.04 LTS _Focal Fossa_ - Release amd64 (20200423)]/ focal main restricted

 

Watael a écrit :

(un seul awk devrait être possible)

Je suis bien d’accord. Du coup j’ai écrit ça :

awk -F'[ "]' '{codename = tolower($5);gsub("\"","_",$0);print "# deb-cdrom:["$0"]/ "codename" main restricted"}' /var/log/installer/media-info

Qui donne comme commande finale :

wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl | sed "1,8d;s#{{mirror}}#http://fr.archive.ubuntu.com/ubuntu/#;s#{{codename}}#$(lsb_release -sc)#;s#{{security}}#http://security.ubuntu.com/ubuntu/#;9i\\$(awk -F'[ "]' '{codename = tolower($5);gsub("\"","_",$0);print "# deb-cdrom:["$0"]/ "codename" main restricted"}' /var/log/installer/media-info)" | sudo tee /etc/apt/sources.list

Si tu trouves plus concis et plus clair, merci à toi. wink

En ligne

#14 Le 27/11/2020, à 23:16

Watael

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

on perd en one liner, mais on gagne en lisibilité* :

mirror='http://fr.archive.ubuntu.com/ubuntu/'
codename=$(lsb_release -sc)
security='http://security.ubuntu.com/ubuntu/'
mediaInfo=$(awk -F'[ "]' '{ codename=tolower($5); gsub("\"","_",$0); print "# deb-cdrom:["$0"]/ "codename" main restricted"; }' /var/log/installer/media-info)

wget -qO- https://raw.githubusercontent.com/canonical/cloud-init/master/templates/sources.list.ubuntu.tmpl \
    | sed  "1,8d;
            s#{{mirror}}#$mirror#;
            s#{{codename}}#$codename#;
            s#{{security}}#$security#;
            9i\# $mediaInfo" \
    | sudo tee /etc/apt/sources.list

perso., je ferais la manip. en root, pour me débarrasser aussi du tee.
et vu qu'il s'agit d'un tâche d'administration système, je l'exécuterais totalement en root.

--
* il me semble essentiel, pour un tuto, de distinguer clairement les éléments de la commande.

Dernière modification par Watael (Le 28/11/2020, à 19:00)


Welcome to sHell. · eval is evil.

Hors ligne

#15 Le 05/12/2020, à 13:43

nany

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

Watael a écrit :

* il me semble essentiel, pour un tuto, de distinguer clairement les éléments de la commande.

Tu as raison, ce n’est pas vraiment un tuto mais une tentative d’explication d’une ligne de commandes. J’ai modifié le titre.


Watael a écrit :

on perd en one liner, mais on gagne en lisibilité* :

C’est vrai que c’est largement plus lisible. Du coup, j’ai fait un script.

En revanche j’ai dû bidouiller les fichiers txt en y insérant des espaces insécables pour avoir les colonnes correctement affichées dans la liste zenity.
Il y a sûrement moyen d’échapper les espaces (ordinaires) que l’on souhaite mais je n’ai pas trouvé. sad

En ligne

#16 Le 04/04/2021, à 08:11

nany

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

Modification du script : test de l’existence de /var/log/installer/media-info.

En ligne

#17 Le 15/04/2021, à 15:44

nany

Re : Régénérer sources.list en une ligne de commandes (+ script recommandé)

nany a écrit :

En revanche j’ai dû bidouiller les fichiers txt en y insérant des espaces insécables pour avoir les colonnes correctement affichées dans la liste zenity.
Il y a sûrement moyen d’échapper les espaces (ordinaires) que l’on souhaite mais je n’ai pas trouvé. sad

J’ai trouvé, il faut modifier l’IFS.

Script modifié et à jour sur github (v1.4).

En ligne