apt-get install dengan '-' (minus / tanda hubung) menghapus paket

22

Saya mencari beberapa paket ( nautilus-terminal), dan tidak sengaja melakukan ini:

$ sudo apt-get install nautilus-
Reading package lists... Done                                                                                                                                                                                                 
Building dependency tree                                                                                                                                                                                                      
Reading state information... Done                                                                                                                                                                                             
The following packages were automatically installed and are no longer required:                                                                                                                                               
  apturl apturl-common libgail-3-0 linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic                                                                      
Use 'sudo apt autoremove' to remove them.                                                                                                                                                                                     
The following packages will be REMOVED:                                                                                                                                                                                       
  gnome-session-flashback nautilus nautilus-sendto nautilus-share ubuntu-desktop                                                                                                                                              
0 upgraded, 0 newly installed, 5 to remove and 69 not upgraded.                                                                                                                                                               
After this operation, 2 031 kB disk space will be freed.                                                                                                                                                                      
Do you want to continue? [Y/n] ^[[^C                                                                                                                                                                                          

Itu cukup berbahaya karena menghapus jauh lebih sulit untuk salah ketik daripada dasbor sederhana dari pelengkapan otomatis yang gagal.

Apakah itu setara dengan apt-get remove? Saya tidak dapat menemukan dokumentasi untuk itu. Edit: kecuali untuk menghadap halaman manual ...

Ondra Žižka
sumber
1
Mengapa itu lebih berbahaya daripada apt-get remove? Apt-get bahkan memberi tahu Anda apa yang akan dilakukannya, dan meminta konfirmasi.
marcelm
3
@marcelm karena removejauh lebih sulit untuk salah ketik daripada tanda hubung sederhana dari pelengkapan otomatis yang gagal.
stebu92
@ stebu92 Kata sempurna, saya menambahkan bahwa jika Anda tidak keberatan.
Ondra Žižka
Saya pikir setidaknya Y / n harus diubah menjadi y / N saat -digunakan.
Ondra Žižka
Mungkin saya salah menafsirkan tetapi sepertinya ini lebih merupakan keluhan / keluhan daripada pertanyaan. Pertanyaan apa yang Anda harapkan untuk mendapat jawaban sebagai akibat dari memposting ini?
thomasrutter

Jawaban:

28

Dari man apt-get:

memasang
   instalasi diikuti oleh satu atau lebih paket yang diinginkan
   instalasi atau peningkatan. Setiap paket adalah nama paket, bukan a
   nama file yang sepenuhnya memenuhi syarat (misalnya, dalam sistem Debian,
   apt-utils akan menjadi argumen yang disediakan, bukan
   apt-utils_1.2.10_amd64.deb). Semua paket dibutuhkan oleh
   paket yang ditentukan untuk instalasi juga akan diambil dan
   diinstal. File /etc/apt/sources.list digunakan untuk mencari file
   paket yang diinginkan. Jika tanda hubung ditambahkan ke nama paket (dengan
   tidak ada ruang intervensi), paket yang diidentifikasi akan dihapus jika itu
   diinstal. Demikian pula tanda plus dapat digunakan untuk menunjuk a
   paket untuk menginstal. Fitur yang terakhir ini dapat digunakan untuk mengganti
   keputusan yang dibuat oleh sistem resolusi konflik apt-get.
muru
sumber
Maka OP harus melakukan: di sudo apt install nautilus && sudo apt install nautilus-terminalmana OP telah melalui dengan removeperintah lain: sudo apt install nautilus-terminaljika TIDAK dipilih?
George Udosen
3
Alasan untuk fitur ini adalah bahwa kadang-kadang Anda ingin menginstal paket yang bertentangan dengan yang sudah diinstal, tetapi salah satunya diperlukan oleh beberapa paket lain, sehingga kedua tindakan harus berada dalam proses yang sama. Misalnya apt install sysvinit-core systemd-sysv-(diperlukan oleh paket Essential init) atau apt install msmtp postfix-(banyak paket tergantung pada MTA).
Simon Richter
1
@SimonRichter mencoba apt -s install upstart-sysvpada 16.04 menunjukkan aptakan secara otomatis menghapus systemd-sysv(karena mereka bertentangan). Ditto untuk msmtp-mtadan postifx. Contoh yang lebih rumit mungkin diperlukan, di mana aptmungkin memilih paket yang salah untuk dihapus.
muru
Terima kasih telah memperbaiki mata saya yang buta. Tercatat bahwa apt-get remove foo+menginstal foo.
Ondra Žižka
Itu semacam fitur yang rapi. : D
Andrea Lazzarotto
0

Dua berikut artinya sama:

# apt-get remove nautilus
# apt-get install nautilus-

Jadi jika Anda hanya menginstal atau menghapus satu hal, maka sebenarnya tidak ada alasan untuk memilih satu di atas yang lain, dan removeperintah itu mungkin juga digunakan.

Di mana operator "minus" sangat berguna adalah dalam kasus di mana Anda ingin menghapus satu paket dan menginstal yang lain dalam operasi yang sama :

# apt-get install php5-cgi libapache2-mod-php5- 

Saya tidak bisa memikirkan contoh yang lebih baik, tetapi ada beberapa situasi di mana menghapus satu dan menambahkan yang lain dalam operasi terpisah dapat memicu instalasi atau penghapusan tambahan yang tidak perlu, sementara melakukan keduanya dalam satu operasi akan segera memenuhi beberapa co-dependensi dan membuatnya menjadi operasi yang lebih sederhana secara keseluruhan.

Adapun apakah menambahkan minus membuatnya lebih mudah untuk sengaja menghapus sesuatu tidak sengaja, saya pertama dan terutama merujuk Anda bagaimana mudahnya untuk membuat kerusakan pada sistem Anda tidak sengaja pada baris perintah pula . Itu tidak dibangun untuk melindungi Anda dari diri Anda sendiri dan ada miliaran perintah yang bahkan lebih sederhana yang dapat menyirami sistem Anda. Tetapi kedua, dalam hal ini memberitahu Anda apa yang akan dilakukan dan menegaskan bahwa Anda benar-benar ingin melakukannya. Ini risiko rendah.

thomasrutter
sumber