ฉันจะติดตั้งแอปพลิเคชันด้วยไฟล์ DEB สำหรับผู้ใช้คนเดียวได้อย่างไร


33

เมื่อทำการติดตั้งแอพพลิเคชั่นผ่านศูนย์ซอฟต์แวร์หรือไฟล์ DEB พวกเขามักจะได้รับการติดตั้งทั้งระบบสำหรับผู้ใช้

มีวิธีติดตั้งแอพพลิเคชั่นสำหรับผู้ใช้คนเดียวหรือไม่?

คำตอบ:


5

ขึ้นอยู่กับสิ่งที่คุณต้องการทำให้สำเร็จอาจมีวิธีที่แตกต่างกันในการทำให้งานนี้ (หรืออย่างน้อยก็ให้ลักษณะการทำงานที่คุณต้องการ)

การติดตั้งซอฟต์แวร์ในหลาย ๆ ทางเกิดขึ้นเพื่อทำให้ทรัพยากรพร้อมใช้งานหรืออนุญาตให้เข้าถึงสิ่งที่มีอยู่แล้วในระบบ

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

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

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

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

การควบคุมการดำเนินการการ
ควบคุมทรัพยากรสามารถทำได้ผ่านการอนุญาต Unix โปรไฟล์ apparmor สิทธิ์ SELinux และอื่น ๆ อาจมีระดับอื่น ๆ ของตัวกรองควบคุมซึ่งอาจเข้ามาเล่นขึ้นอยู่กับแอปพลิเคชัน ในกรณีที่ไม่มีโซลูชันที่ตรงเป้าหมายมากขึ้นคุณอาจต้องเขียนโปรแกรมล้อมรอบโปรแกรมบางโปรแกรมเพื่อควบคุมการเข้าถึงของผู้ใช้หรือกระบวนการ


3
+1 สำหรับการแยกการเปิดเผยและการควบคุมการปฏิบัติ
Takkat

10

ดีdpkgจะไม่ช่วยคุณได้เช่นนี้ไม่ได้เป็นจุดมุ่งหมายของการออกแบบ มันต้องการที่จะเป็นสำมะโนประชากรของแพ็คเกจที่ติดตั้งบนระบบ

สิ่งเดียวที่ข้ามไปยังใจเป็นเพียงการแยกแพคเกจและพยายามที่จะวางไฟล์ด้วยตนเองในบ้าน dir

อย่างไรก็ตามสิ่งนี้จะใช้ได้กับบางสิ่งเท่านั้น แพ็คเกจจำนวนมากแบ่งออกเป็นชิ้น ๆ (ไฟล์เรียกทำงานหรือสคริปต์ใน/usr/bin, ไลบรารีใน/libและ garb ใน/usr/shareอื่น ๆ ) และตำแหน่งเหล่านี้ถูกเขียนโค้ดแบบยากโดยสคริปต์บิลด์ ดังนั้นหากคุณลองทำอะไรแบบนี้~มันจะพัง คุณสามารถใช้เวลาหลายชั่วโมงในการคลี่คลายการอ้างอิง แต่คุณสามารถทำสิ่งที่มีประโยชน์กับเวลาของคุณเช่นการหาวิธีรักษาโรคมะเร็งหรือดูดซับความงามบางส่วนในโลก

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


1
สำหรับตัวเลือกสุดท้าย: สำหรับฉันดูเหมือนว่ามันอาจช่วยได้ในบางกรณี (โปรแกรมแบบง่าย) แต่โดยทั่วไปแล้วแพคเกจสำหรับตัวอย่างเช่นการติดตั้งสคริปต์เริ่มต้นไปที่/etc/init, ค้นหาไฟล์ config /etcหรือมีเส้นทางอื่นฮาร์ดโค้ด
จัดการ

2
โครงการตั้งอยู่บนพื้นฐานautoconfอาจอนุญาตให้มีการตั้งค่าที่กำหนดเองติดตั้ง dir ./configure --prefix=$HOME/localผ่าน
Ingo Karkat

