Apt-get ไม่รู้จักซอฟต์แวร์โหนดที่ติดตั้งผ่าน nvm


15

ฉันกำลังพยายามติดตั้ง.debแพคเกจ แต่ต้องมีการอ้างอิงหลายอย่างเช่น nodejs, nodejs-underscore แต่ทั้งหมดนั้นติดตั้งผ่านnvmและพร้อมใช้งานแล้ว

มีอยู่แล้วฉันสามารถapt-getรับรู้แพคเกจติดตั้งผ่าน nvm เพื่อให้พวกเขาไม่ได้ปะทะกัน? ฉันรู้ว่า apt-get นั้นกว้างทั้งระบบในขณะที่ nvm ทำงานที่พื้นที่ผู้ใช้ในพื้นที่ดังนั้นจึงอาจต้องมีการแฮ็ก

คำตอบ:


13

วิธีที่ง่ายที่สุดเมื่อใดก็ตามที่เป็นไปได้คือการเพียงใช้อย่างใดอย่างหนึ่งnvm หรือ .debแพคเกจ สิ่งนี้อาจช่วยให้คุณประหยัดอาการปวดหัวได้ในระยะยาวดังนั้นให้ตรวจดูก่อน ดูเหมือนว่าเกือบทุกสิ่งที่เกี่ยวข้องกับโหนดที่จัดทำโดย.debแพ็คเกจสามารถติดตั้งผ่านnvmแทนได้

อย่างไรก็ตามหากเป็นไปไม่ได้จริง ๆ คุณอาจสร้าง.debแพคเกจ"จำลอง" โดยใช้equivs-controlและequivs-buildเพื่อบอกaptว่าคุณได้ติดตั้งการอ้างอิงแล้ว โปรดทราบว่าสิ่งนี้อาจสร้างความสับสนให้กับคุณได้หากคุณทำสิ่งผิดปกติ นอกจากนี้แม้ว่าคุณจะถอนการติดตั้งnvmแพคเกจ apt จะยังคงคิดว่าคุณมีสิ่งทดแทนที่คุณกำหนดไว้ในแพ็คเกจจำลองจนกว่าคุณจะถอนการติดตั้งแพ็คเกจจำลองเอง

ก่อนอื่นให้ติดตั้ง "equivs" เพื่อให้เราสามารถสร้างแพ็คเกจจำลองได้:

sudo apt-get install equivs

สร้างไฟล์ควบคุมที่อธิบายถึงแพ็คเกจจำลอง:

cd ~
equivs-control nodejs-dummy

แก้ไขไฟล์ควบคุมนี้:

nano nodejs-dummy

ยกเลิกการแสดงความคิดเห็นและเปลี่ยนบรรทัดในไฟล์ควบคุมตามต้องการ อยู่ในชุดโดยเฉพาะอย่างยิ่ง "ให้" nvmสายไปยังรายการแพคเกจที่คุณได้ใช้แทน ตัวอย่างเช่น:

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 ;)

สร้างแพ็คเกจ:

equivs-build nodejs-dummy

ในที่สุดติดตั้งมัน:

sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb

nvmล้างและทำซ้ำสำหรับแพคเกจสิ่งที่คุณได้ใช้แทน หากแพ็กเกจนั้นขึ้นอยู่กับเวอร์ชันเฉพาะของแพ็คเกจอื่นที่คุณแทนที่ด้วยnvmคุณอาจต้องใช้หมายเลขเวอร์ชันที่แน่นอนนั้นขึ้นอยู่กับ ฉันไม่แน่ใจว่าปัญหาที่อาจเกิดขึ้นจากการทำเช่นนั้นและคุณอาจต้องสร้างแพคเกจจำลองของคุณใหม่ทุกครั้งที่แพ็กเกจระบบปฏิบัติการเปลี่ยนเวอร์ชั่น


1
ขอบคุณมากสำหรับคำตอบ! การจัดอันดับของฉันต่ำดังนั้นการโหวตไม่ได้นับ แต่ฉันโหวตขึ้น!
Louisgv

3
@Louisgv ว่านี้ตอบคำถามของคุณให้พิจารณายอมรับมัน
Boris the Spider

ไม่ทราบเกี่ยวกับ equiv นี่เป็นเครื่องมือที่ยอดเยี่ยมขอบคุณ!
brandizzi

5

นี่เป็นปัญหาว่า nvm กระจายซอฟต์แวร์อย่างไร พวกเขาไม่ได้ทำบรรจุภัณฑ์เฉพาะ distro ใด ๆ โดยเฉพาะอย่างยิ่งการอ่าน nvm อย่างรวดเร็วและพวกเขาเป็นเพียง wget'ing ไบนารี ตัวอย่างเช่นนี่คือสิ่งที่ติดตั้งสำหรับ nodejs 6: https://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gzสิ่งนี้ไม่มีมาตรฐานใด ๆ . deb หรือ .rpm metadata ดังนั้นจนกว่าพวกเขาจะปล่อยแพ็กเกจจริงอย่างถูกต้องมีผู้จัดการแพคเกจระดับ distro ไม่มากสามารถทำและพวกเขาจะมีความขัดแย้งกับคนอื่น ถ้าฉันเข้าใจจุดของการปล่อย nvm แพ็กเกจที่เหมาะสมไม่ใช่สิ่งที่พวกเขาสนใจเพราะมันเชื่อมโยงพวกเขากับการสนับสนุนแพ็คเกจเฉพาะ distro ดังนั้นเรามีแฮ็คนั่นคือ NVM อาจยื่นปัญหากับคอมไพล์ของพวกเขา สิ่งนี้สามารถแก้ไขได้โดยชุมชน nodejs

โดยเฉพาะอย่างยิ่ง npm และ nvm ในปัจจุบันดูเหมือนจะไม่สนับสนุนแนวคิดใด ๆ ของการลงนามรหัส ( แหล่งที่มา ) ดังนั้นเมื่อเทียบกับบรรจุภัณฑ์ distro ซึ่งได้รับการสนับสนุนอย่างดีในผู้จัดการบรรจุภัณฑ์ของ distro ส่วนใหญ่ นี่เป็นวิธีที่ไม่ปลอดภัยพอสมควรในการติดตั้งแพ็คเกจระบบ


4

ไม่คุณไม่สามารถพูดได้ Apt ทำงานในระดับระบบโดยที่แพ็คเกจการติดตั้ง nvm ปกติในระดับผู้ใช้

คุณมีสองตัวเลือก -

  • อาจเป็นแพคเกจที่คุณต้องการผ่านทาง nvm และใช้แพ็คเกจ nvm อื่นที่ติดตั้งไว้แล้วหรือ

  • ติดตั้งแพคเกจโดยใช้apt-getและติดตั้งการอ้างอิงทั้งหมดด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.