MNIEJ kompilatorów CSS zwracających puste

8

Nie jestem nawet pewien, od czego zacząć debugowanie. Kilka miesięcy temu mogłem z radością skompilować mój CSS z moich plików LESS. Dzisiaj uruchamiam albo recess --compile test.lessalbo, lessc test.lessi po prostu otrzymuję pusty wynik. Bez błędów. lessc test.less > test.csspo prostu tworzy pusty plik. Makefile twitter-bootstrap dla MNIEJ błędów, niech to nie będzie pomocne.

Używam następujących prostych test.lessdo debugowania:

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

Jestem na Ubuntu 12.10, kiedyś sudo apt-get install node-lesszapewniałem lessci instalowałem wnękę ze wskazówek na github (npm). Oba dają mi tylko puste wyjście.

Nawet lessc --versionnic nie zwraca.

 which lessc

przedstawia

/usr/local/bin/lessc

a plik nie jest pusty.

Coś musiało się stać z moją nodeinstalacją, ale nie mam pojęcia, jak to debugować. apt-get remove --purge node-lessi ponowna instalacja nie pomogła.

Wielkie dzięki za pomoc lub wskazówki dotyczące debugowania!

cboettig
źródło
Tak, /usr/local/bin/lesscnie jest to poprawna lokalizacja, jeśli pochodzi z oficjalnego repozytorium: packages.ubuntu.com/quantal/all/node-less/filelist ... Chyba zainstalowałeś go na ścieżce systemowej, sudo npm ...co jest naprawdę złym pomysłem.
dAnjou,

Odpowiedzi:

7

W Ubuntu i innych dystrybucjach powinieneś preferować pakiety dystrybucyjne zamiast ręcznej instalacji pakietów. Przede wszystkim należy usunąć wnękę zainstalowaną za pomocą npm :

sudo npm uninstall recess -g

Usuń także pakiet bez węzłów zainstalowany przez apt-get, abyśmy mogli zacząć od czystego środowiska:

sudo apt-get remove node-less

Po wydaniu tych dwóch poleceń upewnij się, że następujące pliki nie istnieją, a jeśli istnieją, usuń je:

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

Sprawdź także następujące katalogi (i usuń je, jeśli istnieją):

/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

Wszystkie te pliki i katalogi mogą być generowane na różne sposoby. Różne metody instalacji prowadzą do różnych używanych katalogów. Usunięcie wszystkich tych plików jest ważne, aby upewnić się, że nic konfliktu: zawsze powinieneś mieć jedną i tylko jedną wersję oprogramowania zainstalowanego w systemie. Jedynym wyjątkiem jest sytuacja, gdy sama dystrybucja udostępnia różne wersje tego samego oprogramowania (w tym przypadku pakiety są tworzone w taki sposób, aby nie powodowały konfliktów).

Teraz masz czyste środowisko i możesz zainstalować bez węzłów :

sudo apt-get install node-less

Zauważ, że pakiet bez węzłów nie jest wysyłany /usr/bin/recess, /usr/bin/lesscwięc jest całkowicie OK, jeśli recess --compilezawiedzie (lub, lepiej, musi zawieść).

Jeśli lesscnadal nie działa, sprawdź wydajność which lessc. Pamiętaj: jeśli zwraca coś innego niż /usr/bin/lessc, oznacza to, że nie używasz lessc z pakietu dystrybucyjnego, ale coś innego.

Andrea Corbellini
źródło
Nie musisz preferować pakietów dystrybucyjnych, ale mieszanie pakietów dystrybucyjnych i skompilowanych, które zapewniają podobne pliki binarne, jest naprawdę receptą na problemy.
Javier Rivera
@Javier: cześć. Na pewno nie musisz wybierać tylko pakietów dystrybucyjnych, ale jesteśmy na Ask Ubuntu i myślę, że najbardziej odpowiednie jest to, które mówi ci, jak korzystać z pakietów dystrybucyjnych. :-)
Andrea Corbellini,
Po prostu genialna odpowiedź, dziękuję za staranne wyjaśnienie. Wszystko działa teraz tak, jak powinno. Nie jestem pewien, w jaki sposób udało mi się uzyskać mniej zainstalowaną wersję npm, ale ostrzegam, aby nie mieszać podobnych pakietów dystrybucyjnych i skompilowanych. Szkoda, że ​​często nie można polegać tylko na pakietach dystrybucyjnych, szczególnie w przypadku ruby ​​itp.
cboettig 27.12.12
1
@cboettig: dzięki za opinie, to bardzo doceniane. Jak zauważył Javier, nie jesteś zmuszony używać pakietów dystrybucyjnych. Ale podczas instalowania oprogramowania innych firm pamiętaj, aby nie instalować go w całym systemie. Na przykład używam Pythona Virtualenv, chroots, Linux Containers (LXC) i maszyn wirtualnych Qemu, gdy muszę uruchomić oprogramowanie, które nie jest dostarczane przez dystrybucję (lub gdy potrzebuję specjalnych konfiguracji systemu). Wszystkie te technologie (i wiele innych) pomagają izolować oprogramowanie, unikając bólu.
Andrea Corbellini,
Bieganie lesscdaje /usr/local/bin/lessc no such file or directory, ale bieganie which lesscdaje /usr/bin/lessc. Jak mam to zrobić, aby użyć lekcji z which lessc?
Jacob Valenta
3

Po wykonaniu kroków z odpowiedzi Andrei możesz być zmuszony do biegania, source ~/.bashrcjeśli dostajesz, bash: /usr/local/bin/lessc: No such file or directorykiedy biegasz lessc i kiedy which lesscpokazuje /usr/bin/lessc. Ma to na celu zaktualizowanie zmiennej środowiskowej $ PATH.

Brayden Williams
źródło
Zwróć również uwagę na odpowiedź z unix.stackexchange.com/questions/5609/… .
Jeppe Mariager-Lam