Apt-get tidak mengenali perangkat lunak simpul yang diinstal melalui nvm

15

Saya mencoba untuk menginstal sebuah .debpaket tetapi memerlukan beberapa dependensi seperti nodejs, nodejs-underscore, tetapi semua itu sudah diinstal melalui nvmdan tersedia.

Apakah di sana saya dapat apt-getmengenali paket yang diinstal melalui nvm sehingga tidak berbenturan? Saya tahu bahwa apt-get adalah seluruh sistem sedangkan nvm bekerja di ruang pengguna lokal jadi ini mungkin perlu beberapa peretasan.

Louisgv
sumber

Jawaban:

13

Pendekatan paling sederhana, jika memungkinkan adalah dengan hanya menggunakan salah satu nvm atau .deb paket. Ini mungkin akan menghemat banyak sakit kepala dalam jangka panjang, jadi lihatlah dulu. Sepertinya hampir semua hal yang berhubungan dengan simpul yang disediakan oleh suatu .debpaket dapat diinstal melalui nvmgantinya.

Namun, jika itu benar-benar tidak mungkin, Anda mungkin bisa membuat .debpaket "dummy" menggunakan equivs-controldan equivs-buildmemberi tahu aptbahwa Anda memiliki dependensi yang diinstal. Perhatikan bahwa ini berpotensi membingungkan jika Anda melakukan kesalahan. Juga, bahkan jika Anda menghapus nvmpaket, apt masih akan berpikir Anda memiliki pengganti yang telah Anda tetapkan dalam paket dummy sampai Anda menghapus sendiri paket dummy.

Pertama, instal "equivs" sehingga kita dapat membangun paket-paket dummy:

sudo apt-get install equivs

Buat file kontrol yang menjelaskan paket boneka:

cd ~
equivs-control nodejs-dummy

Edit file kontrol ini:

nano nodejs-dummy

Batalkan komentar dan ubah baris dalam file kontrol seperti yang diinginkan. Khususnya setel baris "Menyediakan:" untuk mencantumkan paket yang telah Anda gantikan dengan menggunakan nvm. Sebagai contoh:

Package: nodejs-dummy
Version: (version slightly higher than what the apt package actually provides)
Maintainer: Your Name <[email protected]>
Provides: nodejs
Architecture: all
Description: Something that will remind you what this does ;)

Bangun paket:

equivs-build nodejs-dummy

Akhirnya, instal:

sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb

Bilas dan ulangi untuk paket apa pun yang telah Anda gunakan nvm. Jika suatu paket tergantung pada versi spesifik dari paket lain yang telah Anda ganti nvm, Anda mungkin perlu menggunakan nomor versi persis yang menjadi sandarannya. Namun, saya tidak yakin masalah apa yang muncul karena melakukannya, dan Anda mungkin harus terus membangun kembali paket tiruan Anda setiap kali paket OS mengubah versi.

hampercm
sumber
1
Terimakasih banyak untuk balasannya! Peringkat saya rendah sehingga suara positif tidak masuk hitungan tetapi saya berhasil memilih!
Louisgv
3
@Louisgv jika ini menjawab pertanyaan Anda, pertimbangkan untuk menerimanya .
Boris the Spider
Tidak tahu tentang equivs. Ini alat yang hebat, terima kasih!
brandizzi
5

Ini adalah masalah dengan bagaimana nvm mendistribusikan perangkat lunak. Mereka tidak melakukan pengemasan khusus distro. Untuk lebih spesifik melakukan pembacaan cepat dari nvm dan mereka hanya binari wget'ing. Sebagai contoh, inilah yang diinstal untuk nodejs 6: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz Ini tidak mengandung standar .deb atau metadata .rpm sehingga sampai mereka benar merilis paket nyata tidak ada banyak paket manajer tingkat distro yang dapat dilakukan dan mereka kemungkinan akan saling bertentangan. Jika saya memahami titik nvm merilis paket yang tepat bukanlah sesuatu yang mereka tertarik justru karena mengikat mereka untuk mendukung paket-paket khusus distro. Jadi alih-alih kita memiliki retasan yang adalah nvm. Mungkin mengajukan masalah terhadap git mereka. Ini hanya dapat diperbaiki oleh komunitas nodejs.

Khususnya npm dan nvm saat ini tampaknya tidak mendukung konsep penandatanganan kode ( sumber ) apa pun sehingga bila dibandingkan dengan kemasan distro yang didukung dengan baik di sebagian besar manajer paket distro. Ini adalah pendekatan yang cukup tidak aman untuk menginstal paket sistem.

sevenbitbyte
sumber
4

Tidak, Anda tidak bisa seperti yang Anda katakan. Apt bekerja di tingkat sistem, di mana nvm biasa menginstal paket di tingkat pengguna.

Anda memiliki dua opsi -

  • Baik paket yang Anda inginkan melalui nvm dan gunakan paket nvm lain yang telah diinput, atau

  • instal paket menggunakan apt-getdan instal semua dependensi dengannya.

Anwar
sumber