Pertanyaan Bagaimana cara membatalkan instalasi apt-get dengan aman?


Saya punya apt-get install proses yang tampaknya putus asa terjepit di processing triggers for python-support langkah.

Kecenderungan saya adalah untuk kill itu, tapi di masa lalu, sederhananya kill-ing an apt-get install proses telah menyebabkan saya banyak kesedihan. (IIRC berbagai macam file kunci yang tertinggal, dll.)

Apakah ada cara yang lebih aman untuk menghentikan proses ini?


34
2018-02-11 19:33


asal




Jawaban:


Proses pembantaian

Secara umum untuk membunuh suatu proses, tidak ada cara yang lebih aman untuk membunuh suatu proses daripada dengan pembunuhan biasa (SIGTERM). Dalam hal ini adalah proses interaktif biasanya memungkinkan Anda untuk menghentikannya bahkan lebih aman dengan mengirimkan sinyal SIGINT, biasanya dikirim dengan menekan Ctrl + C. Sinyal ini sedang terjebak oleh proses itu sendiri bisa dengarkan itu - dan biasanya berhenti dengan anggun. (terima kasih, Eliah)

Database DPKG

Mengenai manajemen paket adalah semacam kasus khusus. Database DPKG yang digunakan oleh perintah APT di bawah air dapat selalu mendeteksi apakah suatu operasi belum selesai. Setiap paket memiliki sebenarnya negara yang ditandai serta a arus keadaan, misalnya tidak dibongkar, dikonfigurasikan, dll. Dengan mematikan frontend APT, basis datanya akan rusak, tetapi di dikenal negara. File kunci hanya akan dirilis setelah semuanya kembali dalam keadaan bersih - Anda harus memperbaikinya sampai memungkinkan operasi baru.

Cara memperbaikinya adalah hanya dengan mem-firing suatu proses untuk mendapatkan semua paket dalam keadaan terkonfigurasi. Secara praktis, jika Anda menginterupsi suatu apt-get operasi, Anda bisa menyelesaikannya nanti menggunakan

sudo dpkg --configure -a

Ia tahu bagaimana memulihkan dari keadaan rusak ke keadaan terkonfigurasi seluruhnya dan dalam arti itu hanya melanjutkan dari mana ia terganggu. File kunci dibiarkan di sana sampai Anda selesai itu, dan itu karena suatu alasan - untuk mencegah operasi baru dengan database DPKG dalam keadaan najis.

Tentang SIGKILL (9)

Mengirim SIGKILL (perwakilan desimal 9) sangat tidak aman. Sinyal ini tidak ditangkap oleh proses, tetapi seluruh proses akan dibersihkan oleh sistem operasi (kernel) apakah proses suka atau tidak. Keadaan file pada sistem file dapat dibiarkan dalam keadaan korup. Jangan pernah mengirim sinyal-sinyal ini kecuali tidak mendengarkan sinyal lain yang lebih anggun lagi.


35
2018-02-11 19:37



Ketika sebuah aplikasi menawarkan cara untuk menghentikannya, itu biasanya lebih aman daripada SIGTERM. Misalnya, sebagian besar (jika tidak semua) editor teks, pengolah kata, program grafis, browser web, dan aplikasi berbasis teks atau grafik lainnya di mana pengguna cenderung membuat konten yang seharusnya tidak hilang, jangan simpan secara otomatis sebelum berhenti ketika mereka menerima SIGTERM. Juga, harap dicatat bahwa SIGINT terkadang lebih aman daripada SIGTERM (tetapi seharusnya tidak secara umum dikirim kecuali hasil yang sama seperti Ctrl + C secara eksplisit diinginkan). - Eliah Kagan


Ketika saya menemui kegagalan dengan apt-get, saya melakukan hal berikut (sebagai root, yaitu sudo sebelum semua perintah):

  1. Bunuh proses bernama apt-get:

    killall -9 apt-get
  2. Konfigurasikan dpkg:

    dpkg --configure -a
  3. Perbarui apt-get:

    pembaruan apt-get
  4. Perbarui paket, termasuk yang tidak terpasang dengan benar:

    peningkatan apt-get

Ini saya pelajari dari suatu tempat, tapi sayangnya saya tidak ingat persis di mana.


13
2018-02-11 20:35



Jangan pernah mengirim sinyal 9 (SIGKILL) kecuali Anda memiliki alasan yang sangat bagus untuk melakukannya. Lihat jawaban saya yang diperbarui. - gertvdijk


sudo dpkg -r <package name>

Dalam kasus saya, saya memiliki masalah dengan Java 8 pada Ubuntu 12.04, jadi ...

sudo dpkg -r oracle-java8-installer

3
2017-11-29 17:05





Linux dan sistem jenis Unix lainnya sangat kuat dari baris perintah tetapi sangat tidak memaafkan begitu proses telah dimulai. Mengirimkan suatu proses, sinyal membunuh akan membunuh proses yang sedang berjalan tetapi ingatlah bahwa Anda meninggalkan database dalam keadaan tidak stabil. Rekor terakhir mungkin tidak ditutup dengan benar sehingga Anda berisiko harus memperbaiki database. Tidak hanya dengan apt tetapi dengan aplikasi apa pun.

Selalu mencoba untuk mengakhiri aplikasi dengan cara normal dan hanya membunuh proses yang menjalankan aplikasi.


1
2018-02-11 20:34





Di sini adalah bagaimana saya melakukannya, Ctrl+C Tetapi ingatkan Anda bahwa itu aman selama apt-get sedang mengunduh fase atau memperbarui cache-nya. Selain itu saya tidak bisa memikirkan cara yang lebih aman. Biarkan saja selesai dan membatalkan perubahan dengan menghapus atau menurunkan versi entah bagaimana. File yang diunduh dapat dibersihkan dengan sudo apt-get autoclean


0
2018-02-11 20:14