แนวปฏิบัติที่ดีเกี่ยวกับระบบการจัดการหลายแพคเกจ


14

ภาษาการเขียนโปรแกรมบางภาษามาพร้อมกับระบบการจัดการแพคเกจของตนเองเช่นในกรณีของ R install.packagesคำสั่งในตัวจะติดตั้งจากที่เก็บ CRAN และจัดการกับการพึ่งพา

ในทางตรงกันข้ามระบบปฏิบัติการมาพร้อมกับระบบการจัดการแพกเกจของตัวเองเช่นaptคำสั่งสำหรับการแจกแจงลินุกซ์ที่ใช้เดเบียน

ฉันตัดสินใจว่าควรใช้ตัวจัดการแพคเกจการกระจายเพื่อเป็นการรับประกันว่าทุกอย่างในระบบของฉันจะใช้งานร่วมกันได้ (ดู/programming//a/31293955/1878788 )

แต่ไม่นานมานี้วันหนึ่งเมื่อฉันต้องการสิ่งที่ไม่มีในแบบนี้ ตัวอย่างเช่นโปรแกรมชีวสารสนเทศศาสตร์ที่ไม่ได้บรรจุโดยการแจกจ่ายของฉันจะต้องมีรุ่นที่เฉพาะเจาะจงของอาร์มันเกิดขึ้นว่าโปรแกรมนั้นสามารถใช้ได้ผ่านโครงการที่ชื่อว่า "bioconductor" ซึ่งมีเป้าหมายคือการให้แพคเกจ R สำหรับชีวสารสนเทศศาสตร์ ใช้งานร่วมกันได้ (ดูhttps://www.bioconductor.org/install/#why-biocLite )

ดังนั้นฉันตัดสินใจที่จะไม่ใช้ระบบการจัดการบรรจุภัณฑ์ OS ของฉันสำหรับ R และติดตั้งทุกอย่างผ่านbiocLiteคำสั่งที่ได้รับจากโครงการ bioconductor

วิธีการนี้ดำเนินไปอย่างราบรื่นจนกระทั่งบางครั้งฉันค้นพบว่าเพื่อรักษาระบบนิเวศทางชีวสารสนเทศที่เชื่อมโยงกันมีสุขภาพดีและสร้างใหม่ได้อย่างง่ายดายบางคนตัดสินใจใช้ระบบการจัดการแพคเกจ conda โครงการนี้เรียกว่า "bioconda" ไม่เพียง แต่ให้แพ็คเกจ R เท่านั้น แต่ยังมีสิ่งต่าง ๆ จากภาษาทุกประเภทที่มีความเป็นไปได้ที่จะเปลี่ยนเวอร์ชั่นได้อย่างง่ายดายและอื่น ๆ (ดูhttps://bioconda.github.io/ )

ฉันจึงตัดสินใจใช้วิธีนี้แทนและมันก็ดำเนินไปอย่างราบรื่นจนกระทั่งฉันต้องการแพ็คเกจ R ที่ไม่ได้จัดทำโดย bioconda / conda มันง่ายมากที่คาดคะเน แต่ความพยายามของฉันในการทำชุด conda ล้มเหลวจากนั้นฉันพยายามติดตั้งแพคเกจโดยใช้วิธีการทางชีวภาพและมันล้มเหลวอีกครั้ง ฉันรู้สึกว่าการติดตั้ง R อย่างไม่ถูกต้องกำลังถูกใช้โดยกลไกการสร้างบรรจุภัณฑ์ ดังนั้นฉันตัดสินใจลบการติดตั้ง conda ของฉัน (ยังเด็กมาก) และกลับไปที่ระบบนิเวศตัวสะสมทางชีวภาพของฉัน

ฉันสงสัยว่าฉันจะต้องกระโดดจากวิธีหนึ่งไปอีกนานแค่ไหน มีวิธีปฏิบัติที่ดีโดยทั่วไปเกี่ยวกับวิธีจัดการกับการจัดการบรรจุภัณฑ์หลายระดับรบกวนหรือซ้อนทับกันหรือไม่?

แก้ไข (14/09/2017) : แต่เราพิจารณาตัวเลือกอื่นคือการใช้แพคเกจผู้จัดการ OS ระดับทางเลือกเช่นGuixหรือห้าม


1
โครงการ Fedora มีแนวทางสำหรับการบรรจุโปรแกรม R แพ็คเกจ R RPM ใน Fedora, RHEL และ CentOS จะปฏิบัติตามสิ่งเหล่านี้
Michael Hampton

คำตอบ:


13

ฉันไม่แน่ใจว่ามีให้บริการสำหรับ R (ได้ยินเกี่ยวกับ REnv) แต่สำหรับ Python ฉันได้ตัดสินใจเกี่ยวกับวิธีปฏิบัติที่ผู้ใช้ทุกคนต้องรับผิดชอบต่อสภาพแวดล้อม Python ของตนเองด้วยpyenv(เหมือนจริงกับ Perl perlbrewและ Ruby ด้วยRVM) ด้วยวิธีนี้ผู้ใช้สามารถสร้างสภาพแวดล้อมที่เหมาะสมที่สุดสำหรับทุกโครงการโดยปราศจากความช่วยเหลือของฉัน ( pyenvจัดการการติดตั้ง Python และจากนั้นคุณสามารถใช้pipเพื่อติดตั้งโมดูลในเครื่องไปยังการติดตั้ง Python ที่เฉพาะเจาะจงนั้น)

แพ็คเกจระบบใช้สำหรับความต้องการของระบบเท่านั้น


0

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

ดังนั้นฉันจะบอกว่าวิธีที่ดีที่สุดในกรณีนี้คือการใช้ฟังก์ชั่นในตัวของภาษา หากผู้สร้าง R จะสร้างเครื่องมืออย่างเป็นทางการสำหรับจัดการแพ็คเกจมันจะยอดเยี่ยม แต่การใช้เครื่องมือที่ไม่เป็นทางการนั้นค่อนข้างเสี่ยง

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