<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://www.syndicatlibre.org/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Le syndicat Libre</title>
	<link>https://www.syndicatlibre.org/</link>
	<description>Un site Fourmi'dable ! Vous y trouverez toutes les informations utiles pour comprendre le monde du travail, profiter des formations du syndicat Libre, et, plus largement, mieux vivre votre vie professionnelle.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://www.syndicatlibre.org/spip.php?id_rubrique=120&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>Le &lt;b&gt;syndicat&lt;/b&gt; &lt;span class='marque_synper'&gt;Libre&lt;/span&gt;</title>
		<url>https://www.syndicatlibre.org/local/cache-vignettes/L144xH144/logo_du_syndicat_libre_sans_fond_ni_url-4c82e.png?1774203341</url>
		<link>https://www.syndicatlibre.org/</link>
		<height>144</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>Les lignes de commande - Le&#231;on 6 - En savoir plus sur MySQL</title>
		<link>https://www.syndicatlibre.org/spip.php?article583</link>
		<guid isPermaLink="true">https://www.syndicatlibre.org/spip.php?article583</guid>
		<dc:date>2023-10-08T13:47:07Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Libre</dc:creator>



		<description>
&lt;p&gt;Nous allons apprendre &#224; mieux utiliser le serveur de base de donn&#233;es. Nous allons utiliser deux m&#233;thodes. La premi&#232;re sera d'utiliser la base de donn&#233;es au travers de Phpmyadmin. La seconde sera d'utiliser directement le serveur de base de donn&#233;es en ligne de commande. &lt;br class='autobr' /&gt;
Pour notre univers de travail nous aurons besoin de lancer le serveur Apache, qui lancera lui-m&#234;me le php, de lancer le serveur MySQL. &lt;br class='autobr' /&gt;
Si vous utiliser le serveur Apache natif, il faut lancer le serveur Web Http : sudo (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.syndicatlibre.org/spip.php?rubrique120" rel="directory"&gt;Les lignes de commande sous macOS&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-9&#034; id=&#034;nav69e8a4d89f8fc1.95811006&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-PhpmyAdmin-des-scripts-PHP-pour-gerer-les-bases-de-donnees&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-PhpmyAdmin-des-scripts-PHP-pour-gerer-les-bases-de-donnees&#034; class=&#034;spip_ancre&#034;&gt;1. PhpmyAdmin : des scripts PHP pour g&#233;rer les bases de donn&#233;es&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-1-installer-le-logiciel&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-1-installer-le-logiciel&#034; class=&#034;spip_ancre&#034;&gt;1.1 installer le logiciel&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t1-1-Faire-reconnaitre-le-repertoire-de-phpmyadmin-par-le-serveur-web-http-Apache&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-1-Faire-reconnaitre-le-repertoire-de-phpmyadmin-par-le-serveur-web-http-Apache&#034; class=&#034;spip_ancre&#034;&gt;1.1 Faire reconnaitre le r&#233;pertoire de phpmyadmin par le serveur web http Apache&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t1-2-Donner-les-droits-necessaire-au-repertoire&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-2-Donner-les-droits-necessaire-au-repertoire&#034; class=&#034;spip_ancre&#034;&gt;1.2 Donner les droits n&#233;cessaire au r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tmp&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t1-3-Creer-une-cle-valide-pour-le-chiffrement-des-cookies&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-3-Creer-une-cle-valide-pour-le-chiffrement-des-cookies&#034; class=&#034;spip_ancre&#034;&gt;1.3 Cr&#233;er une cl&#233; valide pour le chiffrement des cookies&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-Gerer-le-Serveur-MySQL-en-ligne-de-commande&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-Gerer-le-Serveur-MySQL-en-ligne-de-commande&#034; class=&#034;spip_ancre&#034;&gt;2. G&#233;rer le Serveur MySQL en ligne de commande&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t2-1-Acceder-a-la-console-mysql&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-1-Acceder-a-la-console-mysql&#034; class=&#034;spip_ancre&#034;&gt;2.1 Acc&#233;der &#224; la console mysql&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-2-parametrer-le-serveur-de-base-de-donnees-pour-qu-il-accepte-les-datetimes-en&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-2-parametrer-le-serveur-de-base-de-donnees-pour-qu-il-accepte-les-datetimes-en&#034; class=&#034;spip_ancre&#034;&gt;2.2 param&#233;trer le serveur de base de donn&#233;es pour qu'il accepte les datetimes en &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;0000-00-00 00:00:00&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-2-importer-une-base-de-donnees&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-2-importer-une-base-de-donnees&#034; class=&#034;spip_ancre&#034;&gt;2.2 importer une base de donn&#233;es&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;Nous allons apprendre &#224; mieux utiliser le serveur de base de donn&#233;es. Nous allons utiliser deux m&#233;thodes. La premi&#232;re sera d'utiliser la base de donn&#233;es au travers de Phpmyadmin. La seconde sera d'utiliser directement le serveur de base de donn&#233;es en ligne de commande.&lt;/p&gt;
&lt;p&gt;Pour notre univers de travail nous aurons besoin de lancer le serveur Apache, qui lancera lui-m&#234;me le php, de lancer le serveur MySQL.&lt;/p&gt;
&lt;p&gt;Si vous utiliser le serveur Apache natif, il faut lancer le serveur Web Http :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo apachectl start&lt;/code&gt;&lt;br class='autobr' /&gt;
Mais aussi le serveur de bases de donn&#233;e&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql.server start&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si vous utiliser un autre serveur Apache install&#233; avec Homebrew, v&#233;rifier les services actifs :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew services list&lt;/code&gt; et si besoin, lancez le serveur Apache&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew services start httpd&lt;/code&gt;&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t1-PhpmyAdmin-des-scripts-PHP-pour-gerer-les-bases-de-donnees'&gt;1. PhpmyAdmin : des scripts PHP pour g&#233;rer les bases de donn&#233;es&lt;a class='sommaire-back sommaire-back-9' href='#s-t1-PhpmyAdmin-des-scripts-PHP-pour-gerer-les-bases-de-donnees' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 class=&#034;h3&#034; id='t1-1-installer-le-logiciel'&gt; 1.1 installer le logiciel &lt;a class='sommaire-back sommaire-back-9' href='#s-t1-1-installer-le-logiciel' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;PhpmyAdmin&lt;/i&gt;&lt;/i&gt; est une interface qui vous permettrait totalement de vous passer de faire des lignes de commande. &lt;br class='autobr' /&gt;
Phpmyadmin peut &#234;tre &lt;a href=&#034;https://formulae.brew.sh/formula/phpmyadmin&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;install&#233; avec Brew&lt;/a&gt; par cette simple ligne de commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew install phpmyadmin&lt;/code&gt;&lt;br class='autobr' /&gt;
Si vous ne savez plus si vous l'avez install&#233;, demander tous simplement &#224; Homebrew de vous le dire par la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew info phpmyadmin&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t1-1-Faire-reconnaitre-le-repertoire-de-phpmyadmin-par-le-serveur-web-http-Apache'&gt; 1.1 Faire reconnaitre le r&#233;pertoire de phpmyadmin par le serveur web http Apache &lt;a class='sommaire-back sommaire-back-9' href='#s-t1-1-Faire-reconnaitre-le-repertoire-de-phpmyadmin-par-le-serveur-web-http-Apache' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Apr&#232;s l'installation, il est n&#233;cessaire de pr&#233;ciser dans la configuration du serveur web http les informations n&#233;cessaires &#224; l'utilisation du r&#233;pertoire o&#249; il est plac&#233;. Cette information doit &#234;tre donn&#233;e dans le fichier de configuration.&lt;/p&gt;
&lt;p&gt;Le fichier de configuration du serveur natif s'&#233;dite ainsi :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim /etc/apache2/httpd.conf&lt;/code&gt;&lt;br class='autobr' /&gt;
Le fichier de configuration du service suppl&#233;mentaire install&#233; avec Homebrew s'&#233;dite ainsi :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/etc/httpd/httpd.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Rechercher la boucle o&#249; il est v&#233;rifi&#233; que le module d'alias est activ&#233; (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;IfModule alias_module&gt;&lt;/code&gt;) et ajouter les instructions suivantes :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;Alias /phpmyadmin /opt/homebrew/share/phpmyadmin &lt;Directory /opt/homebrew/share/phpmyadmin/&gt; Options Indexes FollowSymLinks MultiViews AllowOverride All DirectoryIndex index.html index.php &lt;IfModule mod_authz_core.c&gt; Require all granted &lt;/IfModule&gt; &lt;IfModule !mod_authz_core.c&gt; Order allow,deny Allow from all &lt;/IfModule&gt; &lt;/Directory&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Relancer le serveur don nous avons changer la configuration.&lt;br class='autobr' /&gt;
Pour relancer le serveur natif :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo apachectl -k restart&lt;/code&gt;&lt;br class='autobr' /&gt;
Connectez vous :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost/phpmyadmin/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour relancer le serveur install&#233; avec Homebrew :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew services restart httpd&lt;/code&gt;&lt;br class='autobr' /&gt;
Connectez vous :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost:8080/phpmyadmin/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;En correspondance avec votre pr&#233;c&#233;dente installation, entrez l'identifiant et le mot de passe, &#233;ventuellement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;root&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;root&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Vous observerez deux messages d'erreur :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Avertissement Le fichier de configuration a besoin d'une cl&#233; valide pour le chiffrement des cookies. Une cl&#233; temporaire a &#233;t&#233; g&#233;n&#233;r&#233;e automatiquement pour vous. Veuillez vous r&#233;f&#233;rer &#224; la documentation.&lt;br class='autobr' /&gt;
Avertissement $cfg['TempDir'] (/opt/homebrew/Cellar/phpmyadmin/5.2.1/share/phpmyadmin/tmp/) n'est pas accessible. phpMyAdmin est incapable de mettre en cache les mod&#232;les et de ce fait sera lent.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3 class=&#034;h3&#034; id='t1-2-Donner-les-droits-necessaire-au-repertoire'&gt;1.2 Donner les droits n&#233;cessaire au r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tmp&lt;/code&gt; &lt;a class='sommaire-back sommaire-back-9' href='#s-t1-2-Donner-les-droits-necessaire-au-repertoire' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;La commande &lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd /opt/homebrew/Cellar/phpmyadmin/5.2.1/share/phpmyadmin/tmp/&lt;/code&gt;&lt;br class='autobr' /&gt;
nous permet de constater qu'effectivement le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tmp&lt;/code&gt; n'existe pas et que l'avertissement fait est justifi&#233;.&lt;/p&gt;
&lt;p&gt;Nous nous pla&#231;ons dans le r&#233;pertoire parent :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd /opt/homebrew/Cellar/phpmyadmin/5.2.1/share/phpmyadmin/&lt;/code&gt;&lt;br class='autobr' /&gt;
Et nous cr&#233;ons le r&#233;pertoire manquant :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mkdir tmp&lt;/code&gt;&lt;br class='autobr' /&gt;
Nous lui donnons les droits n&#233;cessaires &#224; l'&#233;criture des fichiers temporaires&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;chmod 777 tmp&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t1-3-Creer-une-cle-valide-pour-le-chiffrement-des-cookies'&gt;1.3 Cr&#233;er une cl&#233; valide pour le chiffrement des cookies&lt;a class='sommaire-back sommaire-back-9' href='#s-t1-3-Creer-une-cle-valide-pour-le-chiffrement-des-cookies' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Phpmyadmin demande un cl&#233; de 32 bites pour s&#233;curiser ses cookies. Pour le plaisir de la p&#233;dagogie de ce cours, nous allons g&#233;n&#233;rer la cl&#233; avec les instructions php ci dessous :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;$bytes = random_bytes(16); var_dump(bin2hex($bytes)); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nous saisissons ces instructions dans notre fichier en l'&#233;ditant avec la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim ~/Sites/index.php&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Apr&#232;s avoir ex&#233;cut&#233; le script php et obtenu la cl&#233;, nous la saisissons dans le fichier de configuration de phpmyadmin en l'&#233;ditant avec la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/Cellar/phpmyadmin/5.2.1/share/phpmyadmin/config.inc.php&lt;/code&gt;&lt;br class='autobr' /&gt;
Il s'agit de compl&#233;ter la ligne suivante avec la cl&#233; :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$cfg['blowfish_secret'] = '1c0771fe3eb01f01c82d5ca43c3dca15';&lt;/code&gt;&lt;br class='autobr' /&gt;
ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;1c0771fe3eb01f01c82d5ca43c3dca15&lt;/code&gt; est votre cl&#233; 32 bites.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t2-Gerer-le-Serveur-MySQL-en-ligne-de-commande'&gt;2. G&#233;rer le Serveur MySQL en ligne de commande&lt;a class='sommaire-back sommaire-back-9' href='#s-t2-Gerer-le-Serveur-MySQL-en-ligne-de-commande' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;La limitation de Phpmyadmin est le PHP par lequel on passe pour s'adresser &#224; la base de donn&#233;es. Les import volumineux peuvent &#234;tre probl&#233;matique, par exemple, a cause des d&#233;lais de r&#233;ponse et les abandons auxquels s'attend le PHP. Savoir faire un import directement en ligne de commande est donc important !&lt;/p&gt;
&lt;p&gt;Pour connaitre l'installation faite et la version utilis&#233;e de Mysql, entrer la ligne de commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew info mysql&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-1-Acceder-a-la-console-mysql'&gt; 2.1 Acc&#233;der &#224; la console mysql&lt;a class='sommaire-back sommaire-back-9' href='#s-t2-1-Acceder-a-la-console-mysql' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Saisissez la commande suivante, qui indique que vous voulez avoir acc&#232;s &#224; la console mysql en &#233;tant identifi&#233; comme l'utilisateur root.&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql -u root -p&lt;/code&gt;&lt;br class='autobr' /&gt;
La console vous demandera de confirmer le mot de passe (laiss&#233; en local &#224; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;root&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Pour connaitre les bases de donn&#233;es existantes, vous pouvez entrer la commande suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;SHOW DATABASES;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez s&#233;lectionner une base de donn&#233;e avec la ligne de commande&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;USE spip&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip&lt;/code&gt; &#233;tant l'exemple d'une nom de base de donn&#233;es.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez voir les tables de cette base de donn&#233;es avec l'instruction suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;SHOW TABLES;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez avoir la description d'une table, ici &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_zones&lt;/code&gt;, par la ligne de commande suivante : &lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;DESCRIBE spip_zones;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Les valeurs d'une tables peuvent &#234;tre affich&#233;es par l'instruction :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;SELECT * FROM spip_zones;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez avoir une ligne unique (id_zone = 1) de la table et afficher toute ses valeurs (*) par l'instruction ci-apr&#232;s :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;SELECT * FROM spip_zones WHERE id_zone = 1;&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-2-parametrer-le-serveur-de-base-de-donnees-pour-qu-il-accepte-les-datetimes-en'&gt; 2.2 param&#233;trer le serveur de base de donn&#233;es pour qu'il accepte les datetimes en &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;0000-00-00 00:00:00&lt;/code&gt; &lt;a class='sommaire-back sommaire-back-9' href='#s-t2-2-parametrer-le-serveur-de-base-de-donnees-pour-qu-il-accepte-les-datetimes-en' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Avec &lt;a href=&#034;https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;MySQL 8&lt;/a&gt;, vous pouvez enregistrer des dates avec la valeur z&#233;ro sauf si vous &#234;tes en mode NO_ZERO_DATE. Or ce mode est parmi &lt;a href=&#034;https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les modes par d&#233;faut&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il faudra &#233;diter le fichier de configuration du serveur de base de donn&#233;es :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/etc/my.cnf&lt;/code&gt;&lt;br class='autobr' /&gt;
Il faut ajouter une ligne pr&#233;cisant les modes :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sql_mode = &#034;STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION&#034;&lt;/code&gt;&lt;br class='autobr' /&gt;
Puis il faut relancer le service pour que cette nouvelle configuration soit prise en compte :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew services restart mysql&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-2-importer-une-base-de-donnees'&gt; 2.2 importer une base de donn&#233;es&lt;a class='sommaire-back sommaire-back-9' href='#s-t2-2-importer-une-base-de-donnees' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les lignes de commande - Le&#231;on 5 - rendre effective l'utilisation de la pile LAMP</title>
		<link>https://www.syndicatlibre.org/spip.php?article580</link>
		<guid isPermaLink="true">https://www.syndicatlibre.org/spip.php?article580</guid>
		<dc:date>2023-10-01T19:55:04Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vincent CALLIES</dc:creator>



		<description>
&lt;p&gt;Vous l'aurez remarqu&#233;, nous utilisons parfois la commande sudo. Il est plus s&#251;r d'utiliser la commande sudo dans Terminal que d'activer l'utilisateur root. L'utilisateur root peut tout faire. sudo permet &#224; un utilisateur ordinaire de demander l'autorisation de faire une chose interdite. Pour en savoir plus sur sudo, ouvrez l'application Terminal et saisissez man sudo. &lt;br class='autobr' /&gt;
Pour en savoir plus sur l'utilisateur root : https://support.apple.com/fr-fr/HT204012 &lt;br class='autobr' /&gt;
Le r&#233;pertoire o&#249; se trouve le site (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.syndicatlibre.org/spip.php?rubrique120" rel="directory"&gt;Les lignes de commande sous macOS&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-25&#034; id=&#034;nav69f4cc3f2f1870.81677940&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-Permettre-a-Apache-de-gerer-les-utilisateurs&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-Permettre-a-Apache-de-gerer-les-utilisateurs&#034; class=&#034;spip_ancre&#034;&gt;1. Permettre &#224; Apache de g&#233;rer les utilisateurs&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-1-Modifier-la-configuration-principale-du-serveur-web-Apache&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-1-Modifier-la-configuration-principale-du-serveur-web-Apache&#034; class=&#034;spip_ancre&#034;&gt;1.1 Modifier la configuration principale du serveur web Apache&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-a-avec-le-serveur-natif&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#a-avec-le-serveur-natif&#034; class=&#034;spip_ancre&#034;&gt;a) avec le serveur natif&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-b-avec-le-serveur-supplementaire&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#b-avec-le-serveur-supplementaire&#034; class=&#034;spip_ancre&#034;&gt;b) avec le serveur suppl&#233;mentaire&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t1-2-Modifier-la-configuration-des-utilisateurs&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-2-Modifier-la-configuration-des-utilisateurs&#034; class=&#034;spip_ancre&#034;&gt;1.2 Modifier la configuration des utilisateurs&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-a-avec-le-serveur-natif-1259&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#a-avec-le-serveur-natif-1259&#034; class=&#034;spip_ancre&#034;&gt;a) avec le serveur natif :&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-b-avec-le-serveur-secondaire&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#b-avec-le-serveur-secondaire&#034; class=&#034;spip_ancre&#034;&gt;b) avec le serveur secondaire&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t1-3-Creer-ma-configuration-en-tant-qu-utilisateur&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-3-Creer-ma-configuration-en-tant-qu-utilisateur&#034; class=&#034;spip_ancre&#034;&gt;1.3 Cr&#233;er ma configuration en tant qu'utilisateur&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-a-avec-le-serveur-natif-2&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#a-avec-le-serveur-natif-2&#034; class=&#034;spip_ancre&#034;&gt;a) avec le serveur natif :&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-b-avec-le-serveur-secondaire-b798&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#b-avec-le-serveur-secondaire-b798&#034; class=&#034;spip_ancre&#034;&gt;b) avec le serveur secondaire&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-Utilisation-de-votre-site-utilisateur&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-Utilisation-de-votre-site-utilisateur&#034; class=&#034;spip_ancre&#034;&gt;2. Utilisation de votre site utilisateur&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-a-avec-le-serveur-natif-3&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#a-avec-le-serveur-natif-3&#034; class=&#034;spip_ancre&#034;&gt;a) avec le serveur natif :&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-b-avec-le-serveur-secondaire-2&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#b-avec-le-serveur-secondaire-2&#034; class=&#034;spip_ancre&#034;&gt;b) avec le serveur secondaire&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-1-Les-droits-des-repertoires-et-des-fichiers&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-1-Les-droits-des-repertoires-et-des-fichiers&#034; class=&#034;spip_ancre&#034;&gt;2.1 Les droits des r&#233;pertoires et des fichiers&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-2-L-index-et-les-negociations-de-language&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-2-L-index-et-les-negociations-de-language&#034; class=&#034;spip_ancre&#034;&gt;2.2 L'index et les n&#233;gociations de language&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-a-avec-le-serveur-natif-4&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#a-avec-le-serveur-natif-4&#034; class=&#034;spip_ancre&#034;&gt;a) avec le serveur natif :&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-b-avec-le-serveur-secondaire-3&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#b-avec-le-serveur-secondaire-3&#034; class=&#034;spip_ancre&#034;&gt;b) avec le serveur secondaire&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-3-L-index-en-PHP&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-3-L-index-en-PHP&#034; class=&#034;spip_ancre&#034;&gt;2.3 L'index en PHP&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-a-avec-le-serveur-natif-5&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#a-avec-le-serveur-natif-5&#034; class=&#034;spip_ancre&#034;&gt;a) avec le serveur natif :&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-b-avec-le-serveur-secondaire-ab0c&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#b-avec-le-serveur-secondaire-ab0c&#034; class=&#034;spip_ancre&#034;&gt;b) avec le serveur secondaire :&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t3-Travailler-en-PHP&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-Travailler-en-PHP&#034; class=&#034;spip_ancre&#034;&gt;3 Travailler en PHP&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t3-1-Travailler-en-mode-local-en-php&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-1-Travailler-en-mode-local-en-php&#034; class=&#034;spip_ancre&#034;&gt;3.1 Travailler en mode local en php&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t3-2-Desactive-jit&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-2-Desactive-jit&#034; class=&#034;spip_ancre&#034;&gt;3.2 D&#233;sactiv&#233; jit&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t3-3-Permettre-l-affichage-de-toutes-les-erreurs&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-3-Permettre-l-affichage-de-toutes-les-erreurs&#034; class=&#034;spip_ancre&#034;&gt;3.3 Permettre l'affichage de toutes les erreurs&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Conclusion&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Conclusion&#034; class=&#034;spip_ancre&#034;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;Vous l'aurez remarqu&#233;, nous utilisons parfois la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo&lt;/code&gt;. Il est plus s&#251;r d'utiliser la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo&lt;/code&gt; dans &lt;strong&gt;Terminal&lt;/strong&gt; que d'activer l'utilisateur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;root&lt;/code&gt;. L'utilisateur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;root&lt;/code&gt; peut tout faire. &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo&lt;/code&gt; permet &#224; un utilisateur ordinaire de demander l'autorisation de faire une chose interdite. Pour en savoir plus sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo&lt;/code&gt;, ouvrez l'application Terminal et saisissez &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;man sudo&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pour en savoir plus sur l'utilisateur root :&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://support.apple.com/fr-fr/HT204012&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://support.apple.com/fr-fr/HT204012&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le r&#233;pertoire o&#249; se trouve le site du serveur http Apache que nous avons lanc&#233; lors de la pr&#233;c&#233;dent le&#231;on se trouve parmi les fichiers system qui sont prot&#233;g&#233;s. Ils sont situ&#233;s dans une arborescence au dessus du r&#233;pertoire de l'utilisateur. Il serait int&#233;ressant de permettre la cr&#233;ation de zones d&#233;di&#233;e pour les utilisateurs.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t1-Permettre-a-Apache-de-gerer-les-utilisateurs'&gt;1. Permettre &#224; Apache de g&#233;rer les utilisateurs&lt;a class='sommaire-back sommaire-back-25' href='#s-t1-Permettre-a-Apache-de-gerer-les-utilisateurs' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 class=&#034;h3&#034; id='t1-1-Modifier-la-configuration-principale-du-serveur-web-Apache'&gt; 1.1 Modifier la configuration principale du serveur web Apache&lt;a class='sommaire-back sommaire-back-25' href='#s-t1-1-Modifier-la-configuration-principale-du-serveur-web-Apache' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;&lt;h4 class=&#034;h4&#034; id='a-avec-le-serveur-natif'&gt; a) avec le serveur natif&lt;a class='sommaire-back sommaire-back-25' href='#s-a-avec-le-serveur-natif' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Avant de proc&#233;der &#224; une modification de la configuration, il est prudent d'en faire une copie&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo cp -i /etc/apache2/httpd.conf /etc/apache2/httpd.conf.bak&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez ensuite &lt;strong&gt;modifier&lt;/strong&gt; la configuration principale du serveur web Apache avec la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim /etc/apache2/httpd.conf&lt;/code&gt;&lt;br class='autobr' /&gt;
o&#249; l'on retrouve les lignes ci-dessous et on les d&#233;commente si n&#233;cessaire. Pour d&#233;commenter une ligne, il faut retirer le caract&#232;re di&#232;se (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#&lt;/code&gt;) &#224; son d&#233;but.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;LoadModule userdir_module libexec/apache2/mod_userdir.so LoadModule include_module libexec/apache2/mod_include.so LoadModule rewrite_module libexec/apache2/mod_rewrite.so Include /private/etc/apache2/extra/httpd-userdir.conf &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Une petite astuce sous &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim&lt;/code&gt; :&lt;br class='autobr' /&gt;
Pour rechercher une cha&#238;ne de caract&#232;res, tapez / suivi de la cha&#238;ne recherch&#233;e et appuyez sur Return. &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim&lt;/code&gt; positionne le curseur sur la premi&#232;re occurrence de la cha&#238;ne trouv&#233;e. Par exemple taper &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/userdir_module&lt;/code&gt; vous permettra de retrouver l'appel au module et de retirer le commentaire (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#&lt;/code&gt;) le pr&#233;c&#233;dent et le rendant inactif.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h4 class=&#034;h4&#034; id='b-avec-le-serveur-supplementaire'&gt; b) avec le serveur suppl&#233;mentaire&lt;a class='sommaire-back sommaire-back-25' href='#s-b-avec-le-serveur-supplementaire' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Si vous utiliser un serveur suppl&#233;mentaire install&#233; par Brew (voir la le&#231;on 4), v&#233;rifier que cette installation est convenablement faite avec la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew info httpd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;L'&#233;dition du fichier de configuration n'a pas le m&#234;me acc&#232;s :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/etc/httpd/httpd.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Les modules ne sont pas plac&#233;s aux m&#234;me endroits :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;LoadModule userdir_module lib/httpd/modules/mod_userdir.so LoadModule include_module lib/httpd/modules/mod_include.so LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so # User home directories Include /opt/homebrew/etc/httpd/extra/httpd-userdir.conf &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 class=&#034;h3&#034; id='t1-2-Modifier-la-configuration-des-utilisateurs'&gt; 1.2 Modifier la configuration des utilisateurs&lt;a class='sommaire-back sommaire-back-25' href='#s-t1-2-Modifier-la-configuration-des-utilisateurs' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;&lt;h4 class=&#034;h4&#034; id='a-avec-le-serveur-natif-1259'&gt; a) avec le serveur natif :&lt;a class='sommaire-back sommaire-back-25' href='#s-a-avec-le-serveur-natif-1259' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Il faut &lt;strong&gt;modifier&lt;/strong&gt; le script ci-dessus appel&#233; par un include avec la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim /etc/apache2/extra/httpd-userdir.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous y verrez une ligne de commentaire qui indique :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;# Required module: mod_authz_core, mod_authz_host, mod_userdir&lt;/code&gt;&lt;br class='autobr' /&gt;
C'est cette v&#233;rification que nous avons faite dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;httpd.conf&lt;/code&gt; ci-dessus.&lt;br class='autobr' /&gt;
Vous y verrez une ligne indiquant&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;UserDir Sites&lt;/code&gt;&lt;br class='autobr' /&gt;
Cela signifie que c'est le r&#233;pertoire Sites, dans le dossier de l'utilisateur, qui permet d'accueillir les requ&#234;tes du serveur http. Le chemin sera : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/Users/username/Sites/&lt;/code&gt;&lt;br class='autobr' /&gt;
Vous devez &lt;i&gt;ajouter&lt;/i&gt; ou &lt;i&gt;d&#233;commenter&lt;/i&gt; dans le pr&#233;sent fichier la ligne suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Include /private/etc/apache2/users/*.conf&lt;/code&gt;&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='b-avec-le-serveur-secondaire'&gt; b) avec le serveur secondaire&lt;a class='sommaire-back sommaire-back-25' href='#s-b-avec-le-serveur-secondaire' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Si vous &#234;tes avec un second serveur install&#233;, &#233;diter le fichier suivant :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/etc/httpd/extra/httpd-userdir.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous y verrez une ligne indiquant&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;UserDir public_html&lt;/code&gt;&lt;br class='autobr' /&gt;
Cela signifie que c'est le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;public_html&lt;/code&gt;, dans le dossier de l'utilisateur, qui permet d'accueillir les requ&#234;tes du serveur http. Le chemin sera : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/Users/username/public_html/&lt;/code&gt;&lt;br class='autobr' /&gt;
Vous devez &lt;i&gt;ajouter&lt;/i&gt; ou &lt;i&gt;d&#233;commenter&lt;/i&gt; dans le pr&#233;sent fichier la ligne suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Include /opt/homebrew/etc/httpd/users/*.conf&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t1-3-Creer-ma-configuration-en-tant-qu-utilisateur'&gt; 1.3 Cr&#233;er ma configuration en tant qu'utilisateur&lt;a class='sommaire-back sommaire-back-25' href='#s-t1-3-Creer-ma-configuration-en-tant-qu-utilisateur' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;&lt;h4 class=&#034;h4&#034; id='a-avec-le-serveur-natif-2'&gt; a) avec le serveur natif :&lt;a class='sommaire-back sommaire-back-25' href='#s-a-avec-le-serveur-natif-2' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Enfin, apr&#232;s s'&#234;tre plac&#233; dans le r&#233;pertoire racine, il convient de &lt;strong&gt;cr&#233;er&lt;/strong&gt; le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;username.conf&lt;/code&gt; (ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;username&lt;/code&gt; sera votre nom d'&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;user)&lt;/code&gt; avec la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim /etc/apache2/users/username.conf&lt;/code&gt; par exemple &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim /etc/apache2/users/vincent.conf&lt;/code&gt; &lt;br class='autobr' /&gt;
Vous devez saisir ces lignes (ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;username&lt;/code&gt; sera votre nom d'&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;user)&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;Directory &#034;/Users/username/Sites/&#034;&gt; AllowOverride All Options Indexes MultiViews FollowSymLinks Require all granted &lt;/Directory&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ces op&#233;rations faites, lan&#231;ons le serveur Web&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo apachectl start&lt;/code&gt;&lt;br class='autobr' /&gt;
et v&#233;rifions les modules install&#233;s avec l'instruction :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;apachectl -t -D DUMP_MODULES&lt;/code&gt;&lt;br class='autobr' /&gt;
Doivent apparaitre :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;userdir_module (shared) include_module (shared) rewrite_module (shared) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Tester l'acc&#232;s depuis Safari :&lt;br class='autobr' /&gt;
au site global&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost&lt;/code&gt;&lt;br class='autobr' /&gt;
puis au site de l'user (vous)&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost/~vincent/&lt;/code&gt;&lt;br class='autobr' /&gt;
o&#249; vincent est le nom de l'utilisateur.&lt;/p&gt;
&lt;p&gt;Si vous avez un probl&#232;me impr&#233;vu de configuration, vous pouvez lancer un test sur cette configuration qui pourra vous dire o&#249; est l'erreur avec la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo apachectl configtest&lt;/code&gt;&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='b-avec-le-serveur-secondaire-b798'&gt; b) avec le serveur secondaire&lt;a class='sommaire-back sommaire-back-25' href='#s-b-avec-le-serveur-secondaire-b798' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Cr&#233;ons un r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;users&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mkdir /opt/homebrew/etc/httpd/users/&lt;/code&gt;&lt;br class='autobr' /&gt;
V&#233;rifions sa bonne cr&#233;ation et ses droits :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd /opt/homebrew/etc/httpd&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls -la&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Cr&#233;ons le fichier de configuration en tant qu'utilisateur (o&#249; vincent est le nom de l'utilisateur.)&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/etc/httpd/users/vincent.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous devez saisir ces lignes (ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vincent&lt;/code&gt; sera votre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;username)&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;Directory &#034;/Users/vincent/public_html/&#034;&gt; AllowOverride All Options Indexes MultiViews FollowSymLinks Require all granted &lt;/Directory&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Relancer le serveur&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew services start httpd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Tester l'acc&#232;s en ligne de commande :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; le site global&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;curl http://localhost:8080&lt;/code&gt;&lt;/li&gt;&lt;li&gt; puis au site de l'user (vous)&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;curl http://localhost:8080/~vincent/&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;h2&#034; id='t2-Utilisation-de-votre-site-utilisateur'&gt;2. Utilisation de votre site utilisateur&lt;a class='sommaire-back sommaire-back-25' href='#s-t2-Utilisation-de-votre-site-utilisateur' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h4 class=&#034;h4&#034; id='a-avec-le-serveur-natif-3'&gt; a) avec le serveur natif :&lt;a class='sommaire-back sommaire-back-25' href='#s-a-avec-le-serveur-natif-3' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;L'utilisateur &#224; maintenant son site &#224; g&#233;rer dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Sites&lt;/code&gt; (situ&#233; &#224; la racine de son r&#233;pertoire d'utilisateur).&lt;/p&gt;
&lt;p&gt;Si vous rencontrer des erreurs, il peut &#234;tre utile d'aller consulter le journal des erreurs d'Apache. Vous pouvez le faire avec la commande ci-dessous :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cat /var/log/apache2/error_log&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Une erreur sera r&#233;dig&#233;e de la fa&#231;on suivante dans le log :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;[Sat Sep 30 18:39:56.671447 2023] [core:crit] [pid 71538] (13)Permission denied : [client ::1:52090] AH00529 : /Users/vincent/Sites/.htaccess pcfg_openfile : unable to check htaccess file, ensure it is readable and that '/Users/vincent/Sites/' is executable&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;M&#234;me si vous ne rencontrez pas &lt;a href=&#034;https://cwiki.apache.org/confluence/display/HTTPD/PcfgOpenfile&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;l'erreur ci-dessus&lt;/a&gt;, les commandes que nous allons faire pour corriger le probl&#232;me peuvent vous int&#233;resser.&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='b-avec-le-serveur-secondaire-2'&gt; b) avec le serveur secondaire&lt;a class='sommaire-back sommaire-back-25' href='#s-b-avec-le-serveur-secondaire-2' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Le journal des erreurs du serveur, dont le nom et la localisation sont d&#233;finis par la directive &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ErrorLog&lt;/code&gt; , est sans doute &lt;a href=&#034;https://httpd.apache.org/docs/2.4/fr/mod/core.html#errorlog&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;le journal le plus important&lt;/a&gt; tant votre pratique vous am&#232;nera &#224; le consulter pour identifier ce qui ne fonctionne pas. Pour savoir comment est d&#233;finie votre directive, il vous suffit d'&#233;diter le ficher de configuration de votre serveur Web et de retrouver la directive. Pour ce faire vous pouvez utiliser les lignes de commande suivantes :&lt;br class='autobr' /&gt;
Editer le ficher de configuration depuis son r&#233;pertoire&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim httpd.conf&lt;/code&gt;&lt;br class='autobr' /&gt;
rechercher la directive avec les commandes propre &#224; vim :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/ErrorLog&lt;/code&gt;&lt;br class='autobr' /&gt;
Vous trouverez un r&#233;sultat de ce type :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ErrorLog &#034;/opt/homebrew/var/log/httpd/error_log&#034;&lt;/code&gt;&lt;br class='autobr' /&gt;
Il ne vous restera plus qu'&#224; le lire&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/var/log/httpd/error_log&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-1-Les-droits-des-repertoires-et-des-fichiers'&gt; 2.1 Les droits des r&#233;pertoires et des fichiers&lt;a class='sommaire-back sommaire-back-25' href='#s-t2-1-Les-droits-des-repertoires-et-des-fichiers' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Il y a, tout d'abord, les droits sur les fichiers et r&#233;pertoires. la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls&lt;/code&gt; suivie de l'argument &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;-l&lt;/code&gt; permet de connaitre ces droits.&lt;br class='autobr' /&gt;
Placez vous dans le r&#233;pertoire de l'utilisateur :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd ~&lt;/code&gt;&lt;br class='autobr' /&gt;
Regardez les droits du r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Sites&lt;/code&gt; et de ce qu'il contient :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls -l -a Sites&lt;/code&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Le r&#233;pertoire Sites, repr&#233;sent&#233; par un point (&#171; . &#187;) est indiqu&#233; avec les droits &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;drwx------&lt;/code&gt;. &lt;br class='manualbr' /&gt;La premi&#232;re lettre, la lettre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;d&lt;/code&gt;, signifie qu'il s'agit d'un r&#233;pertoire (&lt;i&gt;&#171; a &lt;strong&gt;d&lt;/strong&gt;irectory &#187;&lt;/i&gt; en anglais). _ Les autres lettres doivent se lire en s&#233;rie, trois lettres pour l'utilisateur (ou &#171; &lt;i&gt;user&lt;/i&gt; &#187; en anglais), trois lettres pour le groupe (ou &#171; &lt;i&gt;group&lt;/i&gt; &#187; en anglais), trois lettres pour les autres (ou &#171; &lt;i&gt;others&lt;/i&gt; &#187; en anglais). &lt;br class='manualbr' /&gt;Autrement dit, l'utilisateur pour le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Sites&lt;/code&gt;, se voit attribuer trois lettres &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rwx&lt;/code&gt;. le r signifie un droit en lecture (pour &#171; &lt;i&gt;r&lt;/i&gt;ead&lt;/i&gt; &#187; en anglais), le w signifie &#233;crire (&#171; &lt;i&gt;w&lt;/i&gt;rite&lt;/i&gt; &#187; en anglais), le x est pour e&lt;strong&gt;x&lt;/strong&gt;&#233;cuter (&#171; &lt;i&gt;execute&lt;/i&gt; &#187; en anglais).&lt;br class='manualbr' /&gt;le groupe ou les autres n'ont aucun droit ce qui se traduit par un tiret (&#171; - &#187;).&lt;/li&gt;&lt;li&gt; le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html.en&lt;/code&gt; est indiqu&#233; avec les droits -rwxr-xr-x, codification que vous pouvez maintenant interpr&#233;t&#233;e, sachant que le premier tiret &#171; - &#187; indique simplement qu'il s'agit d'un fichier.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;L'examen de ces droits permet d'identifier que le r&#233;pertoire Sites n'a pas &#233;t&#233; cr&#233;&#233; avec des droits suffisants. Pour lui donner, pour les trois groupes, les droits maximaux, il est possible de saisir cette commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;chmod +rwx Sites&lt;/code&gt;&lt;br class='autobr' /&gt;
Reste que ce serait excessif. Les droits n&#233;cessaires sont les suivants &lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;chmod 705 Sites&lt;/code&gt;&lt;br class='autobr' /&gt;
Nous utilisons ici des chiffres et non des lettres, ce qui est une autre convention, facile &#224; retenir une fois que l'on sait qu'il s'agit du chiffre &#224; s&#233;parer en trois, pour les trois groupes, et chaque groupe est la simple addition de permission ainsi r&#233;parties : la lecture = 4, l'&#233;criture = 2, l'ex&#233;cution = 1.&lt;br class='autobr' /&gt;
Il reste aussi &#224; optimiser les droits du fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html.en&lt;/code&gt; qui n'a pas besoin de droit de groupe.&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;chmod 705 index.html.en&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;On peut se demander ce qu'est ce fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html&lt;/code&gt; auquel un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;.en&lt;/code&gt; a &#233;t&#233; ajout&#233;.&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-2-L-index-et-les-negociations-de-language'&gt; 2.2 L'index et les n&#233;gociations de language&lt;a class='sommaire-back sommaire-back-25' href='#s-t2-2-L-index-et-les-negociations-de-language' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Le jargon Apache parle de &#171; &lt;a href=&#034;https://httpd.apache.org/docs/2.4/content-negotiation.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;N&#233;gociation de language&lt;/a&gt; &#187;. Le serveur Web http permet la gestion d'une extension li&#233;e au langage. Lorsque, pr&#233;c&#233;demment dans cet article, vous avez d&#233;fini &lt;a href=&#034;#t1-3-Creer-ma-configuration-en-tant-qu-utilisateur&#034; class=&#034;spip_ancre&#034;&gt;votre configuration en tant qu'utilisateur&lt;/a&gt;, vous avez introduit le mot cl&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;MultiViews&lt;/code&gt; qui demande cette fonctionnalit&#233;.&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='a-avec-le-serveur-natif-4'&gt; a) avec le serveur natif :&lt;a class='sommaire-back sommaire-back-25' href='#s-a-avec-le-serveur-natif-4' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;R&#233;&#233;diter le fichier de configuration de l'utilisateur :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim /etc/apache2/users/username.conf&lt;/code&gt; (par exemple &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim /etc/apache2/users/vincent.conf&lt;/code&gt;) et modifiez le enti&#232;rement ainsi :&lt;br class='autobr' /&gt;
Vous devez saisir ces lignes (ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;username&lt;/code&gt; sera votre nom d'&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;user)&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;Directory &#034;/Users/username/Sites/&#034;&gt; AllowOverride none Options -MultiViews Require all granted &lt;/Directory&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Comme on n'utilise pas de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;.htaccess&lt;/code&gt; on peut enti&#232;rement d&#233;sactiv&#233;e ce recours en d&#233;finissant la directive &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;AllowOverride&lt;/code&gt; &#224; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;none&lt;/code&gt;&lt;br class='autobr' /&gt;
Nous avons supprim&#233; l'usage de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;MultiViews&lt;/code&gt;&lt;br class='autobr' /&gt;
Nous avons rappel&#233; que l'index serait soit &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html&lt;/code&gt; soit &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.php&lt;/code&gt;&lt;br class='autobr' /&gt;
Nous avons autoris&#233; les acc&#232;s.&lt;/p&gt;
&lt;p&gt;Renommez &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html.en&lt;/code&gt; en &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html&lt;/code&gt;seulement :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mv index.html.en index.html&lt;/code&gt;&lt;br class='autobr' /&gt;
Puis tester le site de l'utilisateur&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost/~vincent/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Et si nous parlions de cet &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.php&lt;/code&gt; ?&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='b-avec-le-serveur-secondaire-3'&gt; b) avec le serveur secondaire&lt;a class='sommaire-back sommaire-back-25' href='#s-b-avec-le-serveur-secondaire-3' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Editions le fichier de configuration de l'utilisateur (ici vincent)&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/etc/httpd/users/vincent.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Saisissez les lignes suivantes&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;Directory &#034;/Users/vincent/public_html/&#034;&gt; AllowOverride All Options -MultiViews Require all granted &lt;/Directory&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Relancer le serveur &lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew services start httpd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;V&#233;rifions si l'appel de l'URI est possible :&lt;br class='autobr' /&gt;
curl &lt;a href=&#034;http://localhost:8080/~vincent&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://localhost:8080/~vincent&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans la n&#233;gative, v&#233;rifions que le r&#233;pertoire public_html existe bien.&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd ~&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls -la&lt;/code&gt;&lt;br class='autobr' /&gt;
Si le r&#233;pertoire n'existe pas, cr&#233;ons le :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mkdir public_html&lt;/code&gt;&lt;br class='autobr' /&gt;
Cr&#233;ons ensuite un fichier index.html dans le dossier&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim public_html/index.html&lt;/code&gt;&lt;br class='autobr' /&gt;
Nous y &#233;crirons le code HTML suivant :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;html&gt;&lt;head&gt; &lt;title&gt;Le&#231;on 5 du SYNPER&lt;/title&gt; &lt;/head&gt;&lt;body&gt; &lt;h1&gt;C'est fou !&lt;/h1&gt; &lt;p&gt;J'aime apprendre.&lt;/p&gt; &lt;/body&gt;&lt;/html&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 class=&#034;h3&#034; id='t2-3-L-index-en-PHP'&gt; 2.3 L'index en PHP&lt;a class='sommaire-back sommaire-back-25' href='#s-t2-3-L-index-en-PHP' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Apr&#232;s s'&#234;tre plac&#233; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Sites&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;public_html&lt;/code&gt;, cr&#233;ons un index en php :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim index.php&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ecrivez :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;?php echo 'Ceci est mon texte envoy&#233; en Php !'; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;renommons index.html pour le rendre inutilisable :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mv index.html index.html.bak&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Puis testons le site de l'utilisateur&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost/~vincent/&lt;/code&gt;&lt;br class='autobr' /&gt;
ou&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost:8080/~vincent/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Nous aurons une erreur &lt;i&gt;403 Forbidden&lt;/i&gt;. En effet, ne trouvant pas le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html&lt;/code&gt;, le serveur ne va pas chercher le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.php&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ajoutons une ligne &#224; notre fichier de configuration d'utilisateur pour lui dire, si l'index.html n'est pas l&#224;, d'utiliser l'index.php.&lt;br class='autobr' /&gt;
Pour le serveur Apache int&#233;grer, &#233;diter le fichier ainsi :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim /etc/apache2/users/vincent.conf&lt;/code&gt;&lt;br class='autobr' /&gt;
Pour le serveur secondaire, utiliser la ligne de commande&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/etc/httpd/users/vincent.conf&lt;/code&gt;&lt;br class='autobr' /&gt;
(o&#249; vincent est le nom d'utilisateur).&lt;br class='autobr' /&gt;
ajoutons la ligne suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;DirectoryIndex index.html index.php&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Relan&#231;ons le serveur Apache, s'il s'agit du serveur natif par :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo apachectl -k restart&lt;/code&gt;&lt;br class='autobr' /&gt;
s'il s'agit du serveur secondaire :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew services start httpd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le script PHP va s'afficher mais ne sera pas interpr&#233;t&#233;. En effet, ne trouvant pas le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html&lt;/code&gt;, le serveur va bien chercher le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.php&lt;/code&gt; mais ne l'interpr&#232;te pas. Il faut configurer le serveur pour qu'il puisse servir des pages PHP.&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='a-avec-le-serveur-natif-5'&gt; a) avec le serveur natif :&lt;a class='sommaire-back sommaire-back-25' href='#s-a-avec-le-serveur-natif-5' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Le fichier de configuration d'Apache sous macOS pr&#233;cise, dans ses commentaires, que le PHP &#233;tait obsol&#232;te dans macOS 11 et supprim&#233; de macOS 12. Nous n'allons donc pas pouvoir r&#233;activer le module php. Il faudra aller le rechercher dans l'installation que nous avons faite lors de l'installation de Composer (voir la le&#231;on 4). Vous retrouverez l'installation faite par Homebrew par la ligne de commande suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd $HOMEBREW_REPOSITORY/Cellar/php/&lt;/code&gt;&lt;br class='autobr' /&gt;
Le module a appel&#233; par Apache sera dans :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd $HOMEBREW_REPOSITORY/opt/homebrew/opt/php/lib/httpd/modules/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Nous ouvrons le fichier de configuration d'Apache&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim /etc/apache2/httpd.conf&lt;/code&gt;&lt;br class='autobr' /&gt;
Vous verrez sans doute un commentaire dans le fichier de configuration Apache :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#PHP was deprecated in macOS 11 and removed from macOS 12&lt;/code&gt;&lt;br class='autobr' /&gt;
Ce qui signifie que l'Apache d'Apple n'utilise pas le php.&lt;br class='autobr' /&gt;
Nous ajoutons la ligne suivant pour appeler le module php :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Puis nous pr&#233;cisons que si le module est charg&#233;, il faut utiliser le PHP pour les fichiers qui utilise l'extension ad&#233;quate :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;IfModule php_module&gt; &lt;FilesMatch .php$&gt; SetHandler application/x-httpd-php &lt;/FilesMatch&gt; &lt;/IfModule&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Mais le simple ajout de ce module ne suffit pas. Cela va g&#233;n&#233;rer une erreur que vous pourrez retrouver dans :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo apachectl configtest&lt;/code&gt;&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;[Sun Oct 01 19:48:55.864782 2023] [so:error] [pid 76530] AH06665 : No code signing authority for module at /opt/homebrew/opt/php/lib/httpd/modules/libphp.so specified in LoadModule directive.&lt;br class='autobr' /&gt;
httpd : Syntax error on line 72 of /private/etc/apache2/httpd.conf : Code signing absent - not loading module at : /opt/homebrew/opt/php/lib/httpd/modules/libphp.so&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Il s'agit d'une pr&#233;caution pour assurer la s&#233;curit&#233; de votre serveur : des modules ne peuvent &#234;tre ajout&#233; que s'ils sont sign&#233;s. Il vous faut donc ouvrir votre &lt;i&gt;Trousseau d'acc&#232;s&lt;/i&gt;, et depuis le menu, &lt;i&gt;Assistant de configuration&lt;/i&gt; | &lt;i&gt;Cr&#233;er une autorit&#233; de certificat&lt;/i&gt; et choisir dans les options, &lt;i&gt;Signature de code&lt;/i&gt;. Une proc&#233;dure est &lt;a href=&#034;https://www.simplified.guide/macos/apache-php-homebrew-codesign&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ici&lt;/a&gt; d&#233;taill&#233;e en anglais. vous devrez mettre entre guillemet &#224; la fin de la ligne, le titre de ce certificat.&lt;/p&gt;
&lt;p&gt;En relan&#231;ant le serveur Apache :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo apachectl -k restart&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Un message de confirmation devrait appara&#238;tre :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;[Sun Oct 01 21:43:31.910876 2023] [so:notice] [pid 78282] AH06662 : Allowing module loading process to continue for module at /opt/homebrew/opt/php/lib/httpd/modules/libphp.so because module signature matches authority &#034;AC de vincent&#034; specified in LoadModule directive&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Le fichier Php est maintenant interpr&#233;t&#233; !&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='b-avec-le-serveur-secondaire-ab0c'&gt; b) avec le serveur secondaire :&lt;a class='sommaire-back sommaire-back-25' href='#s-b-avec-le-serveur-secondaire-ab0c' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Nous ajoutons la ligne suivant pour appeler le module php :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so&lt;/code&gt;&lt;br class='autobr' /&gt;
Puis nous pr&#233;cisons que si le module est charg&#233;, il faut utiliser le PHP pour les fichiers qui utilise l'extension ad&#233;quate :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;IfModule php_module&gt; &lt;FilesMatch .php$&gt; SetHandler application/x-httpd-php &lt;/FilesMatch&gt; &lt;/IfModule&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;En relan&#231;ant le serveur Apache :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew services restart httpd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour connaitre l'installation php faite, n'h&#233;sitez pas &#224; solliciter Homebrew par la ligne de commande ci-apr&#232;s :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew info php&lt;/code&gt;&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t3-Travailler-en-PHP'&gt; 3 Travailler en PHP&lt;a class='sommaire-back sommaire-back-25' href='#s-t3-Travailler-en-PHP' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 class=&#034;h3&#034; id='t3-1-Travailler-en-mode-local-en-php'&gt; 3.1 Travailler en mode local en php&lt;a class='sommaire-back sommaire-back-25' href='#s-t3-1-Travailler-en-mode-local-en-php' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Pour connaitre le lieu ou est votre fichier de configuration, passez la commande suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;php -r &#034;phpinfo();&#034; | grep php.ini&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;editer le fichier dont le chemin vous est donn&#233;, par exemple :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/etc/php/8.2/php.ini&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t3-2-Desactive-jit'&gt; 3.2 D&#233;sactiv&#233; jit&lt;a class='sommaire-back sommaire-back-25' href='#s-t3-2-Desactive-jit' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Faire une recherche de la section concernant le module pcre :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;/pcre&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;d&#233;commenter la ligne et donner la valeur z&#233;ro &#224; &lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pcre.jit=0&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t3-3-Permettre-l-affichage-de-toutes-les-erreurs'&gt; 3.3 Permettre l'affichage de toutes les erreurs&lt;a class='sommaire-back sommaire-back-25' href='#s-t3-3-Permettre-l-affichage-de-toutes-les-erreurs' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;comme nous sommes en local, vous pouvez ajouter les lignes suivantes au fichier&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;php.ini&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;; Enable error reporting error_reporting = E_ALL &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;h2&#034; id='Conclusion'&gt;Conclusion&lt;a class='sommaire-back sommaire-back-25' href='#s-Conclusion' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Le &lt;span class='marque_synper'&gt;SYNPER&lt;/span&gt; donne des formations d'initiation &#224; la programmation. Les articles de cette rubrique accompagnent une formation sur &lt;i&gt;les lignes de commande avec macOS&lt;/i&gt;.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Un &lt;a href='https://www.syndicatlibre.org/spip.php?article574' class=&#034;spip_in&#034;&gt;premier article&lt;/a&gt; qui vous a appris &#224; passer des commandes sous Linux.&lt;/li&gt;&lt;li&gt; Un &lt;a href='https://www.syndicatlibre.org/spip.php?article575' class=&#034;spip_in&#034;&gt;second article&lt;/a&gt; vous a appris &#224; regrouper ces commandes et les ex&#233;cuter depuis un fichier.&lt;/li&gt;&lt;li&gt; Le &lt;a href='https://www.syndicatlibre.org/spip.php?article576' class=&#034;spip_in&#034;&gt;troisi&#232;me article&lt;/a&gt; vous a appris &#224; appeler un d&#233;p&#244;t et proc&#233;der &#224; une installation par paquets.&lt;/li&gt;&lt;li&gt; Le &lt;a href='https://www.syndicatlibre.org/spip.php?article579' class=&#034;spip_in&#034;&gt;quatri&#232;me article&lt;/a&gt; vous a appris &#224; utiliser la Pile LAMP en ligne de commande.&lt;/li&gt;&lt;li&gt; Le pr&#233;sente article, tr&#232;s technique, montre que vous maitriser cet univers et sa complexit&#233;. Bravo ! Voyez attentif &#224; ce que le fait qu'Apache soit livr&#233; avec le macOs peut provoquer, lors de mise &#224; jour importante, le remplacement de votre fichier de configuration du service Web http et donc vous amener &#224; devoir refaire les op&#233;rations ci-dessus.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les lignes de commande - Le&#231;on 4 - Installer la pile LAMP</title>
		<link>https://www.syndicatlibre.org/spip.php?article579</link>
		<guid isPermaLink="true">https://www.syndicatlibre.org/spip.php?article579</guid>
		<dc:date>2023-09-30T05:36:24Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vincent CALLIES</dc:creator>



		<description>
&lt;p&gt;Apr&#232;s avoir apr&#232;s &#224; ouvrir le Terminal sous macOS (le&#231;on 1), &#224; l'utiliser et &#224; faire un script Shell (le&#231;on 2), nous avons appris &#224; installer une solution telle que ImageMagick avec ses d&#233;pendances en utilisant le gestionnaire de paquets Homebrew (le&#231;on 3). &lt;br class='autobr' /&gt;
Certaines des applications Web open source les plus utilis&#233;es actuellement, comme par exemple WordPress, Drupal ou SPIP s'ex&#233;cutent sur LAMP et s'installent avec Composer. La pile LAMP a &#233;t&#233; l'une des premi&#232;res piles logicielles open (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.syndicatlibre.org/spip.php?rubrique120" rel="directory"&gt;Les lignes de commande sous macOS&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-9&#034; id=&#034;nav69f4cc3f462019.42138883&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-Demarrer-le-serveur-HTTP-Apache-en-ligne-de-commande&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-Demarrer-le-serveur-HTTP-Apache-en-ligne-de-commande&#034; class=&#034;spip_ancre&#034;&gt;1. D&#233;marrer le serveur HTTP Apache en ligne de commande&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-1-le-serveur-natif-sur-macOS&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-1-le-serveur-natif-sur-macOS&#034; class=&#034;spip_ancre&#034;&gt;1.1. le serveur natif sur macOS&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t1-2-Installer-et-demarrer-un-nouveau-serveur&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-2-Installer-et-demarrer-un-nouveau-serveur&#034; class=&#034;spip_ancre&#034;&gt;1.2. Installer et d&#233;marrer un nouveau serveur&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-Installer-le-gestionnaire-de-paquets-Composer&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-Installer-le-gestionnaire-de-paquets-Composer&#034; class=&#034;spip_ancre&#034;&gt;2. Installer le gestionnaire de paquets Composer&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t3-Installer-un-systeme-de-gestion-de-bases-de-donnees-relationnelles-MySQL&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-Installer-un-systeme-de-gestion-de-bases-de-donnees-relationnelles-MySQL&#034; class=&#034;spip_ancre&#034;&gt;3. Installer un syst&#232;me de gestion de bases de donn&#233;es relationnelles : MySQL&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t3-1-Installer-MySQL-avec-Homebrew&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-1-Installer-MySQL-avec-Homebrew&#034; class=&#034;spip_ancre&#034;&gt;3.1 Installer MySQL avec Homebrew&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t3-1-Demarrer-et-arrete-le-serveur-MySQL&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-1-Demarrer-et-arrete-le-serveur-MySQL&#034; class=&#034;spip_ancre&#034;&gt;3.1 D&#233;marrer et arr&#234;t&#233; le serveur MySQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t3-1-se-connecter-a-la-console-et-travailler&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-1-se-connecter-a-la-console-et-travailler&#034; class=&#034;spip_ancre&#034;&gt;3.1 se connecter &#224; la console &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql&lt;/code&gt; et travailler&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Conclusion&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Conclusion&#034; class=&#034;spip_ancre&#034;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;Apr&#232;s avoir apr&#232;s &#224; ouvrir le &lt;strong&gt;Terminal&lt;/strong&gt; sous macOS (&lt;a href='https://www.syndicatlibre.org/spip.php?article574' class=&#034;spip_in&#034;&gt;le&#231;on 1&lt;/a&gt;), &#224; l'utiliser et &#224; faire un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script Shell&lt;/code&gt; (&lt;a href='https://www.syndicatlibre.org/spip.php?article575' class=&#034;spip_in&#034;&gt;le&#231;on 2&lt;/a&gt;), nous avons appris &#224; installer une solution telle que &lt;strong&gt;ImageMagick&lt;/strong&gt; avec ses d&#233;pendances en utilisant le gestionnaire de paquets &lt;strong&gt;Homebrew&lt;/strong&gt; (&lt;a href='https://www.syndicatlibre.org/spip.php?article576' class=&#034;spip_in&#034;&gt;le&#231;on 3&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Certaines des applications Web open source les plus utilis&#233;es actuellement, comme par exemple WordPress, Drupal ou SPIP s'ex&#233;cutent sur LAMP et s'installent avec Composer. &lt;strong&gt;La pile LAMP&lt;/strong&gt; a &#233;t&#233; l'une des premi&#232;res piles logicielles open source pour le Web. LAMP est l'acronyme de Linux, Apache, MySQL et PHP. Ensemble, ils constituent un ensemble de logiciels &#233;prouv&#233;s pour la cr&#233;ation d'applications Web performantes. Quoi de plus naturel, dans cette formation, que d'apprendre &#224; utiliser la pile LAMP en ligne de commande ! Et nous verrons comme install&#233; Composer, qui n'est - ni plus ni moins - qu'un concurrent de Homebrew.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t1-Demarrer-le-serveur-HTTP-Apache-en-ligne-de-commande'&gt;1. D&#233;marrer le serveur HTTP Apache en ligne de commande&lt;a class='sommaire-back sommaire-back-9' href='#s-t1-Demarrer-le-serveur-HTTP-Apache-en-ligne-de-commande' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 class=&#034;h3&#034; id='t1-1-le-serveur-natif-sur-macOS'&gt; 1.1. le serveur natif sur macOS&lt;a class='sommaire-back sommaire-back-9' href='#s-t1-1-le-serveur-natif-sur-macOS' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Nous avons un serveur HTTP nativement install&#233; sur macOS, c'est le serveur Apache. Pour connaitre sa version, entrer la ligne de commande suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;httpd -v&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Mais si l'on va sur Safari et que l'on entre l'URL &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost&lt;/code&gt; pour voir ce serveur local, il ne se passera rien. Il faut d&#233;marrer le serveur pr&#233;alablement. &lt;br class='autobr' /&gt;
C'est la commande apachectl qui permet de le faire. Une aide peut &#234;tre obtenue sur cette commande via la ligne de commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;apachectl -help&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour d&#233;marrer le serveur Apache, entrer la ligne de commande ci-dessous (Le syst&#232;me d'exploitation vous demandera de confirmer votre autorisation pour une telle d&#233;marche en sollicitant votre mot de passe) :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo apachectl start&lt;/code&gt;&lt;br class='autobr' /&gt;
L'arr&#234;t du serveur se fait par :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo apachectl stop&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si l'on va sur Safari et que l'on entre l'URL &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost&lt;/code&gt; pour voir le serveur local dument d&#233;marr&#233;, il affichera &#171; &lt;i&gt;It works !&lt;/i&gt; &#187; [en], ce qui veut dire, en anglais, &lt;i&gt;Cela marche !&lt;/i&gt;. C'est le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html.en&lt;/code&gt; qui affiche ce message en HTML. Vous le trouverez avec le Finder dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Biblioth&#232;que/WebServer/Documents&lt;/code&gt;. Mais ne c&#233;dons pas &#224; la facilit&#233;.&lt;/p&gt;
&lt;p&gt;Tentons de retrouver en ligne de commande le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;index.html.en&lt;/code&gt; en utilisant la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;find&lt;/code&gt;. Il faut tout d'abord se placer &#224; la racine pour acc&#233;der aux fichiers system.&lt;br class='autobr' /&gt;
depuis le r&#233;pertoire utilisateur, remonter &#224; la racine par diff&#233;rentes commandes successives :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd ..&lt;/code&gt;&lt;br class='autobr' /&gt;
Puis, arriv&#233; &#224; la racine, tapez :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd Library/WebServer/Documents&lt;/code&gt;&lt;br class='autobr' /&gt;
Puis tapez&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo vim index.html.en&lt;/code&gt;&lt;br class='autobr' /&gt;
Modifier &#171; &lt;i&gt;It works !&lt;/i&gt; &#187; par &#171; &lt;i&gt;We are in ./Library/WebServer/Documents&lt;/i&gt; &#187;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t1-2-Installer-et-demarrer-un-nouveau-serveur'&gt; 1.2. Installer et d&#233;marrer un nouveau serveur&lt;a class='sommaire-back sommaire-back-9' href='#s-t1-2-Installer-et-demarrer-un-nouveau-serveur' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Vous pouvez souhaitez installer un serveur avec Homebrew en plus du serveur existant, pour une multitude de raisons dont celle de pouvoir mettre &#224; jour le serveur facilement et automatiquement, ou encore pour ne pas vous soucier des changements induits par les mises &#224; jour de MacOs sur l'application native.&lt;/p&gt;
&lt;p&gt;L'installation d'Apache se fait par la ligne de commande suivant :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew install httpd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Par d&#233;faut, le serveur httpd install&#233; par Homebrew utilise un port diff&#233;rent de celui de l'installation standard de macOS. Ainsi il est possible d'utiliser les deux en m&#234;me temps.&lt;/p&gt;
&lt;p&gt;Vous pouvez appeler votre nouveau serveur via l'URL&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;http://localhost:8080&lt;/code&gt;&lt;br class='autobr' /&gt;
Vous pouvez aussi l'appeler en ligne de commande, et la console vous indiquera alors le code HTML non interpr&#233;t&#233; :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;curl localhost:8080&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le port &#224; utiliser par d&#233;faut est indiqu&#233; dans le fichier de configuration. Si vous &#233;ditez ce fichier avec une application en ligne de commande (ici vim)&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim /opt/homebrew/etc/httpd/httpd.conf&lt;/code&gt;&lt;br class='autobr' /&gt;
vous devriez voir une ligne indiquant :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Listen 8080&lt;/code&gt;&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t2-Installer-le-gestionnaire-de-paquets-Composer'&gt;2. Installer le gestionnaire de paquets Composer&lt;a class='sommaire-back sommaire-back-9' href='#s-t2-Installer-le-gestionnaire-de-paquets-Composer' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Composer est un gestionnaire de paquets utilis&#233; assez universellement. Il est &#233;crit en php. Homebrew vous permet de l'installer, avec ses d&#233;pendances, dont le php. Vous pourrez utiliser les deux gestionnaires de paquets parall&#232;lement, Homebrew et Composer.&lt;/p&gt;
&lt;p&gt;Une simple ligne de commande vous permet d'installer composer avec l'aide de son concurrent Homebrew.&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew install composer&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Homebrew installera les d&#233;pendances de composer : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;apr&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ca-certificates&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;openssl@3&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;apr-util&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;argon2&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;aspell&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;autoconf&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libunistring&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libidn2&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libnghttp2&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libssh2&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;openldap&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rtmpdump&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;curl&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;unixodbc&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;freetds&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libavif&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;gd&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;gmp&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;icu4c&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;krb5&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libpq&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libsodium&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libzip&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;oniguruma&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;readline&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sqlite&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tidy-html5&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;php&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Php est le langage dans lequel est &#233;crit Composer. Pour m&#233;moire, Homebrew est &#233;crit en Ruby. Pour connaitre la version de Php install&#233;e, la ligne de commande suivante peut &#234;tre saisie :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;php --version&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Php est lui-m&#234;me install&#233; avec des d&#233;pendances appel&#233;es &lt;i&gt;modules&lt;/i&gt;. Pour connaitre les modules install&#233;s avec php, vous pouvez passer la ligne de commande suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;php -m&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous remarquerez que Homebrew est capable de mutualiser les d&#233;pendances. C'est un des pr&#233;cieux avantages des gestionnaires de paquets. Dans le descriptif de l'installation de Composer, certains &#233;l&#233;ments pr&#233;c&#233;demment install&#233;s avec ImageMagick dans la &lt;a href='https://www.syndicatlibre.org/spip.php?article576' class=&#034;spip_in&#034;&gt;le&#231;on 3&lt;/a&gt; sont d&#233;clar&#233;s comme &#171; &lt;i&gt;Already downloaded&lt;/i&gt; &#187; [en] c'est &#224; dire &lt;i&gt;d&#233;j&#224; t&#233;l&#233;charg&#233;s&lt;/i&gt;.&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Note : Si l'on prend le temps d'un bilan, macOS est un syst&#232;me &lt;strong&gt;Linux&lt;/strong&gt; que nous avons appris &#224; utiliser avec le Terminal. Nous avons un serveur &lt;strong&gt;Apache&lt;/strong&gt; nativement sur notre ordinateur et le &lt;strong&gt;PHP&lt;/strong&gt; maintenant install&#233; avec Composer. Pour avoir une pile LAMP compl&#232;te, il nous manque &lt;strong&gt;MySQL&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 class=&#034;h2&#034; id='t3-Installer-un-systeme-de-gestion-de-bases-de-donnees-relationnelles-MySQL'&gt;3. Installer un syst&#232;me de gestion de bases de donn&#233;es relationnelles : MySQL&lt;a class='sommaire-back sommaire-back-9' href='#s-t3-Installer-un-systeme-de-gestion-de-bases-de-donnees-relationnelles-MySQL' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 class=&#034;h3&#034; id='t3-1-Installer-MySQL-avec-Homebrew'&gt; 3.1 Installer MySQL avec Homebrew&lt;a class='sommaire-back sommaire-back-9' href='#s-t3-1-Installer-MySQL-avec-Homebrew' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;L'installation du serveur de bases de donn&#233;es se fera tr&#232;s simplement, avec Homebrew, en saisissant la ligne de commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew install mysql&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t3-1-Demarrer-et-arrete-le-serveur-MySQL'&gt; 3.1 D&#233;marrer et arr&#234;t&#233; le serveur MySQL&lt;a class='sommaire-back sommaire-back-9' href='#s-t3-1-Demarrer-et-arrete-le-serveur-MySQL' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;On lance le serveur :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql.server start&lt;/code&gt;&lt;br class='autobr' /&gt;
On le stoppera lorsque n&#233;cessaire avec la ligne de commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql.server stop&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;En attendant, et d'ailleurs Homebrew vous le rappelle, il faut s&#233;curiser l'installation :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql_secure_installation&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;L'installation vous posera diff&#233;rentes questions.&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Note : Homebrew peut avoir installer un ex&#233;cutable (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;homebrew.mxcl.mysql.plist&lt;/code&gt;) au lancement de votre ordinateur. Cet ex&#233;cutable lance &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysqld_safe&lt;/code&gt; qui va &#224; son tour lancer ou arr&#234;ter le serveur de bases de donn&#233;e en m&#234;me temps que le d&#233;marrage ou l'extinction de votre ordinateur. Si vous souhaitez d&#233;sactiver mysqld_safe, vous pouvez aller dans l'application R&#233;glages syst&#232;me | G&#233;n&#233;ral | Ouverture et d&#233;s&#233;lectionner &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysqld_safe&lt;/code&gt;. Vous aurez &#224; lancer ou &#233;teindre le serveur de bases de donn&#233;e vous-m&#234;me.&lt;br class='autobr' /&gt;
Pour en savoir plus : dev.mysql.com &lt;a href=&#034;https://dev.mysql.com/doc/refman/8.0/en/mysqld-safe.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;4.3.2 mysqld_safe &#8212; MySQL Server Startup Script&lt;/a&gt; [en]&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3 class=&#034;h3&#034; id='t3-1-se-connecter-a-la-console-et-travailler'&gt; 3.1 se connecter &#224; la console &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql&lt;/code&gt; et travailler&lt;a class='sommaire-back sommaire-back-9' href='#s-t3-1-se-connecter-a-la-console-et-travailler' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;On peut ensuite se connecter &#224; mysql en lui sp&#233;cifiant l'utilisateur avec le param&#232;tre -u. &lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql -u root -p&lt;/code&gt;&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Note : Si vous souhaitez fournir votre mot de passe sur la ligne de commande apr&#232;s l'option &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;-p&lt;/code&gt; (pour &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;password&lt;/code&gt; ce qui veut dire &lt;i&gt;mot de passe&lt;/i&gt; en anglais), vous devez le faire sans espace interm&#233;diaire (par exemple, en tant que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;-pmotdepasse&lt;/code&gt;, et non en tant que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;-p motdepasse&lt;/code&gt;). Cependant, pour des raisons de s&#233;curit&#233;, il n'est pas recommand&#233; de mettre votre mot de passe sur la ligne de commande. Il est pr&#233;f&#233;rable de la saisir &#224; l'invitation de la console.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour connaitre les bases de donn&#233;es existantes, vous pouvez entrer la commande suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;SHOW DATABASES;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Travailler avec MySQL c'est aussi faire face aux erreurs que l'on commettra et donc aller regarder les journaux (dit &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;log&lt;/code&gt; en anglais) des diff&#233;rentes erreurs. Les principaux journaux sont les suivants :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id3376_c0'&gt;Nom du journal&lt;/th&gt;&lt;th id='id3376_c1'&gt;cli MySQL&lt;/th&gt;&lt;th id='id3376_c2'&gt;Utilit&#233;&lt;/th&gt;&lt;th id='id3376_c3'&gt;Activation&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id3376_c0'&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;log_error&lt;/code&gt;&lt;/td&gt;
&lt;td headers='id3376_c1'&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;show variables like 'log_error%';&lt;/code&gt;&lt;/td&gt;
&lt;td headers='id3376_c2'&gt;Pour les erreurs&lt;/td&gt;
&lt;td headers='id3376_c3'&gt;activ&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id3376_c0'&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;general_log_file&lt;/code&gt;&lt;/td&gt;
&lt;td headers='id3376_c1'&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;show variables like 'general_log%';&lt;/code&gt;&lt;/td&gt;
&lt;td headers='id3376_c2'&gt;pour les requ&#234;tes&lt;/td&gt;
&lt;td headers='id3376_c3'&gt;&#224; activer&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id3376_c0'&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;slow_query_log_file&lt;/code&gt;&lt;/td&gt;
&lt;td headers='id3376_c1'&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;show variables like 'slow_query_log%';&lt;/code&gt;&lt;/td&gt;
&lt;td headers='id3376_c2'&gt;pour les requ&#234;tes anormalement lente&lt;/td&gt;
&lt;td headers='id3376_c3'&gt;&#224; activer&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;La commande pour connaitre le r&#233;pertoire des &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;logs&lt;/code&gt; est la suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;SELECT @@datadir;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;apr&#232;s avoir quitt&#233; la console mysql par la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;exit&lt;/code&gt;, vous pouvez vous positionner sur le r&#233;pertoire pertinent avec la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd $HOMEBREW_REPOSITORY/var/mysql&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour activer d&#232;s le d&#233;marrage les logs &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;general_log&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;slow_query_log&lt;/code&gt;, &#233;diter la configuration de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mysql&lt;/code&gt; :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim $HOMEBREW_REPOSITORY/etc/my.cnf&lt;/code&gt;&lt;br class='autobr' /&gt;
La lecture de ce fichier vous permettra de constater que Homebrew a s&#233;curis&#233; votre serveur n'autorisant que les connexions venant de localhost.&lt;br class='autobr' /&gt;
Vous pouvez ajouter les lignes suivantes pour y activer le log &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;general_log&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;slow_query_log&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;general_log = 1 slow_query_log = 1 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour en savoir plus sur les &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;logs&lt;/code&gt; : dev.mysql.com &lt;a href=&#034;https://dev.mysql.com/doc/refman/8.0/en/server-logs.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;5.4 MySQL Server Logs&lt;/a&gt; [en]&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='Conclusion'&gt;Conclusion&lt;a class='sommaire-back sommaire-back-9' href='#s-Conclusion' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Le &lt;span class='marque_synper'&gt;SYNPER&lt;/span&gt; donne des formations d'initiation &#224; la programmation. Les articles de cette rubrique accompagnent une formation sur &lt;i&gt;les lignes de commande avec macOS&lt;/i&gt;.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Un &lt;a href='https://www.syndicatlibre.org/spip.php?article574' class=&#034;spip_in&#034;&gt;premier article&lt;/a&gt; qui vous a appris &#224; passer des commandes sous Linux.&lt;/li&gt;&lt;li&gt; Un &lt;a href='https://www.syndicatlibre.org/spip.php?article575' class=&#034;spip_in&#034;&gt;second article&lt;/a&gt; vous a appris &#224; regrouper ces commandes et les ex&#233;cuter depuis un fichier.&lt;/li&gt;&lt;li&gt; Le &lt;a href='https://www.syndicatlibre.org/spip.php?article576' class=&#034;spip_in&#034;&gt;troisi&#232;me article&lt;/a&gt; vous a appris &#224; appeler un d&#233;p&#244;t et proc&#233;der &#224; une installation par paquets.&lt;/li&gt;&lt;li&gt; Le pr&#233;sent article vous a appris &#224; utiliser la Pile LAMP en ligne de commande. C'est une &#233;tape tr&#232;s importante. Cette Pile est grandement utilis&#233;e.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les lignes de commande - Le&#231;on 3 - La gestion des d&#233;pendances avec l'exemple d'ImageMagick</title>
		<link>https://www.syndicatlibre.org/spip.php?article576</link>
		<guid isPermaLink="true">https://www.syndicatlibre.org/spip.php?article576</guid>
		<dc:date>2023-09-29T16:23:35Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vincent CALLIES</dc:creator>



		<description>
&lt;p&gt;Lorsque l'on a un iPhone, les photographies sont enregistr&#233;es au format HEIC. Il est souvent utile de pouvoir les convertir en JPEG afin de les partager plus universellement. Il y a de merveilleux scripts sp&#233;cialis&#233;s dans cette tache et qui s'ex&#233;cutent en ligne de commande. L'un de ceux-ci s'appelle ImageMagick. L'installation sur votre Mac de cette solution est un parfait exemple pour notre exercice qui vient compl&#233;ter la le&#231;on 1 et la le&#231;on 2. &lt;br class='autobr' /&gt;
L'installation d'ImageMagick sera l'occasion (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.syndicatlibre.org/spip.php?rubrique120" rel="directory"&gt;Les lignes de commande sous macOS&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-8&#034; id=&#034;nav69e8a4d8bfddc4.01423911&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Telecharger-l-archive-de-ImageMagick-et-la-decompresser&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Telecharger-l-archive-de-ImageMagick-et-la-decompresser&#034; class=&#034;spip_ancre&#034;&gt;T&#233;l&#233;charger l'archive de ImageMagick et la d&#233;compresser&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-Installer-ImageMagick-directement-depuis-son-depot-GitHub&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-Installer-ImageMagick-directement-depuis-son-depot-GitHub&#034; class=&#034;spip_ancre&#034;&gt;1. Installer ImageMagick directement depuis son d&#233;p&#244;t GitHub&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-1-Creer-des-variables-d-environnement-permanentes&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-1-Creer-des-variables-d-environnement-permanentes&#034; class=&#034;spip_ancre&#034;&gt;1.1 Cr&#233;er des variables d'environnement permanentes&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t1-2-utiliser-ImageMagick&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-2-utiliser-ImageMagick&#034; class=&#034;spip_ancre&#034;&gt;1.2 utiliser ImageMagick&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-Installer-ImageMagick-avec-l-aide-de-Homebrew&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-Installer-ImageMagick-avec-l-aide-de-Homebrew&#034; class=&#034;spip_ancre&#034;&gt;2. Installer ImageMagick avec l'aide de Homebrew&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t2-1-Les-liens-symboliques-crees-par-Homebrew&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-1-Les-liens-symboliques-crees-par-Homebrew&#034; class=&#034;spip_ancre&#034;&gt;2.1 Les liens symboliques cr&#233;&#233;s par Homebrew&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-2-Utiliser-ImageMagick&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-2-Utiliser-ImageMagick&#034; class=&#034;spip_ancre&#034;&gt;2.2 Utiliser ImageMagick&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Conclusion&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Conclusion&#034; class=&#034;spip_ancre&#034;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;Lorsque l'on a un iPhone, les photographies sont enregistr&#233;es au format HEIC. Il est souvent utile de pouvoir les convertir en JPEG afin de les partager plus universellement. Il y a de merveilleux scripts sp&#233;cialis&#233;s dans cette tache et qui s'ex&#233;cutent en ligne de commande. L'un de ceux-ci s'appelle &lt;strong&gt;ImageMagick&lt;/strong&gt;. L'installation sur votre Mac de cette solution est un parfait exemple pour notre exercice qui vient compl&#233;ter la &lt;a href='https://www.syndicatlibre.org/spip.php?article574' class=&#034;spip_in&#034;&gt;le&#231;on 1&lt;/a&gt; et la &lt;a href='https://www.syndicatlibre.org/spip.php?article575' class=&#034;spip_in&#034;&gt;le&#231;on 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;L'installation d'ImageMagick sera l'occasion de d&#233;couvrir la difficult&#233; de g&#233;rer les d&#233;pendances. En effet, cette solution logicielle a besoin d'une biblioth&#232;que de librairies pour convertir dans diff&#233;rents formats des images graphiques. Vous aurez alors deux solutions : les installer une &#224; une depuis leurs &lt;strong&gt;d&#233;p&#244;ts&lt;/strong&gt; ou utiliser un &lt;strong&gt;gestionnaire de paquets&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='Telecharger-l-archive-de-ImageMagick-et-la-decompresser'&gt;T&#233;l&#233;charger l'archive de ImageMagick et la d&#233;compresser&lt;a class='sommaire-back sommaire-back-8' href='#s-Telecharger-l-archive-de-ImageMagick-et-la-decompresser' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il est bien sur possible de t&#233;l&#233;charger ce logiciel depuis un &lt;strong&gt;depot&lt;/strong&gt; sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;GitHub&lt;/code&gt;. Mais cela va demander d'installer ses d&#233;pendances une &#224; une.&lt;br class='autobr' /&gt;
Pour faciliter une installation complexe, il existe des &lt;strong&gt;gestionnaires de paquets&lt;/strong&gt;. Le plus c&#233;l&#232;bre sur maxOS est &#233;crit en Ruby et appel&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Homebrew&lt;/code&gt;. Il va permettre d'installer en une fois &lt;strong&gt;ImageMagick&lt;/strong&gt; et un ensemble de d&#233;pendances.&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t1-Installer-ImageMagick-directement-depuis-son-depot-GitHub'&gt; 1. Installer ImageMagick directement depuis son d&#233;p&#244;t GitHub&lt;a class='sommaire-back sommaire-back-8' href='#s-t1-Installer-ImageMagick-directement-depuis-son-depot-GitHub' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Apr&#232;s avoir ouvert le Terminal, placez vous dans le r&#233;pertoire par d&#233;faut :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd $HOME&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://imagemagick.org/index.php&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ImageMagick&lt;/a&gt; est une solution en OpenSource qui facilite la conversion dans diff&#233;rents formats. Il convient tout d'abord de t&#233;l&#233;charger les scripts, ce que nous vous proposons de faire avec la ligne de commande suivante :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;git clone https://github.com/ImageMagick/ImageMagick.git ImageMagick-7.1.1&lt;/code&gt;&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Note : Il peut vous &#234;tre n&#233;cessaire d'installer pr&#233;alablement la &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Command Line Developper Tools&lt;/code&gt; d'Apple. En tant que de besoin, la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;xcode-select --install&lt;/code&gt; vous permettra de le faire. Si vous voulez savoir si cet &#233;l&#233;ment est d&#233;j&#224; install&#233;, saisissez la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;xcode-select -p&lt;/code&gt; qui vous indiquera le cas &#233;ch&#233;ant o&#249; il a &#233;t&#233; install&#233;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;V&#233;rifier qu'un r&#233;pertoire a &#233;t&#233; cr&#233;&#233; pour ImageMagick&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls&lt;/code&gt;&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='t1-1-Creer-des-variables-d-environnement-permanentes'&gt; 1.1 Cr&#233;er des variables d'environnement permanentes&lt;a class='sommaire-back sommaire-back-8' href='#s-t1-1-Creer-des-variables-d-environnement-permanentes' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Lorsque vous avez pass&#233; la ligne de commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd $HOME&lt;/code&gt;, vous avez utilis&#233; une variable d'environnement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$HOME&lt;/code&gt;. Pour connaitre toutes ces variables, vous pouvez saisir la commande suivante :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;export -p&lt;/code&gt;&lt;br class='autobr' /&gt;
ou&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;printenv&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Nous allons cr&#233;er deux variables d'environnement permanentes pour l'utilisation de Magick. Cela nous facilitera les lignes de commande &#224; saisir pour notre travail ult&#233;rieur.&lt;/p&gt;
&lt;p&gt;C'est un script qui accueille ces raccourcis invisibles. Vous pouvez ne pouvez pas voir ces fichiers invisibles lors de la consultation de la liste du contenu d'un r&#233;pertoire par la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls&lt;/code&gt;. Mais un argument vous permettra de voir tous les fichiers invisibles :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls -a&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Nous allons &#233;diter le fichier invisible .profile avec le CLI &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim&lt;/code&gt; (voir l'article pr&#233;c&#233;dent si besoin) :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim .profile&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Nous allons &#233;crire (tapez i pour l'indiquer au logiciel votre intention) et saisissez les lignes suivantes :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;export MAGICK_HOME=&#034;$HOME/ImageMagick-7.1.1&#034; export PATH=&#034;$MAGICK_HOME/bin:$PATH&#034; export DYLD_LIBRARY_PATH=&#034;$MAGICK_HOME/lib/&#034;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;quittez le CLI et enregistrer votre fichier (Pour &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim&lt;/code&gt; il faut enregistrer les modifications avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;:w&lt;/code&gt; et pour quitter &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;:q&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Activer le fichier modifier par la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;source .profile&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;V&#233;rifier que tout fonctionne en demandant &#224; ce que la variable MAGICK_HOME soit affich&#233;e :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo $MAGICK_HOME&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Placez-vous dans le r&#233;pertoire avec la commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd ImageMagick-7.1.1&lt;/code&gt;&lt;br class='autobr' /&gt;
ou&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd $MAGICK_HOME&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;tapez&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;./configure --with-modules&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;tapez&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sudo make install&lt;/code&gt;&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='t1-2-utiliser-ImageMagick'&gt; 1.2 utiliser ImageMagick&lt;a class='sommaire-back sommaire-back-8' href='#s-t1-2-utiliser-ImageMagick' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;L'utilisation de &lt;a href=&#034;https://imagemagick.org/Usage/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ImageMagick&lt;/a&gt; vous permet d'avoir acc&#232;s &#224; de nombreux format de conversion. Pour avoir un aper&#231;u de comment utiliser sa commande convert, tapez :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;convert --help&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;V&#233;rifiez que vous avez bien les formats voulus :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;magick identify -list format&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si le format JPG manque, regarder &lt;a href=&#034;https://imagemagick.org/script/formats.php&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la librairie utilis&#233;e par imagemagick&lt;/a&gt; et installez l&#224;. Ce sont sans doute ces derni&#232;res complications qui vous inviterons &#224; prendre la seconde solution d'installation avec Brew.&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-Installer-ImageMagick-avec-l-aide-de-Homebrew'&gt; 2. Installer ImageMagick avec l'aide de Homebrew&lt;a class='sommaire-back sommaire-back-8' href='#s-t2-Installer-ImageMagick-avec-l-aide-de-Homebrew' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Installez pr&#233;alablement &lt;a href=&#034;https://brew.sh/fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;brew&lt;/a&gt; avec la ligne de commande recommand&#233;e sur leur site. Homebrew est &#233;crit en Ruby, qui est un langage install&#233; d'origine sur votre macOS (et m&#234;me pr&#233;c&#233;demment Mac OS X).&lt;/p&gt;
&lt;p&gt;Une fois ce &lt;strong&gt;gestionnaire de paquets&lt;/strong&gt; install&#233;, vous aurez acc&#232;s &#224; de nombreux packages, appel&#233;s &lt;a href='https://www.syndicatlibre.org/.https:/formulae.brew.sh/formula/'&gt;formula&lt;/a&gt;, vous permettant d'installer des solutions int&#233;gr&#233;e dont celle d'&lt;a href=&#034;https://formulae.brew.sh/formula/imagemagick&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ImageMagick&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Apr&#232;s l'installation de Homebrew, en une seule ligne de commande vous permet d'installer ImageMagick et ses d&#233;pendances :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew install imagemagick&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Seront install&#233;es toutes les d&#233;pendances n&#233;cessaires : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libpng&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;freetype&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;fontconfig&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;jbig2dec&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;jpeg-turbo&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libidn&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;xz&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;lz4&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;zstd&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libtiff&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;little-cms2&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;openjpeg&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ghostscript&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brotli&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;giflib&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;highway&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;imath&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;openexr&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;webp&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;jpeg-xl&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libvmaf&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;aom&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libde265&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pcre2&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;gettext&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;glib&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;shared-mime-info&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;x265&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libheif&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;liblqr&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;jasper&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libomp&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libraw&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;m4&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;libtool&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Homebrew installe les paquets dans leurs propres r&#233;pertoires vers /opt/homebrew. Pour savoir o&#249; est situ&#233; ce r&#233;pertoire, saisissez la ligne de commande :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo $HOMEBREW_REPOSITORY&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour avoir la liste des logiciels install&#233; par Brew :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;brew list -v&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour avoir une description du fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Brew&lt;/code&gt; lui-m&#234;me&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls -ail $HOMEBREW_REPOSITORY/bin/Brew&lt;/code&gt;&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='t2-1-Les-liens-symboliques-crees-par-Homebrew'&gt; 2.1 Les liens symboliques cr&#233;&#233;s par Homebrew&lt;a class='sommaire-back sommaire-back-8' href='#s-t2-1-Les-liens-symboliques-crees-par-Homebrew' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Homebrew installe les paquets dans leurs propres r&#233;pertoires et cr&#233;e des liens symboliques de leurs fichiers vers /opt/homebrew. &lt;br class='autobr' /&gt;
Un lien symbolique est un raccourci.&lt;/p&gt;
&lt;p&gt;Pour connaitre les liens symboliques existants :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls -l&lt;/code&gt;&lt;/p&gt;
&lt;h4 class=&#034;h4&#034; id='t2-2-Utiliser-ImageMagick'&gt; 2.2 Utiliser ImageMagick&lt;a class='sommaire-back sommaire-back-8' href='#s-t2-2-Utiliser-ImageMagick' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;La conversion se fait tr&#232;s simplement, d'un fichier en HEIC que vous voulez convertir en un fichier jpg&lt;/p&gt;
&lt;p&gt;V&#233;rifiez que vous avez bien les formats voulus :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;magick identify -list format&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Placez vous dans le r&#233;pertoire de vos photos, cela vous &#233;vitera de devoir sp&#233;cifier les chemins d'acc&#232;s.&lt;/p&gt;
&lt;p&gt;Pour convertir un fichier pr&#233;cis (ici &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;IMG_1119.HEIC&lt;/code&gt;)&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;magick convert IMG_1119.HEIC -quality 80% IMG_1119.jpg&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour convertir tous les fichiers du r&#233;pertoire&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mogrify -format jpg -quality 80% *.HEIC&lt;/code&gt;&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Note : Il serait possible, avec Pixelmator Pro 2.2 et la nouvelle application Raccourcis pour Mac d'effectuer ce travail de conversion d'images.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 class=&#034;h2&#034; id='Conclusion'&gt;Conclusion&lt;a class='sommaire-back sommaire-back-8' href='#s-Conclusion' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Le &lt;span class='marque_synper'&gt;SYNPER&lt;/span&gt; donne des formations d'initiation &#224; la programmation. Les articles de cette rubrique accompagnent une formation sur &lt;i&gt;les lignes de commande avec macOS&lt;/i&gt;.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Un &lt;a href='https://www.syndicatlibre.org/spip.php?article574' class=&#034;spip_in&#034;&gt;premier article&lt;/a&gt; qui vous a appris &#224; passer des commandes UNIX.&lt;/li&gt;&lt;li&gt; Un &lt;a href='https://www.syndicatlibre.org/spip.php?article575' class=&#034;spip_in&#034;&gt;second article&lt;/a&gt; vous a appris &#224; regrouper ces commandes et les ex&#233;cuter depuis un fichier.&lt;/li&gt;&lt;li&gt; Le pr&#233;sent article vous a appris &#224; appeler un d&#233;p&#244;t et proc&#233;der &#224; une installation par paquets. Ce sont des op&#233;rations importantes &#224; savoir faire pour utiliser tous les outils disponibles en open-source.&lt;/li&gt;&lt;li&gt; Le &lt;a href='https://www.syndicatlibre.org/spip.php?article579' class=&#034;spip_in&#034;&gt;prochain article&lt;/a&gt; vous proposera de jongler avec la Pile LAMP en ligne de commande.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les lignes de commande - Le&#231;on 2 - Le `script Shell`</title>
		<link>https://www.syndicatlibre.org/spip.php?article575</link>
		<guid isPermaLink="true">https://www.syndicatlibre.org/spip.php?article575</guid>
		<dc:date>2023-09-22T08:04:21Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vincent CALLIES</dc:creator>



		<description>
&lt;p&gt;Le pr&#233;sent article porte sur ce qu'est un script shell. Vous ex&#233;cutez un script shell pour ex&#233;cuter des commandes sans avoir &#224; les saisir dans l'outil de ligne de commande. Un script shell est un fichier texte contenant une ou plusieurs commandes UNIX. Le syst&#232;me d'exploitation macOS est fond&#233; sur un noyau UNIX avec lequel vos lignes de commande vont pouvoir interagir. Sans le savoir, le pr&#233;c&#233;dent article vous a appris &#224; passer des commandes UNIX. Le pr&#233;sent article va vous permettre de (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.syndicatlibre.org/spip.php?rubrique120" rel="directory"&gt;Les lignes de commande sous macOS&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-8&#034; id=&#034;nav69e8a4d8c51857.24874014&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-Creer-un-dans-un-repertoire-ad-hoc&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-Creer-un-dans-un-repertoire-ad-hoc&#034; class=&#034;spip_ancre&#034;&gt;1. Cr&#233;er un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script Shell&lt;/code&gt; dans un r&#233;pertoire ad hoc.&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-1-Creer-le-repertoire&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-1-Creer-le-repertoire&#034; class=&#034;spip_ancre&#034;&gt;1.1 Cr&#233;er le repertoire&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t1-2-Creer-le-fichier&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-2-Creer-le-fichier&#034; class=&#034;spip_ancre&#034;&gt;1.2 Cr&#233;er le fichier&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-Placer-des-instructions-dans-le-script-et-le-rendre-executable&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-Placer-des-instructions-dans-le-script-et-le-rendre-executable&#034; class=&#034;spip_ancre&#034;&gt;2. Placer des instructions dans le script et le rendre ex&#233;cutable&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t2-1-Creer-une-liste-de-commandes&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-1-Creer-une-liste-de-commandes&#034; class=&#034;spip_ancre&#034;&gt;2.1 Cr&#233;er une liste de commandes&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-2-Rendre-le-fichier-executable&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-2-Rendre-le-fichier-executable&#034; class=&#034;spip_ancre&#034;&gt;2.2 Rendre le fichier ex&#233;cutable&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-3-Executer-le-fichier&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-3-Executer-le-fichier&#034; class=&#034;spip_ancre&#034;&gt;2.3 Ex&#233;cuter le fichier&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Conclusion&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Conclusion&#034; class=&#034;spip_ancre&#034;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;Le pr&#233;sent article porte sur ce qu'est un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script shell&lt;/code&gt;. Vous ex&#233;cutez un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script shell&lt;/code&gt; pour ex&#233;cuter des commandes sans avoir &#224; les saisir dans l'outil de ligne de commande.&lt;br class='autobr' /&gt;
Un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script shell&lt;/code&gt; est un fichier texte contenant une ou plusieurs commandes &lt;a href=&#034;https://fr.wikipedia.org/wiki/UNIX&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;UNIX&lt;/a&gt;. Le syst&#232;me d'exploitation macOS est fond&#233; sur un noyau UNIX avec lequel vos lignes de commande vont pouvoir interagir. &lt;br class='autobr' /&gt;
Sans le savoir, le &lt;a href='https://www.syndicatlibre.org/spip.php?article574' class=&#034;spip_in&#034;&gt;pr&#233;c&#233;dent article&lt;/a&gt; vous a appris &#224; passer des commandes UNIX. Le pr&#233;sent article va vous permettre de les regrouper dans un ficher texte et de les ex&#233;cuter d'un coup.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t1-Creer-un-dans-un-repertoire-ad-hoc'&gt;1. Cr&#233;er un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script Shell&lt;/code&gt; dans un r&#233;pertoire ad hoc.&lt;a class='sommaire-back sommaire-back-8' href='#s-t1-Creer-un-dans-un-repertoire-ad-hoc' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 class=&#034;h3&#034; id='t1-1-Creer-le-repertoire'&gt; 1.1 Cr&#233;er le repertoire&lt;a class='sommaire-back sommaire-back-8' href='#s-t1-1-Creer-le-repertoire' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd ~/Documents&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;On se place dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Documents&lt;/code&gt;&lt;/i&gt;&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mkdir Dev&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;On cr&#233;e un r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Dev&lt;/code&gt; avec la commande unix &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mkdir&lt;/code&gt;&lt;/i&gt;&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd Dev&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;On se place dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Dev&lt;/code&gt; nouvellement cr&#233;&#233;&lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t1-2-Creer-le-fichier'&gt; 1.2 Cr&#233;er le fichier&lt;a class='sommaire-back sommaire-back-8' href='#s-t1-2-Creer-le-fichier' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim bonjour.sh&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;On cr&#233;e avec l'&#233;diteur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim&lt;/code&gt; un script d&#233;nomm&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;bonjour.sh&lt;/code&gt;&lt;/i&gt;&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t2-Placer-des-instructions-dans-le-script-et-le-rendre-executable'&gt;2. Placer des instructions dans le script et le rendre ex&#233;cutable&lt;a class='sommaire-back sommaire-back-8' href='#s-t2-Placer-des-instructions-dans-le-script-et-le-rendre-executable' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nous allons faire un script, inutile mais sympathique, qui se contente de dire bonjour &#224; la personne que vous souhaitez. C'est un exercice classique dans le monde de la programmation.&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-1-Creer-une-liste-de-commandes'&gt; 2.1 Cr&#233;er une liste de commandes&lt;a class='sommaire-back sommaire-back-8' href='#s-t2-1-Creer-une-liste-de-commandes' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;PREMIER_ARGUMENT=&#034;$1&#034;&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo &#034;Bonjour, $PREMIER_ARGUMENT !&#034;&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;Dans l'&#233;diteur, nous saisissons les deux lignes suivantes. Puis, pour enregistrer le fichier dans Vim et le quitter, nous appuyons sur les touche Echap+Maj+ZZ.&lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-2-Rendre-le-fichier-executable'&gt; 2.2 Rendre le fichier ex&#233;cutable&lt;a class='sommaire-back sommaire-back-8' href='#s-t2-2-Rendre-le-fichier-executable' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;chmod u+x bonjour.sh&lt;/code&gt;&lt;br class='autobr' /&gt;
ou&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;chmod 755 bonjour.sh&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;Il faut indiquer &#224; l'ordinateur qu'il a le droit d'ex&#233;cuter ce script. L'autorisation se donne par la commande &lt;a href=&#034;https://fr.wikipedia.org/wiki/chmod&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;chmod&lt;/a&gt; suivie d'arguments. &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;chmod 755&lt;/code&gt; donne au propri&#233;taire tous les droits, aux membres du groupe et aux autres les droits de lecture et d'acc&#232;s. La commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;chmod u+x&lt;/code&gt; est plus pr&#233;cise : elle donne &#224; l'utilisateur seulement tous les droits et ne se pr&#233;occupe pas des droit des autres.&lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-3-Executer-le-fichier'&gt; 2.3 Ex&#233;cuter le fichier&lt;a class='sommaire-back sommaire-back-8' href='#s-t2-3-Executer-le-fichier' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;./bonjour.sh Vincent&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;L'execution du script directement n'est pas possible. Il faut le faire reconnaitre comme un script ex&#233;cutable. Vous pouvez essayer de le faire sans cette d&#233;claration pr&#233;alable : vous aurez alors le message d'erreur suivant : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;permission denied: ./bonjour.sh&lt;/code&gt;. L'appel au script &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;bonjour.sh&lt;/code&gt; est suivi d'un argument qui est le pr&#233;nom de la personne que vous voulez saluer.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Le terminal affichera &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Bonjour, Vincent !&lt;/code&gt; en cas de succ&#232;s.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='Conclusion'&gt;Conclusion&lt;a class='sommaire-back sommaire-back-8' href='#s-Conclusion' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Le &lt;span class='marque_synper'&gt;SYNPER&lt;/span&gt; donne des formations d'initiation &#224; la programmation. Les articles de cette rubrique accompagne une formation sur &lt;i&gt;les lignes de commande avec macOS&lt;/i&gt;.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Le &lt;a href='https://www.syndicatlibre.org/spip.php?article574' class=&#034;spip_in&#034;&gt;pr&#233;c&#233;dent article&lt;/a&gt; vous a appris &#224; passer des commandes Linux.&lt;/li&gt;&lt;li&gt; Le pr&#233;sent article vous a appris &#224; regrouper ces commandes et les ex&#233;cuter depuis un fichier.&lt;/li&gt;&lt;li&gt; Le prochain article vous indiquera comme planifier l'ex&#233;cution de ces lignes de commande.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les lignes de commande - Le&#231;on 1 - Le Terminal sous macOS</title>
		<link>https://www.syndicatlibre.org/spip.php?article574</link>
		<guid isPermaLink="true">https://www.syndicatlibre.org/spip.php?article574</guid>
		<dc:date>2023-09-22T08:04:19Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vincent CALLIES</dc:creator>



		<description>
&lt;p&gt;Le Mac est connu pour sa simplicit&#233; d'utilisation et son interface graphique intuitive. Mais il est possible de soulever le capot (ou plut&#244;t l'interface graphique) et de regarder le moteur de la machine. Ce sont les lignes de commande. Pour simplifier, les lignes de commande sont les instructions donn&#233;es lorsque vous cliquez sur une ic&#244;ne. Dans le pr&#233;sent article, vous allez apprendre &#224; vous passer des ic&#244;nes et &#224; donner vous-m&#234;me, directement, ces instructions, au travers du Terminal. &lt;br class='autobr' /&gt;
1. (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.syndicatlibre.org/spip.php?rubrique120" rel="directory"&gt;Les lignes de commande sous macOS&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-13&#034; id=&#034;nav69e8a4d8c97e27.06695877&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-Ouvrir-l-application-Terminal&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-Ouvrir-l-application-Terminal&#034; class=&#034;spip_ancre&#034;&gt;1. Ouvrir l'application Terminal&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t1-1-Qui-suis-je&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-1-Qui-suis-je&#034; class=&#034;spip_ancre&#034;&gt;1.1 Qui suis-je ?&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t1-2-Qui-est-il&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t1-2-Qui-est-il&#034; class=&#034;spip_ancre&#034;&gt;1.2 Qui est-il ?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-Regarder-autour-de-soi&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-Regarder-autour-de-soi&#034; class=&#034;spip_ancre&#034;&gt;2. Regarder autour de soi&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t2-1-Regarder-ou-on-est-ce-que-l-on-a&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-1-Regarder-ou-on-est-ce-que-l-on-a&#034; class=&#034;spip_ancre&#034;&gt;2.1 Regarder o&#249; on est ce que l'on a&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-2-Voyager&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-2-Voyager&#034; class=&#034;spip_ancre&#034;&gt;2.2 Voyager&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-3-Revenir&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-3-Revenir&#034; class=&#034;spip_ancre&#034;&gt;2.3 Revenir&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t2-4-le-fil-d-Ariane&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t2-4-le-fil-d-Ariane&#034; class=&#034;spip_ancre&#034;&gt;2.4 le fil d'Ariane&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t3-Creer-un-fichier-le-modifier-et-le-visualiser&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-Creer-un-fichier-le-modifier-et-le-visualiser&#034; class=&#034;spip_ancre&#034;&gt;3. Cr&#233;er un fichier, le modifier et le visualiser&lt;/a&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-t3-1-Creer-un-fichier&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-1-Creer-un-fichier&#034; class=&#034;spip_ancre&#034;&gt;3.1 Cr&#233;er un fichier&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t3-2-Ajouter-une-ligne-au-fichier-precedemment-cree&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-2-Ajouter-une-ligne-au-fichier-precedemment-cree&#034; class=&#034;spip_ancre&#034;&gt;3.2 Ajouter une ligne au fichier pr&#233;c&#233;demment cr&#233;&#233;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-t3-3-Voir-le-fichier&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#t3-3-Voir-le-fichier&#034; class=&#034;spip_ancre&#034;&gt;3.3 Voir le fichier&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Conclusion&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Conclusion&#034; class=&#034;spip_ancre&#034;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;Le Mac est connu pour sa simplicit&#233; d'utilisation et son interface graphique intuitive. Mais il est possible de soulever le capot (ou plut&#244;t l'interface graphique) et de regarder le moteur de la machine. Ce sont les lignes de commande.&lt;br class='autobr' /&gt;
Pour simplifier, les lignes de commande sont les instructions donn&#233;es lorsque vous cliquez sur une ic&#244;ne. Dans le pr&#233;sent article, vous allez apprendre &#224; vous passer des ic&#244;nes et &#224; donner vous-m&#234;me, directement, ces instructions, au travers du &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Terminal&lt;/code&gt;.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t1-Ouvrir-l-application-Terminal'&gt;1. Ouvrir l'application Terminal&lt;a class='sommaire-back sommaire-back-13' href='#s-t1-Ouvrir-l-application-Terminal' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il y a trois fa&#231;ons d'acc&#233;der &#224; l'application &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Terminal&lt;/code&gt; :&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Depuis le &lt;strong&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Launchpad&lt;/code&gt;&lt;/strong&gt;, Rechercher &#171; Terminal &#187; et ouvrez l'application.&lt;/li&gt;&lt;li&gt; Vous pouvez aussi appuyez sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Commande&lt;/code&gt; + &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Espace&lt;/code&gt;, tapez &#171; Terminal &#187;, puis appuyez sur &#171; Entr&#233;e &#187; pour ouvrir le &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Terminal&lt;/code&gt; &#224; partir de la recherche &lt;strong&gt;Spotlight&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt; Enfin, vous pouvez acc&#233;dez &#224; &lt;strong&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Finder&lt;/code&gt;&lt;/strong&gt;&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Applications&lt;/code&gt;&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Utilitaires&lt;/code&gt;&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Terminal&lt;/code&gt; pour lancer le raccourci &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Terminal&lt;/code&gt;.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Pour en savoir plus :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Guide d'utilisation de macOS : &lt;a href=&#034;https://support.apple.com/fr-fr/guide/mac-help/mh35840/mac&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Utiliser le Launchpad pour afficher et ouvrir des apps sur Mac&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://support.apple.com/fr-fr/guide/terminal/welcome/mac&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Guide d'utilisation de Terminal&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&#034;h3&#034; id='t1-1-Qui-suis-je'&gt; 1.1 Qui suis-je ?&lt;a class='sommaire-back sommaire-back-13' href='#s-t1-1-Qui-suis-je' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;En tant qu'&#233;mulateur de terminal, l'application &lt;strong&gt;Terminal&lt;/strong&gt; fournit un acc&#232;s au syst&#232;me d'exploitation en mode texte gr&#226;ce &#224; une interface en ligne de commande et un shell Unix comme zsh (qui est le shell par d&#233;faut). Ces informations vous sont imm&#233;diatement visibles :&lt;/p&gt;
&lt;p&gt;Le titre de la fen&#234;tre de l'application terminal inclu le mot &lt;strong&gt;wsh&lt;/strong&gt; ce qui vous confirme que vous &#234;tes sur le shell wsh. Si vous voulez connaitre la version de wsh que vous utilisez, saisissez la commande suivante suivi de la touche Entr&#233;e :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;zsh --version&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La ligne de commande d&#233;bute par l'indication de l'utilisateur connect&#233; (vous, en l'occurrence) suivi d'un arobase (le caract&#232;re &#171; @ &#187;). Si vous voulez vous faire peur, vous pouvez saisir la commande suivante suivie de la touche Entr&#233;e qui vous permettra de voir tous les comptes utilisateurs (&lt;i&gt;users&lt;/i&gt; en anglais) sur votre ordinateur.&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;dscacheutil -q user&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t1-2-Qui-est-il'&gt; 1.2 Qui est-il ?&lt;a class='sommaire-back sommaire-back-13' href='#s-t1-2-Qui-est-il' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Saisissez la commande suivante suivie de la touche Entr&#233;e :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;system_profiler SPHardwareDataType&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;La console vous indiquera les r&#233;f&#233;rences du Mac sur lequel il travaille.&lt;/i&gt;&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t2-Regarder-autour-de-soi'&gt;2. Regarder autour de soi&lt;a class='sommaire-back sommaire-back-13' href='#s-t2-Regarder-autour-de-soi' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 class=&#034;h3&#034; id='t2-1-Regarder-ou-on-est-ce-que-l-on-a'&gt; 2.1 Regarder o&#249; on est ce que l'on a&lt;a class='sommaire-back sommaire-back-13' href='#s-t2-1-Regarder-ou-on-est-ce-que-l-on-a' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;La liste des r&#233;pertoires et des fichiers sera affich&#233;e.&lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-2-Voyager'&gt; 2.2 Voyager&lt;a class='sommaire-back sommaire-back-13' href='#s-t2-2-Voyager' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd Documents&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;Si vous avez un r&#233;pertoire Documents, la commande ci-dessus vous permettra de vous y positionner. vous pourrez ensuite regarder son contenu avec la commande &#233;tudi&#233;e pr&#233;c&#233;demment &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls&lt;/code&gt;. &lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-3-Revenir'&gt; 2.3 Revenir&lt;a class='sommaire-back sommaire-back-13' href='#s-t2-3-Revenir' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd ..&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;Deux points repr&#233;sentent le dossier parent du dossier actuellement ouvert. &lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t2-4-le-fil-d-Ariane'&gt; 2.4 le fil d'Ariane&lt;a class='sommaire-back sommaire-back-13' href='#s-t2-4-le-fil-d-Ariane' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cd ~&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;Pour faire un tilde (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;~&lt;/code&gt;) avec le clavier fran&#231;ais du Mac, il convient de faire Option N. Ce tilde est comme un &lt;a href=&#034;https://fr.wikipedia.org/wiki/fil_d%27Ariane&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;fil d'Ariane&lt;/a&gt;, il repr&#233;sente le dossier de d&#233;part de l'utilisateur connect&#233;. Vous pouvez l'utiliser pour revenir &#224; ce dossier de d&#233;part o&#249; pour indiquer un chemin depuis ce dossier de d&#233;part.&lt;/i&gt;&lt;/p&gt;
&lt;h2 class=&#034;h2&#034; id='t3-Creer-un-fichier-le-modifier-et-le-visualiser'&gt;3. Cr&#233;er un fichier, le modifier et le visualiser&lt;a class='sommaire-back sommaire-back-13' href='#s-t3-Creer-un-fichier-le-modifier-et-le-visualiser' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 class=&#034;h3&#034; id='t3-1-Creer-un-fichier'&gt; 3.1 Cr&#233;er un fichier&lt;a class='sommaire-back sommaire-back-13' href='#s-t3-1-Creer-un-fichier' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo 'Une ligne de texte' &gt; mon_texte.txt&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;Un ficher intitul&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mon_texte.txt&lt;/code&gt; sera cr&#233;&#233; dans le r&#233;pertoire courant. Vous pouvez regarder s'il apparait bien dans la liste des r&#233;pertoires et fichiers avec la commande &#233;tudi&#233;e pr&#233;c&#233;demment &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ls&lt;/code&gt;. Si votre fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mon_texte.txt&lt;/code&gt; existe, il sera &#233;cras&#233; et un nouveau fichier sera cr&#233;&#233; &#224; sa place.&lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t3-2-Ajouter-une-ligne-au-fichier-precedemment-cree'&gt; 3.2 Ajouter une ligne au fichier pr&#233;c&#233;demment cr&#233;&#233;&lt;a class='sommaire-back sommaire-back-13' href='#s-t3-2-Ajouter-une-ligne-au-fichier-precedemment-cree' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo 'Une seconde ligne de texte' &gt;&gt; mon_texte.txt&lt;/code&gt;&lt;br class='autobr' /&gt;
&lt;i&gt;Si le ficher intitul&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mon_texte.txt&lt;/code&gt; n'est pas cr&#233;&#233; dans le r&#233;pertoire courant, il le sera. S'il est d&#233;j&#224; cr&#233;er l'instruction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&gt;&gt;&lt;/code&gt; ajoutera la ligne au fichier existant.&lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;h3&#034; id='t3-3-Voir-le-fichier'&gt; 3.3 Voir le fichier &lt;a class='sommaire-back sommaire-back-13' href='#s-t3-3-Voir-le-fichier' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;nano mon_texte.txt&lt;/code&gt;&lt;br class='autobr' /&gt;
ou&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim mon_texte.txt&lt;/code&gt;&lt;br class='autobr' /&gt;
ou&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;open -a TextEdit.app mon_texte.txt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;nano&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim&lt;/code&gt; sont des &#233;diteurs en ligne de commande. Ce ne sont pas des &#233;diteurs de texte graphiques, comme &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;TextEdit&lt;/code&gt;. Vous verrez imm&#233;diatement la diff&#233;rence entre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;nano&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vim&lt;/code&gt; ; le premier vous dit comment le quitter (par les touches ^X) tandis que le second ne vous le dit pas (Il faudra appuyez sur la touche Esc puis sur ZQ). Le premier est donc parfait pour d&#233;buter mais le second se r&#233;v&#232;lera plus puissant.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Pour en savoir plus :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Guide d'utilisation de Terminal : &lt;a href=&#034;https://support.apple.com/fr-fr/guide/terminal/apdb02f1133-25af-4c65-8976-159609f99817/mac&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Utiliser des &#233;diteurs de texte en ligne de commande dans Terminal sur Mac&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;h2&#034; id='Conclusion'&gt;Conclusion&lt;a class='sommaire-back sommaire-back-13' href='#s-Conclusion' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Le &lt;span class='marque_synper'&gt;SYNPER&lt;/span&gt; donne des formations d'initiation &#224; la programmation. Le pr&#233;sent article accompagne une formation sur les lignes de commande. Un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script shell&lt;/code&gt; est un fichier texte contenant une ou plusieurs commandes UNIX. Vous ex&#233;cutez un &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script shell&lt;/code&gt; pour ex&#233;cuter des commandes sans avoir &#224; les saisir dans l'outil de ligne de commande. C'est &lt;a href='https://www.syndicatlibre.org/spip.php?article575' class=&#034;spip_in&#034;&gt;l'&#233;tape suivante&lt;/a&gt; &#224; laquelle vous m&#232;ne cette pr&#233;sente formation...&lt;br class='autobr' /&gt;
N'h&#233;sitez pas &#224; contacter le syndicat, pour y adh&#233;rer et d&#233;couvrir les milles et une activit&#233;s qu'il propose.&lt;br class='autobr' /&gt;
Pour en savoir plus :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; [en] Documentation Archive : &lt;a href=&#034;https://developer.apple.com/library/archive/documentation/OpenSource/Conceptual/ShellScripting/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004268-TP40003516-SW1&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Shell Scripting Primer&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