6

ฉันไม่รู้มากเกินไปเกี่ยวกับเรื่องนี้ แต่ดูเหมือนว่าจากคำตอบอื่น ๆ ที่คุณอาจจะสามารถติดตั้งแพคเกจไปยังไดเรกทอรีอื่นแทน/ด้วยdpkgใช้--rootพารามิเตอร์แล้วทำchrootกับ dir ที่แพคเกจ " ติดตั้ง "ใน (ซึ่งสามารถเป็นไดเร็กตอรี่ในโฮมไดเร็กตอรี่ของผู้ใช้).

การติดตั้งแพคเกจสำหรับผู้ใช้อื่น ๆ กว่าrootมันอาจจะเป็นไปได้ที่จะใช้ขั้นตอนข้างต้นด้วยแทนfakechrootchroot

การปฏิเสธความรับผิดชอบ : ผมไม่ได้ลองนี้และไม่ได้มีประสบการณ์มากในขณะที่เขียนด้วยdpkgหรือchrootแต่จากสิ่งที่ฉันไม่ทราบเกี่ยวกับเครื่องมือเหล่านี้กระบวนการนี้ก็อาจจะทำงาน

ลิงค์ที่มีข้อมูลซึ่งอาจเป็นประโยชน์สำหรับผู้ที่ต้องการบรรลุผลของการchrootไม่มีrootความสามารถ:

ปรับปรุง

ตอนนี้ฉันได้ทำสิ่งเล็กน้อยที่สัมผัสกับเรื่องนี้และเรียนรู้เพิ่มเติม ...

แฟรกเมนต์ (การสร้างสภาพแวดล้อมท้องถิ่น):

  • Fakechroot - เลียนแบบchroot(1)
  • Debootstrap - สร้างลำดับชั้นของระบบไฟล์ Debian อื่นภายในไดเร็กทอรี
  • Fakeroot-NG / fakeroot - สามารถแสร้งทำเป็นว่าเป็นรากสำหรับบางสิ่ง
  • EmDebian - ตัวแปรเดเบียนที่ใช้พื้นที่น้อยและมักจะใช้ในสภาพแวดล้อม chroot
  • binfmt_misc - สามารถเรียกใช้ไฟล์โดยใช้ล่ามราวกับว่าพวกเขาเป็นไบนารีพื้นเมือง มีประโยชน์ร่วมกับผู้ใช้ qemu สำหรับทำงานกับไบนารี (หรือใน (ปลอม) chroot) ของสถาปัตยกรรมต่างประเทศ ( สคริปต์ / qemu-binfmt-conf.shซึ่งมาพร้อมกับซอร์สโค้ด QEMU จะทำสิ่งนี้โดยอัตโนมัติ)
  • พื้นที่ผู้ใช้ Qemu - สามารถเรียกใช้ไบนารีของสถาปัตยกรรมอื่น ๆ สามารถใช้กับเครื่องมือเหล่านี้บางอย่างเมื่อไม่สนับสนุนสถาปัตยกรรมตัวประมวลผลบางตัว
  • LwIP - สแต็กเครือข่าย TCP / IP ซึ่งสามารถเรียกใช้จากพื้นที่ผู้ใช้

เต็ม (ผู้ให้บริการสภาพแวดล้อมในท้องถิ่นที่สมบูรณ์):

  • ผู้ใช้โหมด linux - ใช้ระบบ linux อื่นเป็นกระบวนการ / โปรแกรมปกติ
  • Qemu - เรียกใช้คอมพิวเตอร์เสมือนที่สมบูรณ์
  • PRoot - ให้ฟังก์ชันของchroot(1), mount --bind, binfmt_miscและทำงานไบนารีจากสถาปัตยกรรมอื่น ๆ ที่ใช้ qemu-ผู้ใช้พื้นที่
  • Linux namespaces - อนุญาตให้มีรูทแบบเต็มในสภาพแวดล้อมแบบโลคัลเมื่อใช้เนมสเปซผู้ใช้คุณลักษณะที่มีอยู่ในเคอร์เนล Linux รุ่น 3.8 และหลัง

