Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2017-08-03T16:05:43+02:00Les derniers messages parus sur le forum de Zeste de Savoir.Compilation d'un petit projet Ocsigen, message #1586432017-08-03T16:05:43+02:00titus/@titushttps://zestedesavoir.com/forums/sujet/9071/compilation-dun-petit-projet-ocsigen/?page=1#p158643<p>Merci à vous deux pour vos réponses rapides.</p>
<p>Le <code>sudo chown</code> résout effectivement les problèmes d’accéssibilité <img alt=":)" src="/static/smileys/smile.png"> Les commandes sans sudo renvoient les mêmes résultats qu’avec le sudo (je vous ai mis tout ça dans mon message précédent).</p>
<p>En revanche, même si je me place dans le dossier de mon projet, que je fais : </p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="nb">eval</span> <span class="sb">`</span>opam config env<span class="sb">`</span>
</pre></div>
</td></tr></table></div>
<p>Puis <code>make test.byte</code>, le problème persiste, on a toujours :</p>
<blockquote>
<p>ocsigenserver -c local/etc/site/site-test.conf<br>
ocsigenserver: ocsigen:main: Fatal - Findlib package ocsigenserver.ext.ocsipersist-dbm not found: maybe you forgot <findlib path="…"/>?<br>
make: *** [test.byte] Erreur 53</p>
</blockquote>
<p>J’ai vérifié mon <code>.bashrc</code>, la ligne à rajouter lors de l’installation d’Opam est bien présente.</p>
<p><strong>EDIT</strong> : finalement, le problème vient d’être résolu sur le canal #informatique de <a href="http://smoothirc.net">smoothirc.net</a>. Tout ceci venait d’une bêtise que j’ai faite au début : j’ai utilisé apt-get avant d’utiliser opam. La bonne commande n’est donc pas eliom-destillery mais eliom-distillery, qui elle génère un code parfaitement compilable sur Eliom 6.2.</p>Compilation d'un petit projet Ocsigen, message #1586412017-08-03T15:36:51+02:00Eusèbe/@Eus%C3%A8behttps://zestedesavoir.com/forums/sujet/9071/compilation-dun-petit-projet-ocsigen/?page=1#p158641<p>Effectivement, il y a l’air d’y avoir deux problèmes : d’une part des droits bizarres dans ton dossier opam (le chown devrait régler ça), d’autre part un environnement qui n’est pas synchronisé avec le switch que tu devrais utiliser. La commande suivante devrait régler ça :</p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="gp">$</span> <span class="nb">eval</span> <span class="sb">`</span>opam config env<span class="sb">`</span>
</pre></div>
</td></tr></table></div>
<p>Tu devrais la mettre dans ton .bashrc ou équivalent pour qu’elle s’exécute automatiquement.</p>Compilation d'un petit projet Ocsigen, message #1586402017-08-03T15:28:15+02:00Ben Dover/@Ben%20Doverhttps://zestedesavoir.com/forums/sujet/9071/compilation-dun-petit-projet-ocsigen/?page=1#p158640<p>Peut-être que ces fichiers auxquels tu n’as pas le droit d’accéder ont été créés quand tu utilisais opam en root. Essaye de faire un <code>sudo chown -R etienne /home/etienne/.opam</code> pour réparer ça. Ensuite réessaye les commandes proposées par <strong>Eusèbe</strong> sans <code>sudo</code> ?</p>
<p>Pour l’erreur initiale : si vraiment Ocsipersist est mal installé, peut-être qu’on peut simplement virer les parties du Makefile qui en parlent (vu que tu ne l’utilises pas ici). Regarde d’abord si les paquets ocsigen et eliom sont bien installés pour l’utilisateur etienne (donc sans sudo). </p>
<p>Edit : je viens de remarquer le</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2</pre></div></td><td class="code"><div class="codehilite"><pre><span></span>[WARNING] The environment is not in sync with the current switch.
You should run: eval `opam config env`
</pre></div>
</td></tr></table>
<p>C’est probablement de là que vient le problème, en tout cas c’est un problème à régler. Est-ce que tu as bien ajouté la ligne demandée lors de l’installation de opam à ton .bashrc ? C’est une ligne genre </p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="codehilite"><pre><span></span>. /home/etienne/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true
</pre></div>
</td></tr></table>
<p>Si oui et que le problème persiste, assure-toi d’utiliser un terminal qui a bien été ouvert depuis que cette ligne a été rajoutée.</p>
<p>Accessoirement, fais "eval `opam config env`" <em>puis</em> <code>make test.byte</code> dans le même terminal et regarde si le problème est toujours là ?</p>Compilation d'un petit projet Ocsigen, message #1585902017-08-03T04:01:31+02:00titus/@titushttps://zestedesavoir.com/forums/sujet/9071/compilation-dun-petit-projet-ocsigen/?page=1#p158590<p>Salut Eusèbe,</p>
<p><code>opam switch -i</code> renvoie :</p>
<blockquote>
<p>Fatal error:<br>
# opam-version 1.2.2<br>
# os linux<br>
opam: "open" failed on /home/etienne/.opam/log/command-31591-5a61c5.out: Permission denied</p>
</blockquote>
<p><code>opam list</code> renvoie à peu de choses près le même résultat :</p>
<blockquote>
<p>Fatal error:<br>
# opam-version 1.2.2
# os linux<br>
opam: "open" failed on /home/etienne/.opam/log/command-31594-5a61c5.out: Permission denied</p>
</blockquote>
<p>Par contre, si je mets le <code>sudo</code> (même si un warning m’indique clairement que ce n’est pas recommandé), les deux commandes renvoient respectivement :</p>
<blockquote>
<p>[WARNING] Running as root is not recommended<br>
4.02.1 I 4.02.1 Official 4.02.1 release<br>
<strong>4.04.0 C 4.04.0 Official 4.04.0 release</strong><br>
[WARNING] The environment is not in sync with the current switch.<br>
You should run: eval <code>opam config env</code></p>
</blockquote>
<p>Et :</p>
<div class="spoiler">
<blockquote>
<p>[WARNING] Running as root is not recommended<br>
# Installed packages for 4.04.0:<br>
base-bigarray base Bigarray library distributed with the OCaml compiler<br>
base-bytes base Bytes library distributed with the OCaml compiler<br>
base-num base Num library distributed with the OCaml compiler<br>
base-threads base Threads library distributed with the OCaml compiler<br>
base-unix base Unix library distributed with the OCaml compiler<br>
base64 2.2.0 Base64 encoding for OCaml <br>
biniou 1.2.0 Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve <br>
calendar 2.03.2 Library for handling dates and times in your program<br>
camlp4 4.04+1 Camlp4 is a system for writing extensible parsers for programming languages
cmdliner 1.0.0 Declarative definition of command line interfaces for OCaml<br>
conf-libpcre 1 Virtual package relying on a libpcre system installation.<br>
conf-m4 1 Virtual package relying on m4<br>
conf-openssl 1 Virtual package relying on an OpenSSL system installation.<br>
conf-pkg-config 1.0 Virtual package relying on pkg-config installation.<br>
conf-which 1 Virtual package relying on which<br>
conf-zlib 1 Virtual package relying on zlib<br>
cppo 1.5.0 Equivalent of the C preprocessor for OCaml programs<br>
cryptokit 1.10 Cryptographic primitives library. <br>
csv 1.7 A pure OCaml library to read and write CSV files.<br>
deriving 0.7.1 Extension to OCaml for deriving functions from type declarations<br>
easy-format 1.2.0 High-level and functional interface to the Format module of the OCaml standard library<br>
eliom 6.2.0 Client/server Web framework<br>
ipaddr 2.7.2 IP (and MAC) address manipulation<br>
jbuilder 1.0+beta11 Fast, portable and opinionated build system<br>
js_of_ocaml 2.8.3 Compiler from OCaml bytecode to Javascript<br>
lwt 2.7.1 Monadic promises and concurrent I/O<br>
macaque 0.7.4 Macaque (Macros for Caml Queries) is a DSL for OCaml, which produces<br>
menhir 20170712 LR(1) parser generator<br>
merlin 3.0.1 Editor helper, provides completion, typing and source browsing in Vim and Emacs<br>
num 0 The Num library for arbitrary-precision integer and rational arithmetic<br>
oasis 0.4.10 Tooling for building OCaml libraries and applications<br>
ocamlbuild 0.11.0 OCamlbuild is a build system with builtin rules to easily build most OCaml projects.<br>
ocamlfind 1.7.3 A library manager for OCaml<br>
ocamlify 0.0.1 Include files in OCaml code<br>
ocamlmod 0.0.8 Generate OCaml modules from source files<br>
ocamlnet 4.1.2 Internet protocols (HTTP, CGI, e-mail etc.) and helper data structures<br>
ocsigen-i18n 3.1.0 I18n made easy for web sites written with eliom.<br>
ocsigen-start 1.0.0 Skeleton for building client-server Eliom applications<br>
ocsigen-toolkit 1.0.0 Reusable UI components for Eliom applications (client only, or client-server)<br>
ocsigenserver 2.8 A full-featured and extensible Web server<br>
optcomp 1.6 Optional compilation with cpp-like directives<br>
pcre 7.2.3 pcre-ocaml - bindings to the Perl Compatibility Regular Expressions library<br>
pgocaml 2.3 Interface to PostgreSQL databases<br>
ppx_core 113.33.01+4.03 Standard library for ppx rewriters<br>
ppx_deriving 4.1 Type-driven code generation for OCaml >=4.02<br>
ppx_driver 113.33.02+4.03 Feature-full driver for OCaml AST transformers<br>
ppx_optcomp 113.33.01+4.03 Optional compilation for OCaml<br>
ppx_sexp_conv 113.33.01+4.03 Generation of S-expression conversion functions from type definitions<br>
ppx_tools 5.0 Tools for authors of ppx rewriters and other syntactic tools<br>
ppx_type_conv 113.33.02+4.03 Support Library for type-driven code generators<br>
re 1.7.1 RE is a regular expression library for OCaml<br>
react 1.2.1 Declarative events and signals for OCaml<br>
reactiveData 0.2.1 Functional reactive programming with incremental changes in data structures<br>
result 1.2 Compatibility Result module<br>
safepass 2.0 A library enabling the safe storage of user passwords<br>
sexplib 113.33.00+4.03 Library for serializing OCaml values to and from S-expressions<br>
sqlite3 4.1.3 sqlite3-ocaml - SQLite3 bindings<br>
ssl 0.5.3 Bindings for OpenSSL<br>
topkg 0.9.0 The transitory OCaml software packager<br>
tyxml 4.1.0 TyXML is a library for building statically correct HTML5 and SVG documents<br>
uchar 0.0.2 Compatibility library for OCaml’s Uchar module<br>
uutf 1.0.1 Non-blocking streaming Unicode codec for OCaml<br>
yojson 1.4.0 Yojson is an optimized parsing and printing library for the JSON format </p>
</blockquote>
</div>Compilation d'un petit projet Ocsigen, message #1585782017-08-02T20:48:34+02:00Eusèbe/@Eus%C3%A8behttps://zestedesavoir.com/forums/sujet/9071/compilation-dun-petit-projet-ocsigen/?page=1#p158578<blockquote>
<p>j’ai utilisé sudopour installer Ocsigen avec opam, même si je ne comprends pas en quoi cela poserait un problème.</p>
</blockquote>
<p>Ça ressemble à opam qui aurait installé ocsigen sur le switch system (celui qui utilise le compilateur de ton système plutôt qu’en installer un lui-même - et qui marche assez mal). Est-ce que tu peux donner le résultat des commandes suivantes :</p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2</pre></div></td><td class="code"><div class="codehilite"><pre><span></span>$ opam switch -i
$ opam list
</pre></div>
</td></tr></table></div>
<p>?</p>Compilation d'un petit projet Ocsigen, message #1585652017-08-02T17:54:57+02:00titus/@titushttps://zestedesavoir.com/forums/sujet/9071/compilation-dun-petit-projet-ocsigen/?page=1#p158565<p>Bonjour à tous,</p>
<p>J’essaye en ce moment de me mettre à Ocisgen. Ayant toujours utilisé OCaml d’une façon très basique, je rencontre plusieurs difficultés. Les gens du canal #informatique sur <a href="https://smoothirc.net/">irc.smoothirc.net</a> m’ont déjà d’ailleurs bien aidé.</p>
<p>Bref, j’ai donc installé Eliom 6.2 avec Opam. J’ai crée un projet avec la commande <code>eliom-destillery -name site -template basic -destination site</code>.</p>
<p>J’ai ensuite remplacé le code du fichier site.eliom avec <a href="http://ocsigen.org/eliom/6.2/manual/clientserver-applications#h5o-5">l’exemple d’une des premières pages de la documentation</a> :</p>
<div><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="k">open</span> <span class="nn">Eliom_content</span><span class="p">.</span><span class="nn">Html</span><span class="p">.</span><span class="nc">F</span>
<span class="k">module</span> <span class="nc">Site</span> <span class="o">=</span>
<span class="nn">Eliom_registration</span><span class="p">.</span><span class="nc">App</span> <span class="o">(</span>
<span class="k">struct</span>
<span class="k">let</span> <span class="n">application_name</span> <span class="o">=</span> <span class="s2">"site"</span>
<span class="k">let</span> <span class="n">global_data_path</span> <span class="o">=</span> <span class="nc">None</span>
<span class="k">end</span><span class="o">)</span>
<span class="k">let</span> <span class="n">main_service</span> <span class="o">=</span>
<span class="nn">Site</span><span class="p">.</span><span class="n">create</span>
<span class="o">~</span><span class="n">path</span><span class="o">:(</span><span class="nn">Eliom_service</span><span class="p">.</span><span class="nc">Path</span> <span class="o">[</span><span class="s2">""</span><span class="o">])</span>
<span class="o">~</span><span class="n">meth</span><span class="o">:(</span><span class="nn">Eliom_service</span><span class="p">.</span><span class="nc">Get</span> <span class="nn">Eliom_parameter</span><span class="p">.</span><span class="n">unit</span><span class="o">)</span>
<span class="o">(</span><span class="k">fun</span> <span class="bp">()</span> <span class="bp">()</span> <span class="o">-></span> <span class="nn">Lwt</span><span class="p">.</span><span class="n">return</span> <span class="o">(</span><span class="n">html</span>
<span class="o">(</span><span class="n">head</span> <span class="o">(</span><span class="n">title</span> <span class="o">(</span><span class="n">pcdata</span> <span class="s2">"Hi!"</span><span class="o">))</span> <span class="bp">[]</span><span class="o">)</span>
<span class="o">(</span><span class="n">body</span> <span class="o">[</span><span class="n">p</span> <span class="o">[</span><span class="n">pcdata</span> <span class="s2">"Hey."</span><span class="o">]])))</span>
</pre></div>
</td></tr></table></div>
<p>Et lorsque je compile tout ceci avec <code>make test.byte</code>, voilà l’erreur :</p>
<blockquote>
<p>ocsigenserver: ocsigen:main: Fatal - Findlib package ocsigenserver.ext.ocsipersist-dbm not found: maybe you forgot <findlib path="…"/>?
make: *** [test.byte] Erreur 53</p>
</blockquote>
<p>Je ne comprends pas ce qui cloche ici. Il me semble pourtant avoir installé correctement opam, eliom et ocsigenserver (j’ai suivi <a href="http://ocsigen.org/install#source">les instructions de la documentation</a>, en prenant soin de faire un <code>opam switch</code> pour utiliser un compilateur OCaml récent). Je pense avoir néanmoins fait une bêtise : j’ai utilisé <code>sudo</code>pour installer Ocsigen avec <code>opam</code>, même si je ne comprends pas en quoi cela poserait un problème. Ici, on dirait que le compilateur cherche une dépendance qu’il ne peut pas trouver.</p>
<p>Quelqu’un peut-il m’éclairer ? Dois-je éditer le Makefile ? Je vous remercie par avance !</p>