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
Je trouve que c’est une bonne initiative mais on ne vas pas faire le boulot à ta place 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é
6/ posté le résultat pour une verif
7/ rajouter cela dans les scripts sur le forum
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 )
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
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 :
[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 ? :
- testind
- 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 ? :
- Quiter , il n’y a pas/plus de problemes de pubkey
- 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 ? :
-
testind
-
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 ? :
-
Quiter , il n’y a pas/plus de problemes de pubkey
-
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 …
Bon je comprend pas, , j’arrive pas à fermer la balise de code du message si dessus, et j’arrive pas à ajouter un commentaire en fin de post
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, , j’arrive pas à fermer la balise de code du message si dessus, et j’arrive pas à ajouter un commentaire en fin de post
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 …
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