Script shell pour configurer le sources.list

Bonjour,
Je me suis lancé dans l’apprentissage du shell, pour mettre en pratique ce que j’ai lu j’ai voulu écrire un script et puis je me suis dit pourquoi pas apprendre et en même temps écrire un script pas tout à fait inutile. J’ai donc écrit un script qui permet de crée un sources.list et un fichier préférence adapté à la distribution que on utilise. Il permet aussi de régler les problèmes de pubkey. (il est inspiré de ce poste forum.debian-fr.org/viewtopic.php?t=5659 )
C’est le premier script que j’écrit excepté les “hello world”, j’attends que vous donner des exemples d’autres solutions possibles pour ce que j’ai fait.
J’aimerais aussi que vous me donniez des pistes pour rendre plus claire les commentaires que j’ai écrit.
le script en question : mick54.free.fr/scripts/sources

Commenté son code c’est bien mais il est inutile de commenté toutes les commandes. Le mieux est de regrouper les commandes par fonctions et de commenter les fonctions en elle même.

Ensuite la commande echo peut avoir des paramètres de manière à optimiser ton script. exemple

#!/bin/sh echo -e "Voila un texte prévu sur plusieurs lignes qui sera incorporé correctement dans un fichier ;) #il y a meme des commentaires ;) #et un exemple de dépot deb http://ftp2.fr.debian.org/debian/ etch main contrib non-free " > /tmp/hello.txt

Le résultat sera le même que le tiens avec plusieurs echo mais je n’ai utilisé qu’un echo et une seule redirection vers un fichier :smiley:
Je trouve que c’est une bonne initiative mais on ne vas pas faire le boulot à ta place :wink: donc les changements à faire dans ton script un peu fouillis faut le reconnaitre.

1/ indenter ton code au maximum
2/ retirer les commentaires superflus
3/ regrouper tes commandes pour que ce soit plus clair
4/ commenté les groupes des commandes
5/ optimisé les redirections de fichier comme l’exemple que je t’ai filé :wink:
6/ posté le résultat pour une verif :smiley:
7/ rajouter cela dans les scripts sur le forum :smiley:

merci pour l’option d’echo, je vais tachez de suivre tes conseils. Je poste le résultat la prochaine fois ( je suis fatigué la tout de suite :smiley: )

Me revoila avec la version 2 de mon script. Le changement majeur par rapport à la version 1 est que au lieu que le script contienne le préférences et le sources.list je les ai hébergé sur mon ftp et sont récupéré par wget. Cela à plusieurs avantages : le script est beaucoup plus lisible et comme les fichiers son sur mon ftp je peut les faire évoluer sans que les utilisateur n’ai à retélécharger une nouvelle version.
J’ai aussi simplifié les commentaire et virer les accents de ces derniers. Pour l’instant je vous conseil pas d’exécuter le srcipt, j’aurais peut être besoin d’un “casse coup” pour essayé chez lui ci sa marche comme chez moi.
mick54.free.fr/scripts

ça a pas l’air terrible ton truc hein ?

  • ya toujours les accents je vois
  • c’est pas indenté
  • ça va buguer avant la fin du script

Donc qu’est ce qu’il faut faire ? télécharger le .sh ?

je reviens avec les version 2.1 :stuck_out_tongue:
J’ai corrigé les problèmes d’accents, j’ai essayé d’indenter.
Le script marche, en tout cas chez moi. Il ne plante pas au milieu !
Le .sh c’est pour le dl, et après l’ouvrir avec un éditeur de texte, c’est plus facile à lire avec les couleurs.

Je l’ai essayé sur un autre pc sous debian ça marche aussi. C’est quoi qui te faisait dire que ça planterais au milieu???

Bon alors j’ai fais plusieurs test, le premier comme chacun ferait, sans les droits root, vu que c’est un peu hard de demander à quelqu’un de se connecter à ton site avec les droits super-utilisateur pour rappatrier des fichiers :wink: :

