ทำไมผู้จัดการแพคเกจจึงไม่มีการติดตั้งและการลงทะเบียนต่อผู้ใช้


23

ทั้งสองพาร์ทเมนต์และ DNF / ยำทั้งสองได้รับความนิยมมากที่สุดรูปแบบการจัดการแพคเกจสำหรับลินุกซ์ความรู้ของฉันเท่านั้นที่สนับสนุนการติดตั้งทั้งระบบของแพคเกจ: ไฟล์เป็นของรากไบนารีไปใน(/usr)?/s?binการตั้งค่าไปใน/etcและอื่น ๆ

อย่างไรก็ตามในระบบที่มีผู้ใช้หลายคนที่ไม่มีสิทธิ์ใช้งานรูทบ่อยครั้งมาก - ถ้าไม่เสมอไป - เกิดขึ้นที่ผู้ใช้ต้องการติดตั้งแอพหรือยูทิลิตี้บางอย่างที่มีให้สำหรับการแจกจ่ายนั้น และ s / เขาก็ใช้ได้กับการติดตั้งที่เป็นส่วนตัวและไม่ธรรมดาสำหรับผู้ใช้จำนวนมาก / ทั้งหมด

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

ดังนั้นเหตุผลที่ฟังก์ชั่นนี้ไม่ได้ถูกเพิ่มลงในระบบ / แพ็คเกจการจัดการทั่วไปเหล่านั้นคืออะไร?

หมายเหตุ: นี่เป็นคำถามที่ให้ข้อมูลเช่นฉันถามเกี่ยวกับสิ่งที่ผู้คนรู้เกี่ยวกับอดีตไม่ใช่สิ่งที่ผู้คนคิดเกี่ยวกับคุณลักษณะนี้


3
หากมีการจัดเตรียมไว้จะช่วยประหยัดเวลาในการรวบรวมซอฟต์แวร์จากแหล่งข้อมูลบนคอมพิวเตอร์ซึ่งฉันไม่มีสิทธิ์ผู้ใช้ขั้นสูง ฉันอยากรู้คำตอบ
Weijun Zhou

1
ความรู้ของฉันเกี่ยวกับเรื่องนี้ไม่ใช่สิ่งที่ดีที่สุด แต่ก็สามารถทำได้เพื่อป้องกันผู้ใช้จากการเติมฮาร์ดไดรฟ์ด้วยการพึ่งพาของซอฟต์แวร์ที่พวกเขาติดตั้งเป็นการส่วนตัว ถ้า apt ไม่ทำงานเหมือนรูทจะไม่สามารถอัปเดตไลบรารีระบบดังนั้นตอนนี้ผู้ใช้จะมีเวอร์ชันใหม่กว่าที่ระบบใช้ ทำซ้ำสำหรับผู้ใช้ทุกคนและเก่ากว่าฮาร์ดไดรฟ์ขนาดเล็กจะเต็มเร็วขึ้น
2560

1
@ Thegs: ฉันสงสัยว่านี่คือการพิจารณา โครงการซอฟต์แวร์น้อยหลีกเลี่ยงคุณสมบัติที่สำคัญเนื่องจากการพิจารณาเช่น "ถ้าคนทำเช่นนี้พวกเขาจะเติมดิสก์ไดรฟ์" ถ้ามันมีความเสี่ยงด้านความปลอดภัย นอกจากนี้ในระบบที่มีผู้ใช้หลายคนจะมีโควต้า และมีคนเพียงไม่กี่คนที่จะใช้สิ่งนี้ต่อไป รวมทั้งนี่คือการเก็งกำไรทั้งหมด ...
einpoklum - คืนสถานะโมนิก้า

2
กล่าวโดยย่อ: ไม่ใช่หน้าที่ของตัวจัดการแพ็กเกจระบบที่จะยุ่งกับข้อมูลผู้ใช้ ~ / bin, ~ / lib, etc มาจาก POV ของระบบ "data user"
cas

1
ผมเคยเห็นไม่กี่แพคเกจที่จัดจำหน่ายผ่านpip, npmและgopkg- บางส่วนเพราะพวกเขาติดตั้งใช้งานที่เฉพาะเจาะจงกำลัง distro อิสระและบางส่วนเนื่องจากพวกเขามักอนุญาตให้
Bob

คำตอบ:


15

แม้ว่าผู้จัดการแพคเกจทั่วไปไม่ได้ระบุกรณีการใช้งานนี้มีหลายโครงการที่ทำ:

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


ดังนั้น RPM รองรับสิ่งนี้ แต่พูดว่า dpkg ไม่ได้เหรอ?
einpoklum - คืนสถานะโมนิก้า

1
ฉันไม่ทราบเกี่ยวกับ dpkg จะค่อนข้างตรงไปตรงมาตั้งแต่ฉันไม่เคยสร้างแพคเกจ. deb ฉันเดา dpkg สนับสนุนไดเรกทอรีการติดตั้งแบบไดนามิก แต่ฉันสงสัยผู้ดูแลแพคเกจ. deb หลายคนทำ
jayhendren

อีกสิ่งหนึ่ง ... โดยทั่วไปแล้วสิ่งเหล่านี้จะสร้างตั้งแต่เริ่มต้นบูตหรือพึ่งพาสิ่งที่ติดตั้งในระดับระบบหรือไม่
einpoklum - คืนสถานะโมนิก้า

1
การจัดการแพ็กเกจทั้งระบบถือว่าไม่มีสิ่งใดที่พร้อมใช้งานหากยังไม่ได้ติดตั้งดังนั้นการค้นหาการอ้างอิงในแง่ของไฟล์จึงเท่ากับการค้นหาการอ้างอิงในแง่ของแพ็คเกจที่ติดตั้งซึ่งมีไฟล์เหล่านั้น แต่ด้วยตัวจัดการแพคเกจรองมีแพ็คเกจ / ไฟล์ทั้งระบบและแพ็คเกจ / ไฟล์เฉพาะผู้ใช้ ผู้จัดการแพคเกจมักจะพึ่งพาสิ่งที่พวกเขาได้ดาวน์โหลดและ / หรือสร้าง?
einpoklum - คืนสถานะโมนิก้า

2
ขึ้นอยู่กับ ผู้ที่รวบรวมจากแหล่งที่มาเช่น Homebrew และ Emerge โดยทั่วไปเพียงแค่พยายามสร้างแพ็คเกจโดยไม่มีการติดตามการพึ่งพามาก อื่น ๆ รวมกลุ่มพึ่งพากับแพคเกจ (นี่คือเครื่องมือสไตล์ App Store ส่วนใหญ่ทำงานเช่นเดียวกับ Flatpak และ Snaps) อื่น ๆ เช่น Zero Install ติดตั้งการพึ่งพาทั้งหมดเป็นแพ็คเกจระดับผู้ใช้แต่ละรายการ
jayhendren

6

ดังนั้นเหตุผลที่ฟังก์ชั่นนี้ไม่ได้ถูกเพิ่มลงในระบบ / แพ็คเกจการจัดการทั่วไปเหล่านั้นคืออะไร?

เพราะมันเพิ่มความซับซ้อนในการจัดการระบบเกินความจำเป็น

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