ฉันจะแยกแพคเกจเฉพาะออกจากการติดตั้งด้วย apt-get ได้อย่างไร


12

ฉันต้องการที่จะไม่รวมแพคเกจที่เฉพาะเจาะจงจากการติดตั้งด้วยapt-getนั่นคือการติดตั้งโดยไม่ต้อง metapackage apt-getรายการแพคเกจเฉพาะอย่างยิ่งกับหนึ่งอุทธรณ์ของ

ตัวอย่างเช่นในบรรทัดคำสั่ง Ubuntu 14.04 LTS ฉันกำลังติดตั้งสภาพแวดล้อมเดสก์ท็อป MATE ใน 14.04 LTS MATE ไม่ใช่รสชาติที่เป็นทางการดังนั้นฉันจึงเพิ่ม PPA:

sudo apt-get install software-properties-common # need them for 'apt-add-repository'
sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
sudo apt-get update

จากนั้นทำการติดตั้ง:

sudo apt-get install xorg mate-core --no-install-recommends

แม้ว่าจะไม่มีอุปกรณ์เสริมที่แนะนำ แต่mate-coreติดตั้งเทอร์มินัลอีมูเลเตอร์ 3 เครื่อง: xterm, uxtermและmate-terminal ตัวหลังไม่มีฟอนต์ที่เหมาะสมขณะติดตั้งในการกำหนดค่าขั้นต่ำนี้

สมมติว่าฉันตัดสินใจว่า 3 โปรแกรมขั้วจะเป็นมากเกินไปและฉันต้องการที่จะติดตั้งxorgและmate-core โดยไม่ต้อง และxterm mate-terminalฉันทำได้

sudo apt-get install xorg mate-core --no-install-recommends
sudo apt-get purge xterm mate-terminal

แต่เป็นไปได้ไหมที่จะทำในครั้งเดียว? มีไวยากรณ์บางอย่างเช่น

sudo apt-get install xorg mate-core --without xterm mate-terminal

คุณแน่ใจว่าคุณสามารถลบxtermและmate-terminal? ใน 15.04 mate-terminalนั้นเป็นการพึ่งพายากmate-desktop-environment-coreซึ่งเป็นการพึ่งพาอย่างหนักmate-coreและฉันคิดว่า PPA mate-terminalไม่ได้จัดเตรียมไว้ให้x-terminal-emulator(ซึ่งแพ็คเกจใน 15.04 ทำ)
muru

บางทีคุณพูดถูกเว้นแต่ว่าดอกจันติดกับชื่อแพ็คเกจหมายถึงบางสิ่งที่พิเศษที่นี่ นอกจากนี้พื้นที่เล็ก ๆ ที่น่าประหลาดใจก็จะถูกปลดปล่อยให้เป็นอิสระ อย่างไรก็ตามคำถามของฉันเกี่ยวกับการลบสิ่งที่สามารถลบออกพูดXTermและอาจUXTerm(ฉันไม่แน่ใจว่าชื่อแพคเกจสำหรับหลังคืออะไร)
นิโคไล Leschov

1
นี่คือสิ่งที่คุณกำลังมองหา? askubuntu.com/questions/75895/...
เซท

@Seth ไม่มาก: ฉันต้องการถ้าจะมีไวยากรณ์บางอย่างเช่นsudo apt-get install xorg mate-core --without xterm mate-terminal
Nickolai Leschov

หากคุณใช้aptitude(หรือผู้จัดการแพ็คเกจกราฟิก) คุณสามารถ (de) เลือกแพ็คเกจที่จะติดตั้งและหากมีผลลัพธ์หนึ่งรายการในการพึ่งพาที่ใช้งานไม่ได้คำอธิบายจะได้รับ (โดยปกติ)
saiarcot895

คำตอบ:


7

ดังนั้นคู่หลัก ขึ้นอยู่กับmate-desktop-environment-coreว่าในทางกลับกันขึ้นอยู่กับmate-terminalบนการพึ่งพาไม่สามารถแตกง่ายได้ หรือapt-getมิได้aptitudeสนับสนุน--withoutหรือ--excludeตัวเลือกและ "ถือ" แพคเกจจะไม่ช่วยเหลือ

$ echo "mate-terminal hold" | sudo dpkg - ชุดตัวเลือก
$ sudo apt-get install mate-core
[ ... ]
ไม่สามารถติดตั้งแพคเกจบางอย่าง ...
แพ็คเกจต่อไปนี้มีการขึ้นต่อกันที่ไม่คาดคิด:

