ฉันควรใช้ taskel, งานใน APT หรือติดตั้ง metapackages ปกติ?


37

Tasksel หรือ Apt ฉลาด ๆ ?

ในอดีตที่ผ่านมาฉันมักจะเคยtaskselติดตั้งสิ่งที่เรียกว่า "งาน" อย่างไรก็ตามดูเหมือนว่าสิ่งนี้ได้รวมอยู่ใน APT:

apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]

และฉันสามารถติดตั้ง "งาน" ดังกล่าวได้โดยผนวกคาเร็ต ( ^) ลงไปเช่นนี้:

sudo apt-get install lamp-server^

นี่เทียบเท่ากับสิ่งต่อไปนี้หรือไม่?

sudo tasksel install lamp-server

และอันไหนที่ชอบ?

Metapackages

นอกจากนี้ metapackages ยังมาเล่นที่นี่ได้อย่างไร งานบางอย่างดูเหมือนจะไม่เป็น metapackage ในขณะที่งานอื่น ๆ :

apt-cache show lamp-server
N: Unable to locate package lamp-server

apt-cache show kubuntu-desktop
Package: kubuntu-desktop
[...]
Task: kubuntu-desktop

ดังนั้นโดยใช้ตัวอย่างสุดท้ายความแตกต่างระหว่างวิธีที่เป็นไปได้สามวิธีในการติดตั้งคืออะไร

  • sudo apt-get install kubuntu-desktop
  • sudo apt-get install kubuntu-desktop^
  • sudo tasksel install kubuntu-desktop

2
มองไปที่การส่งออกของเมื่อเทียบกับapt-get install -s lubuntu-desktop apt-get install -s lubuntu-desktop^ในภายหลังคุณจะเห็นอะไรเพิ่มเติมเช่นนี้: หมายเหตุเลือก 'policykit-1-gnome' สำหรับงาน 'lubuntu-desktop' / Note เลือก 'gnome-keyring' สำหรับงาน 'lubuntu-desktop' / Note เลือก 'libplist1' สำหรับงาน 'lubuntu-desktop' / หมายเหตุเลือก 'aspell-en' สำหรับงาน 'lubuntu-desktop' / หมายเหตุเลือก 'libsdl1.2debian' สำหรับงาน 'lubuntu-desktop' / ดังนั้นในกรณีนี้ ฉันไม่แน่ใจว่า "แครอท" อันใดอันหนึ่งดีกว่า

อ่านเพิ่มเติมได้ที่นี่: askubuntu.com/a/249373/25656

1
#warning เกี่ยวกับ taskel: อย่าใช้เพื่อลบงาน - ดูรายงานบั๊กบน launchpad
guntbert

คำตอบ:


36

ในระยะสั้น: มีคือความแตกต่างระหว่าง tasksel และฉลาดได้รับการติดตั้งของงาน

ดูตัวอย่างของคุณ:

วิธีที่ฉลาด - รับ

sudo apt-get install 'lamp-server^' จะประเมินให้ทำดังนี้:

  1. ค้นหาแคช (ไฟล์รายการแพ็กเกจ) สำหรับฟิลด์ "งาน:" ทั้งหมดและรับทั้งหมดด้วย "lamp-server"
  2. ติดตั้งแพ็คเกจเหล่านั้นด้วยวิธีมาตรฐาน:

    sudo apt-get install package1 package2...
    

วิธี taskel

sudo tasksel install lamp-serverจะค้นหางานที่เรียกว่า "lamp-server" ในหนึ่งในไฟล์การกำหนดค่าภายใต้/usr/share/tasksel/**/*.desc:

  1. ค้นหาไฟล์กำหนดค่าสำหรับฟิลด์ "งาน:" ชื่อ "lamp-server"
  2. ตรวจสอบว่ามีสิ่งที่จำเป็นต้องมีทั้งหมด (ฟิลด์ "คีย์:") และจำไว้หากไม่ได้ติดตั้ง
  3. เลือกวิธีการเลือกแพ็คเกจ (ฟิลด์ "แพ็คเกจ:") หากนี่คือ "รายการ" เพียงแค่ติดตั้งแพ็คเกจต่อไปนี้ตามชื่อ
  4. อ่านชื่อแพ็กเกจต่อไปนี้ทั้งหมดและส่งต่อไปยังวิธีที่เลือกไว้ก่อนหน้านี้เพื่อสร้างชื่อแพ็กเกจ
  5. /usr/lib/tasksel/info/lamp-server.preinstมองหา หากมีอยู่รันสคริปต์นี้
  6. ติดตั้งแพ็คเกจด้วย apt-get โดยใช้คำสั่งต่อไปนี้:

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. /usr/lib/tasksel/info/lamp-server.postinstมองหา หากมีอยู่รันสคริปต์นี้

ข้อสรุป

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

กลับไปที่คำถามแรกของคุณ:
ในกรณีพิเศษของคุณทั้งสองคำสั่งเกือบจะเทียบเท่ากัน (คุณควรเปิดใช้งานทั้งสองAPT::Install-RecommendsและAPT::Get::AutomaticRemove) ข้อแตกต่างเพียงอย่างเดียวคือสถานะแพ็กเกจเสริมของmysql-serverและการapache2ขึ้นต่อกัน (ตั้งค่าเป็น "ติดตั้งด้วยตนเอง" ด้วย apt-get ล้วน)

และสิ่งที่เกี่ยวกับ metapackages

หากคุณไม่ได้ใช้งานคุณสมบัติของ taskel เช่นการเลือกงาน (โดยเฉพาะอย่างยิ่งมีประโยชน์ในการติดตั้ง) และดำเนินการคำสั่งพิเศษก่อนและหลังบล็อกงานบางงานงานนั้นคล้ายกับ metapackage ความแตกต่างคือ: งานไม่ได้ลงทะเบียนเป็นแพคเกจในแคช APT
ดังนั้นหากคุณถอนการติดตั้งงานที่ต้องพึ่งพางานอื่น ๆ หนึ่งงานที่ไม่ได้ถูกทำเครื่องหมายว่าติดตั้งอัตโนมัติเพราะมันถูกติดตั้งอย่างชัดเจน หากคุณถอนการติดตั้ง metapackage การอ้างอิงจะถูกลบออกautoremoveเนื่องจากสถานะแพ็กเกจเสริมของพวกเขาคือ "ติดตั้งอัตโนมัติ" (หากไม่ได้ติดตั้งด้วยตนเอง)
หมายเหตุ:งานทั้งหมดกระจายอยู่ใน Debian ติดตั้ง metapackage task-TASKNAMEที่ชื่อว่า

ให้ตัวอย่างของคุณ:

  1. sudo apt-get install kubuntu-desktop
    • จะติดตั้ง kubuntu-desktopmetapackage การพึ่งพาคือ "ติดตั้งอัตโนมัติ"
  2. sudo apt-get install kubuntu-desktop^
    • จะเลือกแพคเกจทั้งหมดที่ติดแท็กด้วยงาน "kubuntu-desktop" นั่นคือการพึ่งพาของ metapackage kubuntu-desktopทั้งหมด พวกเขาทั้งหมดถูกทำเครื่องหมายเป็น "ติดตั้งด้วยตนเอง"
  3. sudo tasksel install kubuntu-desktop
    • ตรวจสอบให้แน่ใจว่า X ได้รับการติดตั้งก่อนที่จะติดตั้งแพ็คเกจงาน
    • จะติดตั้ง kubuntu-desktopmetapackage การพึ่งพาคือ "ติดตั้งอัตโนมัติ"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.