Haruskah saya menggunakan tasksel, tugas di APT atau menginstal metapackages biasa?

37

Tasksel atau Apt biasa?

Di masa lalu saya selalu terbiasa taskselmenginstal yang disebut "tugas". Namun, tampaknya ini telah terintegrasi dalam APT:

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

dan bahwa saya dapat menginstal "tugas" tersebut dengan menambahkan tanda sisipan ( ^) untuknya, seperti ini:

sudo apt-get install lamp-server^

Apakah ini setara dengan yang berikut ini?

sudo tasksel install lamp-server

Dan mana yang lebih disukai?

Metapackages

Selain itu, bagaimana metapackage berperan di sini? Beberapa tugas tampaknya bukan metapackage sementara yang lain adalah:

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

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

Jadi, dengan menggunakan contoh terakhir, apa perbedaan antara tiga cara berikut yang mungkin untuk menginstal?

  • sudo apt-get install kubuntu-desktop
  • sudo apt-get install kubuntu-desktop^
  • sudo tasksel install kubuntu-desktop
gertvdijk
sumber
2
Lihatlah output dari apt-get install -s lubuntu-desktopversus apt-get install -s lubuntu-desktop^. Dalam yang terakhir, Anda akan melihat sesuatu tambahan seperti ini: Catatan, memilih 'policykit-1-gnome' untuk tugas 'lubuntu-desktop' / Note, memilih 'gnome-keyring' untuk tugas 'lubuntu-desktop' / Note, memilih 'libplist1' untuk tugas 'lubuntu-desktop' / Note, memilih 'aspell-en' untuk tugas 'lubuntu-desktop' / Note, memilih 'libsdl1.2debian' untuk tugas 'lubuntu-desktop' / Jadi, dalam kasus khusus ini , Saya tidak yakin yang "wortel" lebih baik.
Lebih banyak membaca di sini: askubuntu.com/a/249373/25656
1
#warning about tasksel: tidak pernah menggunakannya untuk menghapus tugas - lihat laporan bug di launchpad
guntbert

Jawaban:

36

Singkatnya: Ada adalah perbedaan antara tasksel dan proses instalasi apt-get tugas.

Melihat contoh Anda:

Cara tepat

sudo apt-get install 'lamp-server^' akan mengevaluasi untuk melakukan hal berikut:

  1. Cari cache (file daftar paket) untuk semua bidang "Tugas:" dan dapatkan semuanya dengan "server lampu".
  2. Instal paket-paket itu dengan cara standar:

    sudo apt-get install package1 package2...
    

Cara tasksel

sudo tasksel install lamp-serverakan mencari tugas yang disebut "lamp-server" di salah satu file konfigurasinya di bawah /usr/share/tasksel/**/*.desc:

  1. Cari file konfigurasi untuk bidang "Tugas:" bernama "lamp-server".
  2. Periksa apakah semua prasyarat tersedia (bidang "Kunci:") dan ingatlah jika tidak dipasang.
  3. Pilih metode untuk memilih paket (bidang "Paket:"). Jika ini "daftar" cukup instal paket berikut dengan nama.
  4. Baca semua nama paket berikut dan berikan kepada metode yang sebelumnya dipilih untuk menghasilkan nama paket.
  5. Carilah /usr/lib/tasksel/info/lamp-server.preinst. Jika ada, jalankan skrip ini.
  6. Instal paket dengan apt-get menggunakan perintah berikut:

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. Carilah /usr/lib/tasksel/info/lamp-server.postinst. Jika ada, jalankan skrip ini.

Kesimpulan

tasksel lebih kuat dalam memproses dan memilih tugas. Itu dapat menjalankan skrip tambahan sebelum / setelah instalasi / penghapusan tugas. Dan manfaat terbesar: Anda dapat memodifikasi tugas dan membuat yang baru dengan sangat mudah. Tidak mungkin mengedit file daftar paket resmi tanpa kekurangan (tanda tangan yang valid).

Kembali ke pertanyaan pertama Anda:
Dalam kasus khusus Anda, kedua perintah hampir sama (seharusnya Anda telah mengaktifkan keduanya APT::Install-Recommendsdan APT::Get::AutomaticRemove). Satu-satunya perbedaan adalah status paket diperluas mysql-serverdan apache2dependensi (diatur ke "diinstal secara manual" dengan apt-get polos).

Dan bagaimana dengan metapackages?

Jika Anda tidak menggunakan fitur tasksel seperti memilih tugas (terutama membantu saat instalasi) dan menjalankan perintah tambahan sebelum dan setelah beberapa blok tugas, maka tugas sangat mirip dengan metapackage. Perbedaannya adalah: Tugas tidak terdaftar sebagai paket dalam cache APT.
Jadi, jika Anda menghapus satu ketergantungan-tugas, deps-tugas lainnya tidak ditandai sebagai terinstal secara otomatis karena diinstal secara eksplisit. Jika Anda menghapus metapackage, dependensi akan dihapus autoremovekarena status paket tambahannya adalah "terinstal otomatis" (jika tidak diinstal secara manual).
Catatan: Semua tugas yang didistribusikan di Debian menginstal metapackage bernama task-TASKNAME.

Memberi contoh Anda:

  1. sudo apt-get install kubuntu-desktop
    • Akan menginstal metapackage kubuntu-desktop. Dependensi "diinstal otomatis".
  2. sudo apt-get install kubuntu-desktop^
    • Akan memilih semua paket yang ditandai dengan tugas "kubuntu-desktop". Itu semua dependensi dari metapackage kubuntu-desktop. Semuanya ditandai sebagai "terpasang secara manual".
  3. sudo tasksel install kubuntu-desktop
    • Pastikan X diinstal sebelum menginstal paket tugas.
    • Akan menginstal metapackage kubuntu-desktop. Dependensi "diinstal otomatis".
Lasall
sumber