MENOS compiladores CSS retornando em branco

8

Nem sei por onde começar a depurar isso. Meses atrás, eu poderia compilar com prazer meu CSS a partir de meus arquivos MENOS. Hoje, eu corro um recess --compile test.lessou lessc test.lessapenas e recebo uma saída em branco. Sem erros. lessc test.less > test.cssapenas cria um arquivo em branco. O Makefile de bootstrap do twitter para erros MENOS, tudo isso não ajuda.

Estou usando o seguinte simples test.lesspara depurar:

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

Estou no ubuntu 12.10, costumava sudo apt-get install node-lessfornecer lessce instalei o recesso a partir das instruções no github (npm). Ambos me dão saída vazia.

Mesmo lessc --versionnão retorna nada.

 which lessc

mostra

/usr/local/bin/lessc

e o arquivo não está vazio.

nodeTalvez algo tenha acontecido com minha instalação, mas não faço ideia de como depurar isso. apt-get remove --purge node-lesse reinstalar não ajudou.

Muito obrigado pela ajuda ou por qualquer dica sobre depuração!

cboettig
fonte
Sim, /usr/local/bin/lesscnão é o local correto quando é do repositório oficial: packages.ubuntu.com/quantal/all/node-less/filelist ... Acho que você o instalou no caminho do sistema, o sudo npm ...que é uma péssima ideia.
dAnjou

Respostas:

7

No Ubuntu e em outras distribuições, você deve preferir os pacotes de distribuição em vez de instalar manualmente os pacotes. Portanto, antes de tudo, você deve remover o recesso instalado via npm :

sudo npm uninstall recess -g

Remova também o pacote sem nó instalado via apt-get, para que possamos começar com um ambiente limpo:

sudo apt-get remove node-less

Após emitir esses dois comandos, verifique se os seguintes arquivos não existem e, se existirem, exclua-os:

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

Verifique também os seguintes diretórios (e remova-os, se existirem):

/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 esses arquivos e diretórios podem ser gerados de várias maneiras. Diferentes métodos de instalação levam a diferentes diretórios usados. A remoção de todos esses arquivos é importante para garantir que nada entre em conflito: você deve sempre ter uma e apenas uma versão de um software instalado no seu sistema. A única exceção é quando a própria distribuição fornece versões diferentes do mesmo software (nesse caso, o pacote é feito para que não entre em conflito).

Agora você tem um ambiente limpo e pode instalar sem nós :

sudo apt-get install node-less

Observe que o pacote sem não é enviado /usr/bin/recess, apenas /usr/bin/lessc, então está perfeitamente bom se recess --compilefalhar (ou, melhor, deve falhar).

Se lesscainda não funcionar, verifique a saída de which lessc. Lembre-se: se retornar algo diferente /usr/bin/lessc, significa que você não está usando lessc do pacote de distribuição, mas outra coisa.

Andrea Corbellini
fonte
Você não precisa preferir pacotes de distribuição, mas misturar pacotes de distribuição e compilados que fornecem binários semelhantes é realmente uma receita para problemas.
Javier Rivera
@Javier: oi. Certamente você não precisa escolher apenas pacotes de distribuição, mas estamos no Ask Ubuntu e acho que a solução mais apropriada é a que diz como usar os pacotes de distribuição. :-)
Andrea Corbellini
Apenas uma resposta brilhante, obrigado pela explicação cuidadosa. Tudo está funcionando agora como deveria. Não tenho certeza de como eu consegui instalar uma versão mais barata do npm, mas tenho cuidado em não misturar pacotes de distribuição e compilação similares. É uma pena que muitas vezes não seja possível confiar apenas em pacotes de distribuição, principalmente com ruby ​​etc.
cboettig
1
@ cboettig: obrigado pelo seu feedback, é realmente apreciado. Como Javier apontou, você não é forçado a usar pacotes de distribuição. Mas quando você instala software de terceiros, lembre-se de não instalá-lo em todo o sistema. Por exemplo, eu uso máquinas virtuais Python Virtualenv, chroots, Linux Containers (LXC) e Qemu quando preciso executar um software não fornecido pela distribuição (ou quando preciso de configurações especiais do sistema). Todas essas tecnologias (e muitas outras) ajudam a isolar o software, evitando a dor.
Andrea Corbellini
Correr lessc/usr/local/bin/lessc no such file or directory, mas correr which lessc/usr/bin/lessc. Como eu digo para usar o lessc from which lessc?
precisa saber é o seguinte
3

Depois de seguir as etapas da resposta de Andrea, talvez você precise executar source ~/.bashrcse estiver bash: /usr/local/bin/lessc: No such file or directoryexecutando quando executa menosc e quando which lesscmostra /usr/bin/lessc. Isso é para atualizar sua variável de ambiente $ PATH.

Brayden Williams
fonte
Observe também a resposta em unix.stackexchange.com/questions/5609/… além disso.
Jeppe Mariager-Lam