MOINS compilateurs CSS retournant des blancs

8

Je ne sais même pas par où commencer le débogage. Il y a des mois, je pouvais heureusement compiler mon CSS à partir de mes fichiers MOINS. Aujourd'hui, je lance soit recess --compile test.lessou, lessc test.lesset je reçois juste une sortie vierge. Aucune erreur. lessc test.less > test.csscrée simplement un fichier vierge. Le Makefile twitter-bootstrap pour MOINS d'erreurs, tout cela ne soit pas utile.

J'utilise le simple suivant test.lesspour déboguer:

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

Je suis sur Ubuntu 12.10, j'avais l'habitude sudo apt-get install node-lessde fournir lesscet d'installer la niche des instructions sur github (npm). Les deux me donnent juste une sortie vide.

Même lessc --versionne renvoie rien.

 which lessc

montre

/usr/local/bin/lessc

et le fichier n'est pas vide.

Quelque chose a dû arriver à mon nodeinstallation peut-être, mais je ne sais pas comment déboguer cela. apt-get remove --purge node-lesset la réinstallation n'a pas aidé.

Merci beaucoup pour l'aide ou des conseils sur le débogage!

cboettig
la source
Ouais, ce /usr/local/bin/lesscn'est pas l'emplacement correct quand il s'agit du dépôt officiel: packages.ubuntu.com/quantal/all/node-less/filelist ... Je suppose que vous l'avez installé dans le chemin système en utilisant sudo npm ...ce qui est vraiment une mauvaise idée.
dAnjou

Réponses:

7

Dans Ubuntu et d'autres distributions, vous devriez préférer les packages de distribution au lieu d'installer manuellement les packages. Donc, tout d'abord, vous devez supprimer la niche installée via npm :

sudo npm uninstall recess -g

Supprimez également le package sans nœud installé via apt-get, afin que nous puissions commencer avec un environnement propre:

sudo apt-get remove node-less

Après avoir émis ces deux commandes, assurez-vous que les fichiers suivants n'existent pas et s'ils existent, supprimez-les:

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

Vérifiez également les répertoires suivants (et supprimez-les s'ils existent):

/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

Tous ces fichiers et répertoires peuvent être générés de différentes manières. Différentes méthodes d'installation conduisent à différents répertoires utilisés. Suppression de tous les fichiers qui est important de veiller à ce que rien conflits: vous devriez toujours avoir une, et une seule, la version d'un logiciel installé sur votre système. La seule exception est lorsque la distribution elle-même fournit différentes versions du même logiciel (dans ce cas, le package est conçu de manière à ne pas entrer en conflit).

Vous avez maintenant un environnement propre et pouvez installer sans nœud :

sudo apt-get install node-less

Notez que le paquet sans nœud n'est pas livré /usr/bin/recess, juste /usr/bin/lessc, donc c'est parfaitement OK en cas d' recess --compileéchec (ou, mieux, il doit échouer).

Si lessccela ne fonctionne toujours pas, veuillez vérifier la sortie de which lessc. N'oubliez pas: s'il renvoie quelque chose de différent de /usr/bin/lessc, cela signifie que vous n'utilisez pas lessc du package de distribution, mais autre chose.

Andrea Corbellini
la source
Vous n'avez pas besoin de préférer les packages distro, mais mélanger les packages distro et compilés qui fournissent des binaires similaires est vraiment une recette pour les problèmes.
Javier Rivera
@Javier: salut. Vous n'avez sûrement pas besoin de choisir uniquement les packages de distribution, mais nous sommes sur Ask Ubuntu et je pense que la solution la plus appropriée est celle qui vous indique comment utiliser les packages de distribution. :-)
Andrea Corbellini
Juste une réponse brillante, merci pour l'explication minutieuse. Tout fonctionne maintenant comme il se doit. Je ne sais pas comment j'ai réussi à obtenir une version ratée du npm moins installé, mais je préviens de ne pas mélanger des packages de distribution et de compilation similaires est bien noté. C'est dommage qu'il ne soit souvent pas possible de compter uniquement sur des packages de distribution, en particulier avec ruby, etc.
cboettig
1
@cboettig: merci pour vos commentaires, c'est vraiment apprécié. Comme l'a souligné Javier, vous n'êtes pas obligé d'utiliser des packages de distribution. Mais lorsque vous installez un logiciel tiers, n'oubliez pas de ne pas l'installer à l'échelle du système. Par exemple, j'utilise Python Virtualenv, des chroots, des conteneurs Linux (LXC) et des machines virtuelles Qemu lorsque j'ai besoin d'exécuter un logiciel non fourni par la distribution (ou lorsque j'ai besoin de configurations système spéciales). Toutes ces technologies (et bien d'autres) vous aident à isoler le logiciel, en évitant la douleur.
Andrea Corbellini
Courir lesscdonne /usr/local/bin/lessc no such file or directory, mais courir which lesscdonne /usr/bin/lessc. Comment lui dire d'utiliser le lessc de which lessc?
Jacob Valenta
3

Après avoir suivi les étapes de la réponse d'Andrea, vous devrez peut-être exécuter source ~/.bashrcsi vous obtenez bash: /usr/local/bin/lessc: No such file or directorylorsque vous exécutez lessc et lorsque which lesscs'affiche /usr/bin/lessc. Il s'agit de mettre à jour votre variable d'environnement $ PATH.

Brayden Williams
la source
Notez également la réponse de unix.stackexchange.com/questions/5609/… en plus de cela.
Jeppe Mariager-Lam