สรุป : โดยการลอกเลียนแบบหรือมีสิทธิ์รูทแบบโลคัลแพ็กเกจ DEB สามารถติดตั้งสำหรับสภาวะแวดล้อมโลคัล


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

@jgbelacqua - ฟอร์แมตใหม่ขอบคุณสำหรับเคล็ดลับ
Abbafei

4

คุณอาจใช้--rootตัวเลือกในdpkgการติดตั้งไปยังไดเรกทอรีอื่น /etcแต่อาจจะทำงานเป็นปัญหาหากโปรแกรมประยุกต์ที่จะมองหาสิ่งที่อยู่ในสถานที่ที่คงที่เช่น

ในระยะสั้นฉันไม่คิดว่าจะมีวิธีที่ง่าย


2

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


1
แรงจูงใจทั่วไปสำหรับการต้องการติดตั้งแอปพลิเคชันสำหรับผู้ใช้คนเดียวคือการหลีกเลี่ยงการใช้สิทธิ์ผู้ดูแลระบบสำหรับการติดตั้ง
ændrük

@ ændrük แต่ถ้าเขาติดตั้งจาก. deb แล้วเราไม่ได้สมมติสิทธิ์ผู้ดูแลระบบหรือไม่
belacqua

@jgbelacqua สำหรับความรู้ของฉันใช่การติดตั้งจาก. deb ต้องใช้สิทธิ์ผู้ดูแลระบบ แต่โดยทั่วไปแล้วการติดตั้งบางอย่าง "สำหรับผู้ใช้คนเดียวเท่านั้น" ไม่ควรยกระดับสิทธิ์ให้สูงขึ้นสำหรับการดูแลระบบ ~/binตัวอย่างเช่นผมบ่อยโปรแกรมสำหรับติดตั้งเพียงตัวเองโดยการวางไว้ใน มีข้อสงสัยในคำถามนี้เกี่ยวกับว่า Takkat ต้องการ จำกัด การเข้าถึง / การเปิดเผยแอปพลิเคชันที่มีผู้ใช้หลายคนหรือไม่หรือเขาต้องการติดตั้งแอปพลิเคชันผู้ใช้รายเดียว คำถามและข้อตกลงของคุณใช้การตีความในอดีตและส่วนที่เหลือถือว่าเป็นคำถามสุดท้าย
ændrük

1

น่าสงสัย

เดบิตส่วนใหญ่จะเป็นไฟล์เก็บถาวรที่ถูกแยกไปยังรูทของระบบไฟล์ของคุณเมื่อติดตั้ง (รวมถึงการปรับแต่งบางอย่าง) หากคุณต้องการติดตั้งสำหรับผู้ใช้เพียงคนเดียวคุณจะต้องติดตั้งลงในโฟลเดอร์ / home / user แม้ว่าคุณจะทำเช่นนั้น แต่ก็ไม่ได้ผลเนื่องจาก fe แอปพลิเคชันไบนารีจะไม่ลงจอดใน / usr / bin (หรือ sth ที่คล้ายกัน) และระบบจะไม่พบพวกเขาหากคุณพยายามเปิดใช้งาน ในทำนองเดียวกันห้องสมุด ฯลฯ จะไร้ประโยชน์เนื่องจากระบบไม่ทราบว่ามีบางแห่งใน / home คุณสามารถลองวิธี brute-forceและปรับตัวแปร PATH ให้ชี้ไปที่ใดก็ได้ที่คุณคลายบีบอัดไฟล์จากไฟล์เก็บถาวร deb แต่นั่นจะไม่ใช่แค่VERY ไม่ปลอดภัย แต่อาจทำให้เกิดปัญหาความเข้ากันได้ (รายการเมนู fe ใช้งานไม่ได้เนื่องจาก GNOME ขยายไฟล์. desktop ให้อยู่ใน / usr / share / applications)

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

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

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