KURANG kompiler CSS yang kembali kosong

8

Saya bahkan tidak yakin harus mulai dari mana. Beberapa bulan yang lalu, saya dengan senang hati dapat mengkompilasi CSS saya dari file KURANG saya. Hari ini, saya menjalankan salah satu recess --compile test.lessatau lessc test.lessdan saya hanya mendapatkan output kosong. Tidak ada kesalahan lessc test.less > test.csshanya membuat file kosong. The twitter-bootstrap Makefile untuk kesalahan KURANG, semua itu tidak membantu.

Saya menggunakan yang sederhana ini test.lessuntuk debug:

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

Saya di ubuntu 12.10, saya biasa sudo apt-get install node-lessmenyediakan lessc, dan menginstal reses dari arah di github (npm). Keduanya hanya memberi saya output kosong.

Bahkan lessc --versiontidak mengembalikan apa pun.

 which lessc

menunjukkan

/usr/local/bin/lessc

dan file tidak kosong.

nodeMungkin ada sesuatu yang terjadi pada instalasi saya , tetapi tidak tahu cara men-debug ini. apt-get remove --purge node-lessdan menginstal ulang tidak membantu.

Terima kasih banyak atas bantuannya atau tips tentang debugging!

cboettig
sumber
Ya, /usr/local/bin/lessctidak lokasi yang benar ketika itu dari repo resmi: packages.ubuntu.com/quantal/all/node-less/filelist ... Saya kira Anda diinstal dalam sistem jalan menggunakan sudo npm ...yang merupakan ide yang sangat buruk.
dAnjou

Jawaban:

7

Di Ubuntu dan distribusi lainnya, Anda harus memilih paket distribusi daripada menginstal paket secara manual. Jadi, pertama-tama, Anda harus menghapus reses yang diinstal melalui npm :

sudo npm uninstall recess -g

Hapus juga paket tanpa simpul yang diinstal melalui apt-get, sehingga kita bisa mulai dengan lingkungan yang bersih:

sudo apt-get remove node-less

Setelah mengeluarkan dua perintah ini, pastikan bahwa file-file berikut tidak ada, dan jika ada hapuslah:

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

Periksa juga direktori berikut (dan hapus direktori tersebut jika ada):

/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

Semua file dan direktori dapat dibuat dengan berbagai cara. Metode instalasi yang berbeda mengarah ke direktori berbeda yang digunakan. Menghapus semua file itu penting untuk memastikan tidak ada konflik: Anda harus selalu memiliki satu, dan hanya satu, versi perangkat lunak yang diinstal pada sistem Anda. Satu-satunya pengecualian adalah ketika distribusi itu sendiri menyediakan versi berbeda dari perangkat lunak yang sama (dalam hal ini, paket dibuat sehingga mereka tidak saling bertentangan).

Sekarang Anda memiliki lingkungan yang bersih dan dapat menginstal node-less :

sudo apt-get install node-less

Perhatikan bahwa paket node-less tidak dikirimkan /usr/bin/recess, hanya saja /usr/bin/lessc, jadi tidak apa-apa jika recess --compilegagal (atau, lebih baik, harus gagal).

Jika lesscmasih tidak berfungsi, silakan periksa output dari which lessc. Ingat: jika ia mengembalikan sesuatu yang berbeda dari /usr/bin/lesscitu, itu berarti Anda tidak menggunakan lessc dari paket distribusi, tetapi sesuatu yang lain.

Andrea Corbellini
sumber
Anda tidak perlu memilih paket-paket distro, tetapi mencampur paket-paket distro dan kompilasi yang menyediakan binari serupa benar-benar merupakan resep untuk masalah.
Javier Rivera
@Javier: hai. Tentunya Anda tidak perlu memilih hanya paket distribusi, tetapi kami berada di Tanya Ubuntu dan saya pikir solusi yang paling tepat adalah yang memberitahu Anda bagaimana menggunakan paket distribusi. :-)
Andrea Corbellini
Hanya jawaban yang cemerlang, terima kasih atas penjelasannya. Semuanya berfungsi sekarang sebagaimana mestinya. Tidak yakin bagaimana saya berhasil mendapatkan versi nud dari npm yang kurang terinstal, tetapi saya mengingatkan untuk tidak mencampur paket-paket distro & kompilasi yang serupa telah dicatat dengan baik. Sangat disayangkan bahwa seringkali tidak mungkin untuk hanya mengandalkan paket-paket distro, terutama dengan ruby, dll.
cboettig
1
@cboettig: terima kasih atas tanggapan Anda, ini sangat dihargai. Seperti yang ditunjukkan Javier, Anda tidak dipaksa untuk menggunakan paket distribusi. Tetapi ketika Anda menginstal perangkat lunak pihak ketiga, ingatlah untuk tidak menginstalnya secara luas. Sebagai contoh, saya menggunakan Python Virtualenv, chroots, Linux Containers (LXC) dan mesin virtual Qemu ketika saya perlu menjalankan perangkat lunak yang tidak disediakan oleh distribusi (atau ketika saya memerlukan konfigurasi sistem khusus). Semua teknologi ini (dan banyak lainnya) membantu Anda mengisolasi perangkat lunak, menghindari rasa sakit.
Andrea Corbellini
Berlari lesscmemberi /usr/local/bin/lessc no such file or directory, tetapi berlari which lesscmemberi /usr/bin/lessc. Bagaimana saya mengatakannya untuk menggunakan lessc dari which lessc?
Jacob Valenta
3

Setelah mengikuti langkah-langkah dari jawaban Andrea Anda mungkin harus menjalankan source ~/.bashrcjika Anda mendapatkan bash: /usr/local/bin/lessc: No such file or directoryketika Anda menjalankan lessc dan kapan which lesscacara /usr/bin/lessc. Ini untuk memperbarui variabel lingkungan $ PATH Anda.

Brayden Williams
sumber
Perhatikan juga jawaban dari unix.stackexchange.com/questions/5609/… di samping ini.
Jeppe Mariager-Lam