Was ist eine gute Methode, um Probleme bei der Installation von Kabeln zu lösen?

3280
sp3ctum

Ich habe den Kabbenpaket-Manager für Haskell-Programme verwendet, um Bibliotheken und neue Projekte zu installieren, die ich aus einigen Repositories geklont habe. Meistens stoße ich auf Probleme. Die meisten Projekte lassen die Installation sehr einfach erscheinen, aber in meinem Fall trifft das nicht immer zu - manchmal ist es sehr schwer, sie zum Laufen zu bringen. Einige sind tatsächlich so schwer, dass ich das Interesse an dem Projekt verloren habe, nur weil ich es nicht installieren konnte.

Anstatt mich zu beschweren, würde ich gerne fragen, was ich tun sollte, um diese Situation zu verbessern. Ich möchte mein aktuelles Problem als Beispiel verwenden.

Ich bin daran interessiert, das Gitit-Projekt auszuprobieren . Es ist ein vielversprechendes persönliches Wiki, das auf verschiedenen Versionskontrollsystemen ausgeführt wird.

Also hier ist was ich getan habe:

  • Klon von Github
  • Führen Sie cabal installdas Projektverzeichnis wie auf der Projektinstallationsseite beschrieben aus:

    mika@eka:~/git/gitit$ ls BLUETRIP-LICENSE CHANGES HCAR-gitit.tex LICENSE Network README.markdown RELANN-0.6.1 Setup.lhs TANGOICONS YUI-LICENSE data expireGititCache.hs gitit.cabal gitit.hs plugins mika@eka:~/git/gitit$ cabal install Resolving dependencies... cabal: cannot configure happstack-server-7.0.7. It requires base64-bytestring ==1.0.* For the dependency on base64-bytestring ==1.0.* there are these packages: base64-bytestring-1.0.0.0. However none of them are available. base64-bytestring-1.0.0.0 was excluded because gitit-0.10 requires base64-bytestring ==0.1.* mika@eka:~/git/gitit$  
  • Nun denke ich: Nun, ich werde den happstack-server selbst installieren, vielleicht funktioniert das:

    mika@eka:~/git/gitit$ cabal install happstack-server Resolving dependencies... Warning: happstack-server.cabal: Ignoring unknown section type: test-suite Configuring happstack-server-7.0.7... cabal: At least the following dependencies are missing: blaze-html ==0.5.*, hslogger >=1.0.2, monad-control ==0.3.*, network >=2.2.3, sendfile >=0.7.1 && <0.8, system-filepath >=0.3.1, text >=0.10 && <0.12, threads >=0.5, transformers-base ==0.4.* cabal: Error: some packages failed to install: happstack-server-7.0.7 failed during the configure step. The exception was: ExitFailure 1 
  • So wie es aussieht, fehlen einige Abhängigkeiten. Aber ist das Installieren dieser Abhängigkeiten nicht der springende Punkt bei der Verwendung von Kabale?

Was soll ich machen? Fehlerberichte erstellen (zu welchem ​​Projekt?), Die Abhängigkeiten manuell installieren oder etwas anderes? Bonuspunkte für die Erklärung, was diese Probleme verursacht.

6
Versuchen Sie, die Abhängigkeiten nacheinander zu installieren, um festzustellen, welche fehlschlagen. Manchmal kann eine fehlende externe (nicht von Haskell) abhängige Abhängigkeit dazu führen, dass die Installation fehlschlägt. jpe vor 11 Jahren 0
Überprüfen Sie auch, was die Datei im Abschnitt "build-summary" der Datei "~ / .cabal / config" angibt. jpe vor 11 Jahren 0
Haben Sie in letzter Zeit `cabal update` ausgeführt? m4573r vor 11 Jahren 0

2 Antworten auf die Frage

7
Jeff

Für jeden, der darauf stößt, habe ich zwei wichtige Dinge entdeckt, die dazu führen, dass Kabale weniger schmerzfrei sind.

Zunächst werden Sandboxen eingebaut, die mit cabal-install 1.18 beginnen (Sie brauchen kein cabal-dev mehr). Sie sollten mit upgraden cabal install cabal-installund sie für alles verwenden! Ich erstelle ~/.cabal/sandboxesund stelle für jedes Build eine Sandbox dort ein. Dann verknüpfe ich fertige Binaries ~/.cabal/binmit ln.

Zweitens: Wenn Ihre Distribution (beispielsweise Debian) keine /tmpAusführungsberechtigungen erteilt, führt dies zu allerlei scheinbar nicht zusammenhängenden Fehlern. Dinge mögen configure: error: cannot run C compiled programs. Es ist leicht zu beheben alias cabal="TMPDIR=/somewhere/with/permission cabal".

`TMPDIR = ~ / tmp cabal install ...` hat meine Nacht gerettet! Danke für den Tipp. Bruno Kim vor 9 Jahren 1
5
tkx68

Projekte mit komplexen Abhängigkeiten - und solche, die einen Webserver enthalten, die am wahrscheinlichsten in diese Klasse passen - werden häufig am besten mit cabal-dev anstelle von cabal erstellt. Ersteres installiert alles in einer Sandbox und stört andere Installationen nicht.

Sie sollten also zuerst eine neue Haskell-Plattform installieren, dann das Repository aufspalten und schließlich mit cabal-dev erstellen. Natürlich können Sie mit gitit installieren, cabal-dev install gititwenn Sie nicht an der Quelle arbeiten möchten.

Sie sollten die globale Installation komplexer Projekte vermeiden.

Das hört sich nach einer sehr guten Praxis an! Ich werde sehen, ob das in diesem Fall hilft. sp3ctum vor 11 Jahren 0