[code]Script started on sam 16 jun 2007 17:56:18 CEST
e[He[2J>>>> Bonjour ce script va vous permettre de mettre en place un sources.list parfaitement fonctionnel en fonctions de votre distribution de debian

Une copie de votre actuel sources.list, preferences et apt.conf sera faite dans /etc/apt/ sous forme de *.old
Voulez vous vraiment executer ce script ? (o/n) (Il faut etre connecte a internet) :
o
cp: ne peut créer le fichier régulier `/etc/apt/sources.list.old’: Permission non accordée

rm: détruire un fichier protégé en écriture fichier régulier /etc/apt/sources.list'? o rm: ne peut enlever/etc/apt/sources.list’: Permission non accordée
–17:56:56-- http://mick54.free.fr/sources/sources.list
=> `/etc/apt/sources.list.1’
Résolution de mick54.free.fr… 212.27.63.156
Connexion vers mick54.free.fr|212.27.63.156|:80…connecté.
requête HTTP transmise, en attente de la réponse…200 OK
Longueur: 1 548 (1.5K) [text/plain]
/etc/apt/sources.list.1: Permission non accordée

Ne peut écrire dans « /etc/apt/sources.list.1 » (Permission non accordée).
./sourcesV2.1.sh: line 29: /etc/apt/apt.conf: Permission non accordée
cp: ne peut créer le fichier régulier `/etc/apt/preferences.old’: Permission non accordée
Quelle distribution utilisez vous ? :

  1. testind
  2. stable
    Entrez le numero de votre distribution : 2
    rm: détruire un fichier protégé en écriture fichier régulier /etc/apt/preferences'? o rm: ne peut enlever/etc/apt/preferences’: Permission non accordée
    –17:58:29-- http://mick54.free.fr/sources/stable/preferences
    => `/etc/apt/preferences.1’
    Résolution de mick54.free.fr… 212.27.63.156
    Connexion vers mick54.free.fr|212.27.63.156|:80…connecté.
    requête HTTP transmise, en attente de la réponse…200 OK
    Longueur: 1 083 (1.1K) [text/plain]
    /etc/apt/preferences.1: Permission non accordée
    Ne peut écrire dans « /etc/apt/preferences.1 » (Permission non accordée).
    La creations et le parametrage de vos depots e ete efectue corectement
    voulez vous executer la commande apt-get update maintenant ? (o/n)
    o
    ./sourcesV2.1.sh: line 83: /usr/bin/apt-get: Permission non accordée

Il est probable que une erreur du style : NO_PUBKEY XXXXXXX
Que voulez vous faire ? :

  1. Quiter , il n’y a pas/plus de problemes de pubkey
  2. Reglez les probleme de pubkey
    Entrez le n° corespondant à votre choix ? : 1

Script done on sam 16 jun 2007 17:59:27 CEST[/code]

Ensuite j’ai configuré sudo pour lancer le script :

[code]Script started on sam 16 jun 2007 18:12:19 CEST
/root/.bash_env: line 12: /home/jcode/local/lib/*: Aucun fichier ou répertoire de ce type

e[He[2J>>>> Bonjour ce script va vous permettre de mettre en place un sources.list parfaitement fonctionnel en fonctions de votre distribution de debian

Une copie de votre actuel sources.list, preferences et apt.conf sera faite dans /etc/apt/ sous forme de *.old

Voulez vous vraiment executer ce script ? (o/n) (Il faut etre connecte a internet) :

o

–18:12:28-- http://mick54.free.fr/sources/sources.list

       => `/etc/apt/sources.list'

Résolution de mick54.free.fr… 212.27.63.156

Connexion vers mick54.free.fr|212.27.63.156|:80…connecté.

requête HTTP transmise, en attente de la réponse…200 OK

Longueur: 1 548 (1.5K) [text/plain]

0% [ ] 0 --.–K/s
100%[====================================>] 1 548 --.–K/s

18:12:28 (56.40 MB/s) - « /etc/apt/sources.list » sauvegardé [1548/1548]

Quelle distribution utilisez vous ? :

  1. testind

  2. stable

Entrez le numero de votre distribution : 2

–18:12:37-- http://mick54.free.fr/sources/stable/preferences

       => `/etc/apt/preferences'

Résolution de mick54.free.fr… 212.27.63.156

Connexion vers mick54.free.fr|212.27.63.156|:80…connecté.

requête HTTP transmise, en attente de la réponse…200 OK

Longueur: 1 083 (1.1K) [text/plain]

0% [ ] 0 --.–K/s
100%[====================================>] 1 083 --.–K/s

18:12:38 (57.94 MB/s) - « /etc/apt/preferences » sauvegardé [1083/1083]

La creations et le parametrage de vos depots e ete efectue corectement

voulez vous executer la commande apt-get update maintenant ? (o/n)

o

0% [En cours]

Réception de : 1 http://ftp.ens-cachan.fr etch/volatile Release.gpg [189B]

94% [Connexion à ftp.fr.debian.org] [Attente des fichiers d’en-tête] [Connexi

Réception de : 2 http://www.debian-multimedia.org etch Release.gpg [189B]

Réception de : 3 http://www.debian-multimedia.org lenny Release.gpg [189B]

******************* ect … *******************

842ko réceptionnés en 24s (34,6ko/s)

Lecture des listes de paquets… 0%

Lecture des listes de paquets…

******************* ect … *******************

97%

Lecture des listes de paquets… 98%

Lecture des listes de paquets… Fait

Il est probable que une erreur du style : NO_PUBKEY XXXXXXX

Que voulez vous faire ? :

  1. Quiter , il n’y a pas/plus de problemes de pubkey

  2. Reglez les probleme de pubkey

Entrez le n° corespondant à votre choix ? : 1

Script done on sam 16 jun 2007 18:13:42 CEST
[/code]

Oui effectivement, ça fonctionne, voyons si je fais un upgrade maintenant :

Lecture des listes de paquets... Construction de l'arbre des dépendances... Les paquets suivants ont été conservés : apt-file bind9-host checkinstall dnsutils gimp gimp-data gimp-svg gnome-keyring gtk2-engines gtk2-engines-pixbuf gtk2-engines-xfce hal iceape-browser iceape-chatzilla iceape-mailnews icedove iceweasel libenchant1c2a libexo-0.3-0 libgimp2.0 libgnome-keyring0 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libnotify1 libpango1.0-0 libpcmanx-core0 libquicktime1 librsvg2-2 librsvg2-common libsexy2 libthunar-vfs-1-2 libwmf0.2-7 libwnck18 libxfcegui4-4 libxul-common libxul0d lshw-gtk mkvtoolnix mkvtoolnix-gui mousepad mozilla-plugin-pcmanx openoffice.org openoffice.org-base openoffice.org-calc openoffice.org-common openoffice.org-core openoffice.org-draw openoffice.org-gtk openoffice.org-impress openoffice.org-java-common openoffice.org-math openoffice.org-writer orage python-glade2 python-gtk2 python-uno thunar xarchiver xfce4 xfce4-mcs-manager xfce4-mcs-plugins xfce4-mixer xfce4-mixer-alsa xfce4-panel xfce4-session xfce4-utils xfdesktop4 xfe xfprint4 xfwm4 xfwm4-themes xmoto xmoto-data xorg Les paquets suivants seront mis à jour : acct acpid acpitool aircrack aircrack-ng alien apachetop apt-listbugs arj autoconf-archive autotools-dev avscan base-files binfmt-support bittornado cdbs cdda2wav cdrdao cdrecord clamav clamav-base clamav-daemon clamav-freshclam cowdancer cpio cupsys cupsys-client cupsys-common dbconfig-common debconf debconf-i18n debconf-utils debhelper debian-archive-keyring debianutils desktop-base desktop-file-utils devilspie devscripts dh-make dialog dictionaries-common diff discover1 discover1-data dmidecode doc-base doc-linux-text docbook-xml dpatch dselect dvd+rw-tools eclipse-rcp eclipse-rcp-gcj eject enca endeavour2 ethereal ethereal-common exim4 exim4-base exim4-config exim4-daemon-light fakeroot fastjar file findutils finger freeglut3 fuse-utils gaim gaim-data gconf2 gconf2-common gdk-imlib1 gdk-imlib11 gdm gedit-common genisoimage gkrellm gkrellmd gksu gnump3d gnutls-bin gs-common gsfonts gspca-source gstreamer0.10-alsa gstreamer0.10-plugins-base gstreamer0.10-plugins-ugly gzip hicolor-icon-theme hotway hwdata hwinfo iamerican ibritish iceape icedax iceweasel-l10n-fr icewm icewm-common ifrench-gut imlib-base imlib11 info iodbc iproute iputils-ping ispell kernel-package kernel-patch-badram lesstif2 liba52-0.7.4 libaa1 libacl1 libao2 libapache2-mod-php5 libaprutil1 libaprutil1-dev libarchive-tar-perl libarchive1 libart-2.0-2 libart2 libasyncns0 libatk1.0-0 libatk1.0-data libattr1 libaudio-dev libaudio2 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-compat-howl0 libavahi-glib1 libbcel-java libbonobo2-0 libbonobo2-common libbonoboui2-common libcaca0 libcairo2 libcarp-clan-perl libcdparanoia0 libclamav2 libconvert-binhex-perl libcucul0 libcupsimage2 libcupsys2 libcupsys2-dev libdbd-mysql-perl libdbus-glib-1-2 libdigest-sha1-perl libdiscover1 libdrm2 libdumbnet1 libdvbpsi4 libdvdnav4 libdvdread3 libedit2 libemail-abstract-perl libemail-simple-perl libenca0 libendeavour2-2 libevent1 libexif12 libfile-tail-perl libfltk1.1 libfontenc-dev libfontenc1 libfreetype6 libfreetype6-dev libfuse2 libgconf2-4 libgcrypt11 libgcrypt11-dev libgda2-3 libgksu2-0 libgksuui1.0-1 libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx libglib-perl libglib2.0-0 libglib2.0-data libglib2.0-dev libglibmm-2.4-1c2a libglu1-mesa libglu1-mesa-dev libgnorbagtk0 libgnumail-java libgpg-error-dev libgpg-error0 libgphoto2-2 libgphoto2-port0 libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtksourceview-common libgtkxmhtml1 libgtop2-7 libgtop2-common libhal-storage1 libhal1 libhd13 libhsqldb-java libhtml-parser-perl libhtml-template-perl libhtml-tree-perl libice-dev libice6 libidl0 libintl-gettext-ruby1.8 libio-multiplex-perl libiodbc2 libjaxp1.2-java libjaxp1.3-java liblircclient0 liblockfile1 liblog4j1.2-java liblua5.1-0 libmagic1 libmail-spf-query-perl libmdbtools libmime-perl libming0 libmodule-pluggable-perl libmono-cairo1.0-cil libmono-corlib1.0-cil libmono-system1.0-cil libmozjs0d libmpeg2-4 libmudflap0 libmusicbrainz4c2a libmysqlclient15-dev libmysqlclient15off libnasl2 libncurses5 libncurses5-dev libncursesw5 libnessus2 libnspr4-0d libnss3-0d liboil0.3 libopenssl-ruby1.8 liborbit2 libpango1.0-common libparse-recdescent-perl libpg-java libphp-adodb libpng12-0 libpng12-dev libportaudio0 libportaudio2 libpq-dev libpq4 libpt-1.10.0 libpt-plugins-alsa libpt-plugins-avc libpt-plugins-dc libpt-plugins-oss libpt-plugins-v4l libpt-plugins-v4l2 libpulse0 libqt3-headers libqt3-mt libqt3-mt-mysql libqt4-core libqt4-gui libreadline5 libreadline5-dev librecode0 librpm4 librrd2 librrds-perl libruby1.8 libsamplerate0 libsdl-image1.2 libsdl-mixer1.2 libselinux1 libselinux1-dev libsepol1 libsepol1-dev libslang2 libsm-dev libsm6 libsmbclient libsmpeg0 libsndfile1 libsoup2.2-8 libstartup-notification0 libswt3.2-gtk-gcj libswt3.2-gtk-java libswt3.2-gtk-jni libsysfs2 libtag1c2a libtagc0 libtasn1-3 libtasn1-3-dev libtheora0 libtimedate-perl libttf2 libungif4g libusb-0.1-4 libvlc0 libwnck-common libwpd8c2a libx264-54 libxalan2-java libxau-dev libxau6 libxaw-headers libxaw7 libxaw7-dev libxcomposite-dev libxcomposite1 libxcursor-dev libxcursor1 libxdamage-dev libxdamage1 libxdmcp-dev libxdmcp6 libxerces2-java libxevie-dev libxevie1 libxext-dev libxext6 libxfce4mcs-client3 libxfce4mcs-manager3 libxfce4util4 libxfixes-dev libxfixes3 libxfont-dev libxfont1 libxft-dev libxft2 libxinerama-dev libxinerama1 libxkbfile-dev libxkbfile1 libxml2 libxml2-dev libxml2-utils libxmu-dev libxmu-headers libxmu6 libxmuu-dev libxmuu1 libxpm-dev libxpm4 libxrandr-dev libxrandr2 libxrender-dev libxrender1 libxres-dev libxres1 libxss-dev libxss1 libxt-dev libxt6 libxv-dev libxv1 libxvmc-dev libxvmc1 libzvbi-common libzvbi0 libzvt2 linhdd lintian linuxdoc-tools lm-sensors localepurge logcheck-database login logtail lshw lynx m4 mailx make man-db man2html manpages manpages-dev manpages-fr manpages-fr-dev manpages-fr-extra mbmon mc mdbtools medussa memcached memtest86 mesa-common-dev mesa-utils mkisofs mktemp mlock mod-musicindex-common module-init-tools mono-common mono-jit mozilla-firefox-locale-fr-fr mozilla-plugin-vlc msttcorefonts mtr-tiny myspell-fr-gut mysql-client mysql-client-5.0 mysql-common mysql-server mysql-server-5.0 nano ncurses-base ncurses-bin ncurses-term nmap nmapfe no-ip notification-daemon numlockx openssl oprofile-common p7zip p7zip-full passwd patchutils pbuilder php-pear php5-cgi php5-cli php5-common php5-curl php5-dev php5-gd php5-imap php5-interbase php5-ldap php5-mcrypt php5-mhash php5-mysql php5-odbc php5-pgsql php5-pspell php5-recode php5-snmp php5-sqlite php5-sybase php5-tidy php5-xmlrpc php5-xsl pia ppp pppoe procinfo psmisc putty-tools python python-cairo python-central python-dbus python-libxml2 python-minimal python-pyorbit python-soappy python-support python-xml python2.4 python2.4-minimal qt4-dev-tools quilt quota readline-common recode reportbug rkhunter rpm rrdtool rsync ruby1.8 scantv sed shared-mime-info shorewall-doc shtool smartmontools sox sudo syslinux system-tools-backends tar tcptrack telnet texinfo tree ttf-dejavu ttf-freefont ttf-opensymbol ttf-thryomanes type-handling ucf ulogd ulogd-mysql unifont unrar unzoo usbutils uw-mailutils v4l-conf videolan-doc vlc vlc-nox vorbis-tools wdiff webcam whois wireshark wireshark-common wodim x-dev x-window-system x-window-system-core x11-common x11proto-core-dev x11proto-damage-dev x11proto-input-dev x11proto-randr-dev x86info xawtv xawtv-plugins xbase-clients xcompmgr xfce4-icon-theme xfce4-terminal xfonts-encodings xfs xfsprogs xlibmesa-gl xlibs-data xmbmon xml-core xnest xorg-dev xpdf-common xpdf-reader xpdf-utils xserver-xorg xserver-xorg-core xserver-xorg-dev xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-synaptics xsltproc xterm xtrans-dev xutils-dev xvfb yafc yaird zlib1g zlib1g-dev 559 mis à jour, 0 nouvellement installés, 0 à enlever et 75 non mis à jour.
EDIT: voilà …
Pourtant j’ai bien choisi l’option correspondant à stable, mais ça va tout me passer en testing … Sinon le contenu du fichier preference, c’est bien, c’est juste que ça dépasse un peu mais connaissances et surtout mes envies … je veux pas trop d’expérimental, de volatile tout ça, j’en ai pas besoin moi.
Tu pourrais trés bien faire un test sur choix utilisateur :

  • expérimental
  • testing
  • unstable
  • stable
  • volatile
    Et créer un sources liste dynamique en fonction des choix, ou plusieurs fait à l’avance, qui respecte un peu plus les envies de l’utilisateur, tu vois ?
    Sinon, tu t’es sûrement donné du mal, c’est déjà tenir le bon bout … :wink:

Bon je comprend pas, :open_mouth: , j’arrive pas à fermer la balise de code du message si dessus, et j’arrive pas à ajouter un commentaire en fin de post :smiley: :smiley:
Je nage en plein surréalisme …

ps: c’est quoi ton éditeur ? il pond des caractères imbuvables, tu ferais bien d’en changer je pense …

[quote=“usinagaz”]Bon je comprend pas, :open_mouth: , j’arrive pas à fermer la balise de code du message si dessus, et j’arrive pas à ajouter un commentaire en fin de post :smiley: :smiley:
Je nage en plein surréalisme …[/quote]Et moi aussi: j’ai voulu éditer ton post, et j’ai pas fait mieux que ça. Ca peut être une question de longueur, ou un nombre trop grand de [] que l’analyseur considère comme des balises ouvrantes et dont il ne trouve jamais la fermeture, peut être.

[quote=“usinagaz”]ps: c’est quoi ton éditeur ? il pond des caractères imbuvables, tu ferais bien d’en changer je pense …[/quote]Je pense à priori que le problême est que c’est toi qui n’est pas configuré en utf8 contrairement à Mick54, mais ça peut être l’inverse.

oui moi je suis en utf-8 sur le système, maintenant, à voir dans mon éditeur sous xfce4, c’est tout frais … mais ça semblait s’afficher normalement … non il y a autre chose, ya des carrés des trucs bizarres lol. j’ai l’impression que c’est éditer sous windows avec un truc à la bloc-notes … :smiling_imp:

Edit: merci mattotop, de t’être penché sur le problème.
J’ai raccourci le bloc de code, il devait y avoir un caractère, une chaine de caractère invisible que phpbb n’appréciait pas du tout .

Il faut de l'ASCII pour le site

Il faut de l’ASCII pour le site

ben non pourquoi ?

C’est vraiment bizard, le preferences est le même que celui de mattotop et je pense pas qu’il pose de problèmes. Vraiment bizzard je vais rebooté sous debian et voir ce qui ce passe chez moi quand je prend stable.
L’idée du sources.list et du préférence de mattotop, que j’ai repris, et de mettre les dépôts pour toute les distributions et de crée un préférence qui te garantisse que la plus parts de tes paquets soit dans la distribution que tu a choisis mais que si tu ais besoin de taper ailleurs que tu n’ai pas à rajouter des dépôts dans ton sources.list . Mais ta proposition est intéressante je vais regardé ce que je peut faire.

Je viens de teste quand j’exécute mon script en choisissant stable c’est bien le bon preferences qui est crée…
Est ce que tu peut me donner le résultat, après avoir exécuté, mon script de “apt-cahce policy” stp

Ah, j’aurai pu y penser avant , là j’ai tout remis comme c’était avant …
Dis au fait, tu tiens comptes des fichiers qui sont dans /etc/apt/apt.conf.d ??
Parce que là il y a des directives aussi … mais bon, c’est pas tout le monde qui le fait.

Nouvelle version : V3
J’ai rajouté la possibilité d’avoir seulement une stable, testing ou sid sans preferences.
J’ai enlevé stable avec preferences comme pour l’instant je n’ai toujours pas compris le problème qu’a rencontré usinagaz.
mick54.free.fr/scripts