แน่นอนว่าเราสามารถใช้dpkg --force-dependsในการติดตั้งแพ็คเกจ แต่นั่นอาจไม่ใช่สิ่งที่คุณต้องการ

ความเป็นไปได้ที่จะเติมเต็ม Depends:ธงด้วยแพ็คเกจจำลอง:

$ sudo apt-get install equivs
$ equivs-control mate-terminal
$ vi mate-terminal
มาตรา: อื่น ๆ
ระดับความสำคัญ: ไม่บังคับ
รุ่นมาตรฐาน: 3.9.2
แพคเกจ: mate-terminal
เวอร์ชัน: 1.8.0
คำอธิบาย: แพ็คเกจจำลองสำหรับคู่สมรส
: x

$ equivs-build mate-terminal
$ sudo dpkg -i mate-terminal_1.8.0_all.deb

ตอนนี้mate-coreควรจะสามารถติดตั้งmate-terminalโดยไม่มี ทำซ้ำเช่นเดียวกันสำหรับแพคเกจอื่น ๆ ที่ต้องการยกเว้น

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

อย่างไรก็ตามตัวเลือกที่เหมือนจริงมากขึ้นคือการยื่นคำร้องต่อเจ้าของ PPAเพื่อให้แพ็คเกจเมตาอื่นสำหรับ MATE ด้วยDependsแพ็คเกจที่น้อยกว่า


4

หากคุณใช้aptitudeหรือผู้จัดการแพ็คเกจกราฟิก (Synaptic ฯลฯ ) คุณสามารถยกเลิกการเลือกแพ็คเกจที่ควรติดตั้งตราบใดที่มันไม่ทำให้เกิดปัญหาการพึ่งพา

ในกรณีของaptitudeก่อนที่จะติดตั้งแพคเกจ (ในมุมมองกราฟิก) มันจะแสดงให้คุณเห็นว่าทำไมการติดตั้งแพคเกจขึ้นอยู่กับ ในกรณีของฉันฉันใช้ KDE และไม่มีแพ็คเกจ MATE ใด ๆ ถ้าฉันบอกให้ติดตั้งmate-coreฉันจะได้รับสิ่งต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ขอให้สังเกตว่าmate-coreถูกทำเครื่องหมายว่ากำลังติดตั้งด้วยตนเองและกำลังติดตั้งแพคเกจอื่น ๆ อีกมากมาย สำหรับmate-terminalแพ็คเกจด้านล่างมันบอกว่า " mate-desktop-environment-core[จักรวาล] ขึ้นอยู่กับmate-terminal(> = 1.0.0)" จะไปยังรายการสำหรับmate-desktop-environment-core,

ป้อนคำอธิบายรูปภาพที่นี่

" mate-core[จักรวาล] ขึ้นอยู่กับmate-desktop-environment-core(> = 1.8.0 + 9)" นี่คือเหตุผลที่mate-terminalกำลังถูกติดตั้ง

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

ป้อนคำอธิบายรูปภาพที่นี่


2

วิธีอื่น

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

  • รายการการพึ่งพาสามารถพบได้ที่DEBIAN / control -> ขึ้นอยู่กับ
  • สำหรับความช่วยเหลือเกี่ยวกับการเปลี่ยนตำแหน่ง deb ดูคำตอบของฉันเกี่ยวกับวิธีการสร้าง PPA

0

มีaptไวยากรณ์พิเศษสำหรับสถานการณ์เช่นนี้: การผนวกยัติภังค์ (เครื่องหมายลบ) เข้ากับแพ็คเกจจะเป็นการลบ / ไม่ติดตั้งดังนั้นสิ่งที่ใกล้เคียงที่สุดกับคุณsudo apt-get install xorg mate-core --without xterm mate-terminal คือ sudo apt-get install xorg mate-core xterm- mate-terminal- (เห็นใน/ubuntu//a/1011439/182923 )

มันจะไม่ช่วยในกรณีนี้ในขณะที่คุณจะวิ่งเข้าไป

The following packages have unmet dependencies:
 mate-desktop-environment-core : Depends: mate-terminal (>= 1.20) but it is not going to be installed                                                                        
E: Unable to correct problems, you have held broken packages.

แต่ดูเหมือนจะเป็นคำตอบสำหรับคำถามเฉพาะของคุณ ดังนั้นสำหรับการอ้างอิงข้ามโพสต์นี้

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