MENOS compiladores CSS que vuelven en blanco

8

Ni siquiera estoy seguro de dónde comenzar a depurar esto. Meses atrás, felizmente podía compilar mi CSS de mis MENOS archivos. Hoy, ejecuto uno recess --compile test.lesso dos lessc test.lessy solo obtengo un resultado en blanco. Sin errores. lessc test.less > test.csssolo crea un archivo en blanco. El Makefile de twitter-bootstrap para MENOS errores, todo no es útil.

Estoy usando el siguiente simple test.lesspara depurar:

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

Estoy en ubuntu 12.10, solía sudo apt-get install node-lessproporcionar lessce instalé el receso de las instrucciones en github (npm). Ambos solo me dan salida vacía.

Incluso lessc --versionno devuelve nada.

 which lessc

muestra

/usr/local/bin/lessc

y el archivo no está vacío

nodeQuizás algo le haya pasado a mi instalación, pero no tengo idea de cómo depurar esto. apt-get remove --purge node-lessy reinstalar no ayudó.

¡Muchas gracias por la ayuda o algún consejo sobre depuración!

cboettig
fuente
Sí, /usr/local/bin/lesscno es la ubicación correcta cuando es del repositorio oficial: packages.ubuntu.com/quantal/all/node-less/filelist ... Supongo que lo instaló en la ruta del sistema utilizando, lo sudo npm ...cual es una muy mala idea.
dAnjou

Respuestas:

7

En Ubuntu y otras distribuciones, debe preferir los paquetes de distribución en lugar de instalarlos manualmente. Entonces, en primer lugar, debe eliminar el receso instalado a través de npm :

sudo npm uninstall recess -g

También elimine el paquete sin nodo instalado a través de apt-get, para que podamos comenzar con un entorno limpio:

sudo apt-get remove node-less

Después de emitir estos dos comandos, asegúrese de que los siguientes archivos no existan y, si existen, elimínelos:

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

Compruebe también los siguientes directorios (y elimínelos si existen):

/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

Todos esos archivos y directorios pueden generarse de varias maneras. Los diferentes métodos de instalación conducen a diferentes directorios utilizados. Eliminar todos esos archivos es importante para garantizar que nada entre en conflicto: siempre debe tener una, y solo una, versión de un software instalado en su sistema. La única excepción es cuando la distribución en sí misma proporciona diferentes versiones del mismo software (en este caso, el paquete se hace para que no entren en conflicto entre sí).

Ahora tiene un entorno limpio y puede instalar sin nodo :

sudo apt-get install node-less

Tenga en cuenta que el paquete sin nodo no se envía /usr/bin/recess, simplemente /usr/bin/lessc, por lo que está perfectamente bien si recess --compilefalla (o, mejor aún, debe fallar).

Si lessctodavía no funciona, verifique la salida de which lessc. Recuerde: si devuelve algo diferente /usr/bin/lessc, significa que no está utilizando lessc del paquete de distribución, sino algo más.

Andrea Corbellini
fuente
No necesita preferir paquetes de distribución, pero mezclar paquetes de distribución y compilados que proporcionan binarios similares es realmente una receta para los problemas.
Javier Rivera
@Javier: hola. Seguramente no necesita elegir solo paquetes de distribución, pero estamos en Ask Ubuntu y creo que la solución más adecuada es una que le diga cómo usar los paquetes de distribución. :-)
Andrea Corbellini
Solo una respuesta brillante, gracias por la cuidadosa explicación. Todo funciona ahora como debería. No estoy seguro de cómo logré instalar una versión falsa del npm menos instalado, pero advierto sobre no mezclar paquetes similares de distribución y compilación. Es una lástima que a menudo no es posible confiar solamente en distribuciones paquetes sin embargo, sobre todo en con el rubí, etc.
cboettig
1
@cboettig: gracias por sus comentarios, es muy apreciado. Como señaló Javier, no está obligado a utilizar paquetes de distribución. Pero cuando instale software de terceros, recuerde no instalarlo en todo el sistema. Por ejemplo, uso Python Virtualenv, chroots, Linux Containers (LXC) y máquinas virtuales Qemu cuando necesito ejecutar un software no proporcionado por la distribución (o cuando necesito configuraciones especiales del sistema). Todas estas tecnologías (y muchas otras) lo ayudan a aislar el software, evitando el dolor.
Andrea Corbellini
Correr lesscda /usr/local/bin/lessc no such file or directory, pero correr which lesscda /usr/bin/lessc. ¿Cómo le digo que use el lessc which lessc?
Jacob Valenta
3

Después de seguir los pasos de la respuesta de Andrea, es posible que tengas que correr source ~/.bashrcsi lo haces bash: /usr/local/bin/lessc: No such file or directorycuando corres menos y cuando se which lesscmuestra /usr/bin/lessc. Esto es para actualizar su variable de entorno $ PATH.

Brayden Williams
fuente
También tenga en cuenta la respuesta de unix.stackexchange.com/questions/5609/… además de esto.
Jeppe Mariager-Lam