Bagaimana cara mengecualikan paket spesifik dari instalasi dengan apt-get?

12

Saya ingin mengecualikan paket tertentu dari instalasi dengan apt-get, yaitu, menginstal metapackage tanpa daftar paket tertentu, lebih disukai dengan satu permintaan apt-get.

Misalnya, di baris perintah Ubuntu 14.04 LTS, saya menginstal lingkungan desktop MATE. Dalam 14,04 LTS MATE bukan cita rasa resmi, jadi saya menambahkan 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

lalu instal:

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

Bahkan tanpa tambahan direkomendasikan, mate-coremenginstal 3 emulator terminal: xterm, uxtermdan mate-terminal , yang terakhir kurang font yang tepat saat diinstal dalam konfigurasi minimal ini.

Misalkan saya memutuskan bahwa 3 program terminal akan terlalu banyak dan saya ingin menginstal xorgdan mate-core tanpa xterm dan mate-terminal. Saya bisa melakukannya

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

tetapi apakah mungkin untuk melakukan ini sekaligus? Apakah ada beberapa sintaks seperti

sudo apt-get install xorg mate-core --without xterm mate-terminal
Nickolai Leschov
sumber
Apakah Anda yakin dapat menghapus xtermdan mate-terminal? Dalam 15.04, mate-terminaladalah ketergantungan yang sulit mate-desktop-environment-core, yang merupakan ketergantungan yang sulit mate-core, dan saya kira PPA mate-terminaltidak menyediakan x-terminal-emulator(yang dilakukan oleh paket dalam 15.04).
muru
Mungkin Anda benar , kecuali tanda bintang di sebelah nama paket berarti sesuatu yang istimewa di sini. Juga, secara mengejutkan sedikit ruang yang akan dibebaskan. Lagi pula, pertanyaan saya adalah tentang menghapus apa pun yang bisa dihapus, katakan, XTermdan mungkin UXTerm(saya tidak yakin apa nama paket untuk yang terakhir)
Nickolai Leschov
1
Apa ini yang kamu cari? askubuntu.com/questions/75895/…
Seth
@Seth Tidak cukup: Saya ingin jika akan ada beberapa sintaksis sepertisudo apt-get install xorg mate-core --without xterm mate-terminal
Nickolai Leschov
Jika Anda menggunakan aptitude(atau beberapa manajer paket grafis), Anda dapat (de) memilih paket mana yang akan diinstal, dan jika salah satu mengakibatkan ketergantungan yang rusak, penjelasan (biasanya) akan diberikan.
saiarcot895

Jawaban:

7

Jadi, mate-core tergantung pada mate-desktop-environment-coreyang bergantung pada mate-terminal. Sebuah tergantung tidak dapat rusak dengan mudah. Juga apt-gettidak aptitudemendukung opsi --withoutatau --excludedan "menahan" paket tidak akan membantu:

$ echo "mate-terminal hold" | sudo dpkg --set-pilihan
$ sudo apt-get install mate-core
[...]
Beberapa paket tidak dapat diinstal ...
Paket-paket berikut memiliki dependensi yang tidak terpenuhi:

Tentu, seseorang dapat menggunakan dpkg --force-dependsuntuk menginstal paket, tapi itu mungkin bukan yang Anda inginkan.

Kemungkinan akan memenuhi Depends:bendera dengan paket boneka:

$ sudo apt-get install equivs
$ equivs-control mate-terminal
$ vi mate-terminal
Bagian: misc
Prioritas: opsional
Versi Standar: 3.9.2
Paket: mate-terminal
Versi: 1.8.0
Deskripsi: Paket dummy untuk mate-terminal
: x

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

Sekarang mate-coreharus dapat menginstal tanpa mate-terminal. Ulangi hal yang sama untuk paket lain yang akan dikecualikan.

Memang ini adalah upaya yang cukup dan sebuah --withoutpilihan akan menyenangkan. Mungkin bug wishlist dapat dibuka untuk menyediakan fungsionalitas seperti itu di masa depan, tapi entah bagaimana saya ragu bahwa ini akan diimplementasikan.

Namun, opsi yang lebih realistis adalah mengajukan petisi kepada pemilik PPA untuk menyediakan paket meta lain untuk MATE dengan Dependspaket yang lebih rendah .

ckujau
sumber
4

Jika Anda menggunakan aptitudeatau manajer paket grafis (Synaptic, dll.), Maka Anda dapat membatalkan pilihan paket mana yang harus diinstal selama tidak menyebabkan masalah ketergantungan.

Dalam hal aptitude, sebelum menginstal paket (dalam tampilan grafis), itu akan menunjukkan kepada Anda mengapa paket dependen sedang diinstal. Dalam kasus saya, saya menggunakan KDE, jadi tidak punya paket MATE. Jika saya memintanya untuk menginstal mate-core, saya mendapatkan yang berikut:

masukkan deskripsi gambar di sini

Perhatikan bahwa mate-coreditandai sebagai yang diinstal secara manual, dan banyak paket lainnya sedang diinstal. Untuk mate-terminalpaket, di bagian bawah, dikatakan, " mate-desktop-environment-core[semesta] tergantung pada mate-terminal(> = 1.0.0)". Pergi ke entri untuk mate-desktop-environment-core,

masukkan deskripsi gambar di sini

" mate-core[semesta] tergantung pada mate-desktop-environment-core(> = 1.8.0 + 9)". Inilah sebabnya mengapa mate-terminalsedang diinstal.

Sebaliknya, jika paket yang disarankan sedang diinstal (bukan sesuatu yang tergantung pada paket lain), aptitudeakan memberi tahu Anda, dan Anda dapat mengatakannya untuk tidak menginstal paket itu tanpa dependensi yang rusak. Sebagai contoh:

masukkan deskripsi gambar di sini

saiarcot895
sumber
2

Metode lain

Unduh paket utama yang bergantung pada paket lainnya. Ekstrak paket, hapus dependensi yang tidak diinginkan, bungkus kembali. Sekarang buka paket baru dengan installer paket gdebi . Ini akan menginstal dependensi baru untuk Anda.

  • Daftar jabatan dapat ditemukan di DEBIAN / kontrol -> tergantung
  • Untuk bantuan tentang mengganti deb, lihat jawaban saya tentang cara membuat PPA
totti
sumber
0

Ada aptsintaks khusus untuk skenario seperti ini: menambahkan tanda hubung (tanda minus) ke sebuah paket akan menghapus / tidak menginstalnya, jadi yang terdekat dengan Anda sudo apt-get install xorg mate-core --without xterm mate-terminal adalah sudo apt-get install xorg mate-core xterm- mate-terminal- (terlihat di /ubuntu//a/1011439/182923 )

Ini tidak akan membantu dalam kasus ini, karena Anda akan mengalami

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.

tetapi tampaknya itu menjadi jawaban untuk pertanyaan spesifik Anda. Jadi untuk referensi, pos lintas ini.

eMPee584
sumber