Apt-get, nvm üzerinden kurulan düğüm yazılımını tanımıyor


15

Bir .debpaket kurmaya çalışıyorum ancak nodejs, nodejs-underscore gibi çeşitli bağımlılıklar gerektiriyor, ancak bunların hepsi zaten üzerinden yüklendi nvmve kullanılabilir.

Zaten apt-getçatışmamaları için nvm üzerinden kurulmuş paketleri tanıyabilir miyim? Ben apt-get sistem çapında olduğunu biliyorum, oysa nvm yerel kullanıcı alanında çalışır, bu yüzden bu biraz kesmek gerekebilir.

Yanıtlar:


13

Mümkün olan en basit yaklaşım, yalnızca paket nvm veya .deb paketleri kullanmaktır . Bu muhtemelen uzun vadede çok fazla baş ağrısından kurtaracaktır, bu yüzden önce buna bakın. Bir .debpaket tarafından sağlanan düğümle ilgili neredeyse her şey nvmbunun yerine yüklenebilir gibi görünüyor .

Bu gerçekten mümkün değilse, ve .debkullanarak bağımlılıkların yüklü olduğunu söylemek için "kukla" paketler oluşturabilirsiniz . Bir şeyleri yanlış anlarsanız bunun potansiyel olarak uygun olabileceğini unutmayın. Ayrıca, paketleri kaldırsanız bile , apt, sahte paketleri kendiniz kaldırana kadar sahte paketler içinde tanımladığınız yedeklere sahip olduğunuzu düşünür.equivs-controlequivs-buildaptnvm

Öncelikle, sahte paketleri oluşturabilmemiz için "equivs" yükleyin:

sudo apt-get install equivs

Sahte paketi tanımlayan bir kontrol dosyası oluşturun:

cd ~
equivs-control nodejs-dummy

Bu kontrol dosyasını düzenleyin:

nano nodejs-dummy

Kontrol dosyasındaki satırların yorumunu kaldırın ve istediğiniz gibi değiştirin. Özellikle kullanarak değiştirdiğiniz paketleri listelemek için "Sağlar:" satırını ayarlayın nvm. Örneğin:

Package: nodejs-dummy
Version: (version slightly higher than what the apt package actually provides)
Maintainer: Your Name <yourname@example.com>
Provides: nodejs
Architecture: all
Description: Something that will remind you what this does ;)

Paketi oluşturun:

equivs-build nodejs-dummy

Son olarak yükleyin:

sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb

Kullanarak değiştirdiğiniz paketleri durulayın ve tekrarlayın nvm. Bir paket nvm, değiştirdiğiniz başka bir paketin belirli bir sürümüne bağlıysa, tam olarak bağlı olduğu sürüm numarasını kullanmanız gerekebilir. Bununla birlikte, hangi sorunların ortaya çıkabileceğinden emin değilim ve işletim sistemi paketleri sürümleri değiştirdiğinde kukla paketlerinizi yeniden oluşturmaya devam etmeniz gerekecektir.


1
Cevabınız için çok teşekkürler! Sıralamam düşük, bu yüzden oy almıyor ama oy verdim!
Louisgv

3
@Louisgv sorunuzu cevapladıysa, kabul etmeyi düşünün .
Örümcek Boris

Eşler hakkında bir şey bilmiyordum. Bu harika bir araç, teşekkürler!
brandizzi

5

Bu, nvm'nin yazılımı nasıl dağıttığıyla ilgili bir sorundur. Sadece herhangi bir dağıtım özel ambalajı yapmıyorlar. Spesifik olarak nvm hızlı bir okuma yaptı ve onlar sadece wget'ing ikili. Örneğin, nodejs 6 için yüklediği şey: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz Bu herhangi bir standart .deb veya .rpm meta verileri böylece gerçek paketleri düzgün bir şekilde yayınlayana kadar, paket yöneticilerinin yapabileceği çok fazla dağıtım seviyesi yoktur ve muhtemelen birbirleriyle çakışırlar. Eğer nvm'nin uygun paketleri yayınlamanın amacını ilgilendikleri bir şey değil, çünkü onları belirli dağıtım paketlerini desteklemeye bağlar. Bunun yerine nvm olan bir kesmek var. Belki de onların gitmesine karşı bir sorun çıkar. Bu yalnızca nodejs topluluğu tarafından düzeltilebilir.

Özellikle npm ve nvm şu anda herhangi bir kod imzalama ( kaynak ) kavramını desteklemiyor gibi görünüyor, bu nedenle çoğu dağıtım yöneticisinin paket yöneticilerinde iyi desteklenen dağıtım ambalajına kıyasla. Bu, sistem paketlerini kurmak için oldukça güvensiz bir yaklaşımdır.


4

Hayır, zaten söylediğin gibi yapamazsın. Apt, normal nvm paketlerinin kullanıcı düzeyinde kurulduğu sistem seviyesinde çalışır.

İki seçeneğiniz var -

  • İstediğiniz paketi nvm üzerinden ve zaten yerleştirilmiş olan diğer nvm paketlerini kullanın veya

  • paketi kullanarak apt-gettüm bağımlılıkları kurun ve kurun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.