WENIGER CSS-Compiler geben leer zurück

8

Ich bin mir nicht mal sicher, wo ich mit dem Debuggen beginnen soll. Vor Monaten konnte ich mein CSS gerne aus meinen WENIGER Dateien kompilieren. Heute starte ich entweder recess --compile test.lessoder lessc test.lessund bekomme nur eine leere Ausgabe. Keine Fehler. lessc test.less > test.csserstellt nur eine leere Datei. Das Twitter-Bootstrap-Makefile für WENIGER Fehler, alles nicht hilfreich.

Ich verwende das folgende einfache test.lessDebugging:

@color: #4D926F;
#header {
  color: @color;
}
h2 {
   color: @color;
}

Ich bin auf Ubuntu 12.10, ich habe früher sudo apt-get install node-lesseine Pause von den Anweisungen auf Github (npm) bereitgestelltlessc und installiert . Beide geben mir nur eine leere Ausgabe.

Auch lessc --versiongibt nichts zurück.

 which lessc

zeigt an

/usr/local/bin/lessc

und die Datei ist nicht leer.

nodeVielleicht muss etwas mit meiner Installation passiert sein , aber keine Ahnung, wie ich das debuggen soll. apt-get remove --purge node-lessund Neuinstallation hat nicht geholfen.

Vielen Dank für die Hilfe oder Tipps zum Debuggen!

cboettig
quelle
Ja, es /usr/local/bin/lesscist nicht der richtige Speicherort, wenn es aus dem offiziellen Repo stammt: packages.ubuntu.com/quantal/all/node-less/filelist ... Ich denke, Sie haben es im Systempfad installiert, sudo npm ...was eine wirklich schlechte Idee ist.
dAnjou

Antworten:

7

In Ubuntu und anderen Distributionen sollten Sie die Distributionspakete vorziehen, anstatt Pakete manuell zu installieren. Daher sollten Sie zunächst die über npm installierte Aussparung entfernen :

sudo npm uninstall recess -g

Entfernen Sie auch das über installierte knotenlose Paket apt-get, damit wir mit einer sauberen Umgebung beginnen können:

sudo apt-get remove node-less

Stellen Sie nach dem Ausgeben dieser beiden Befehle sicher, dass die folgenden Dateien nicht vorhanden sind, und löschen Sie sie, falls vorhanden:

/usr/bin/lessc
/usr/local/bin/lessc

Überprüfen Sie auch die folgenden Verzeichnisse (und entfernen Sie sie, falls vorhanden):

/node_modules/less
/usr/bin/node_modules/less
/usr/node_modules/less
/usr/local/bin/node_modules/less
/usr/local/node_modules/less
~/.node_modules/less
~/.node_libraries/less

Alle diese Dateien und Verzeichnisse können auf verschiedene Arten generiert werden. Unterschiedliche Installationsmethoden führen zu unterschiedlichen Verzeichnissen. Entfernen aller , dass Dateien ist wichtig, um sicherzustellen , nichts Konflikte: Sie immer eine haben sollen, und nur eine Version einer Software auf dem System installiert ist . Die einzige Ausnahme ist, wenn die Distribution selbst verschiedene Versionen derselben Software bereitstellt (in diesem Fall werden Pakete so erstellt, dass sie nicht miteinander in Konflikt stehen).

Jetzt haben Sie eine saubere Umgebung und können installieren Knoten weniger :

sudo apt-get install node-less

Beachten Sie, dass das knotenlose Paket nicht ausgeliefert /usr/bin/recesswird /usr/bin/lessc, es ist also vollkommen in Ordnung, wenn es recess --compilefehlschlägt (oder besser, es muss fehlschlagen).

Wenn dies lesscimmer noch nicht funktioniert, überprüfen Sie bitte die Ausgabe von which lessc. Denken Sie daran: Wenn etwas anderes zurückgegeben wird /usr/bin/lessc, bedeutet dies, dass Sie nicht lessc aus dem Distributionspaket verwenden, sondern etwas anderes.

Andrea Corbellini
quelle
Sie müssen keine Distribution-Pakete bevorzugen, aber das Mischen von Distribution- und kompilierten Paketen, die ähnliche Binärdateien bereitstellen, ist wirklich ein Rezept für Probleme.
Javier Rivera
@ Javier: Hallo. Sicherlich müssen Sie nicht nur Distributionspakete auswählen, aber wir sind auf Ask Ubuntu und ich denke, die am besten geeignete Lösung ist eine, die Ihnen sagt, wie Sie die Distributionspakete verwenden. :-)
Andrea Corbellini
Nur eine brillante Antwort, danke für die sorgfältige Erklärung. Alles funktioniert jetzt so wie es sollte. Ich bin mir nicht sicher, wie ich es geschafft habe, eine Blindgängerversion des npm weniger zu installieren, aber ich warne davor, ähnliche Distributionen und kompilierte Pakete nicht zu mischen. Es ist schade, dass es oft nicht möglich ist, sich nur auf Distribution-Pakete zu verlassen, besonders bei Ruby usw.
cboettig
1
@cboettig: danke für dein Feedback, es wird sehr geschätzt. Wie Javier betonte, sind Sie nicht gezwungen, Verteilungspakete zu verwenden. Denken Sie jedoch bei der Installation von Software von Drittanbietern daran, diese nicht systemweit zu installieren. Zum Beispiel verwende ich Python Virtualenv, Chroots, Linux Containers (LXC) und virtuelle Qemu-Maschinen, wenn ich Software ausführen muss, die nicht von der Distribution bereitgestellt wird (oder wenn ich spezielle Systemkonfigurationen benötige). All diese Technologien (und viele andere) helfen Ihnen, die Software zu isolieren und Schmerzen zu vermeiden.
Andrea Corbellini
Laufen lesscgibt /usr/local/bin/lessc no such file or directory, aber Laufen which lesscgibt /usr/bin/lessc. Wie sage ich ihm, dass er den Lessc von verwenden soll which lessc?
Jacob Valenta
3

Nachdem Sie die Schritte aus Andrea's Antwort befolgt haben, müssen Sie möglicherweise laufen, source ~/.bashrcwenn Sie bekommen, bash: /usr/local/bin/lessc: No such file or directorywenn Sie weniger laufen und wenn which lesscShows /usr/bin/lessc. Hiermit aktualisieren Sie Ihre Umgebungsvariable $ PATH.

Brayden Williams
quelle
Beachten Sie zusätzlich die Antwort von unix.stackexchange.com/questions/5609/… .
Jeppe Mariager-Lam