Apt-get kurulumunu güvenli bir şekilde iptal etmek nasıl?


44

Basamakta apt-get installumutsuzca sıkışmış gibi görünen bir sürecim var processing triggers for python-support.

Benim eğilimim killbuna bağlı, ama geçmişte, basitçe - killbir apt-get installsüreç benim için çok üzüldü. (IIRC çeşitli kilit dosyaları geride bırakılır vb.)

Bu işlemi durdurmanın daha güvenli bir yolu var mı?

Yanıtlar:


44

Öldürme işlemleri

Genel olarak bir süreci öldürmekten bahsederken, bir süreci öldürmenin normal bir öldürmeden (SIGTERM) daha güvenli bir yolu yoktur. Etkileşimli bir işlem olması durumunda, genellikle Ctrl+ tuşlarına basarak gönderilen bir SIGINT sinyali göndererek daha güvenli bir şekilde durmanıza izin verir C. Bu sinyal kendisi işlem tarafından tuzağa ediliyor olabilir ve genellikle incelikle durdurmak - dinliyorum. ( teşekkürler Eliah )

DPKG veritabanı

Paket yönetimi ile ilgili bir tür özel durumdur. APT'nin su altında kullanmasını emrettiği DPKG veritabanı her zaman bir işlemin bitip bitmediğini tespit edebilir. Her paket, mevcut durumun yanı sıra işaretlenmiş , yapılandırılmış vb. Gibi geçerli bir duruma işaretlenmiş gerçek bir duruma sahiptir . APT ön ucunu öldürdüğünde, veritabanı bozuk, ancak bilinen durumda olacaktır. Kilit dosyaları ancak hepsi temiz bir duruma getirildikten sonra yayınlanacaktır - yeni işlemlere izin verinceye kadar bunu düzeltmelisiniz.

Düzeltme yolu, tüm paketleri yapılandırılmış durumda almak için bir işlem başlatmaktır. Pratik olarak konuşursak, bir apt-getişlemi yarıda kestiyseniz, daha sonra

sudo dpkg --configure -a

Kırık durumdan tamamen yapılandırılmış bir duruma nasıl kurtarılacağını bilir ve bu anlamda kesildiği yerden devam eder. Bunu bitene kadar kilit dosyaları orada kalır ve bu bir nedenden ötürü - DPKG veritabanı ile kirli bir durumda yeni işlemleri önlemek için.

SIGKILL hakkında (9)

Bir SIGKILL gönderme (ondalık gösterim 9) çok güvensizdir. Bu sinyal işlem tarafından yakalanmaz, ancak işlemin beğenilip beğenilmeyeceği tüm işlem işletim sistemi (çekirdek) tarafından temizlenir. Dosya sistemindeki dosyaların durumu bozuk bir durumda bırakılabilir. Artık daha zarif sinyalleri dinlemediği sürece bu sinyalleri asla göndermeyin.


2
Bir uygulama onu sonlandırmanın bir yolunu önerdiğinde, bu genellikle SIGTERM'den bile daha güvenlidir. Örneğin, çoğu (tümü değilse) metin editörleri, kelime işlemciler, grafik programları, web tarayıcıları ve bir kullanıcının kaybolmaması gereken içerik oluşturması muhtemel olan diğer metin tabanlı veya grafiksel uygulamalar otomatik olarak kaydedilmez. SIGTERM aldıklarında istifa etmeden önce . Ayrıca, SIGINT'in bazen SIGTERM'den daha güvenli olabileceğini lütfen unutmayın (ancak, Ctrl + C ile aynı sonuç açıkça istenmedikçe, genellikle gönderilmemelidir).
Eliah Kagan

16

Apt-get ile bir hatayla karşılaştığımda, aşağıdakileri yapıyorum (root olarak, yani sudotüm komutlardan önce):

  1. Apt-get adlı süreci öldür.

    katil -9 apt-get
  2. Dpkg'yi yeniden yapılandırın:

    dpkg --configure -a
  3. Apt-get'i güncelle:

    apt-get update
  4. Uygun olmayan şekilde kurulmuş paketler de dahil olmak üzere güncelleme paketlerini:

    apt-get upgrade

Bunu bir yerden öğrendim, fakat ne yazık ki tam olarak nerede olduğunu hatırlayamıyorum.


6
Lütfen bunu yapmak için çok iyi bir nedeniniz olmadıkça, asla bir sinyal 9 (SIGKILL) göndermeyin. Güncellenmiş cevabımı gör.
gertvdijk

3
sudo dpkg -r <package name>

Benim durumumda Ubuntu 12.04'te Java 8 ile ilgili problemlerim vardı, bu yüzden ...

sudo dpkg -r oracle-java8-installer

1

Linux ve diğer Unix tipi sistemler komut satırından çok güçlü, ancak bir süreç başladığında çok affetmez. Bir işlem gönderme kill sinyali kesinlikle çalışan süreci öldürür, ancak veritabanını dengesiz bir durumda bıraktığınızı unutmayın. Son kayıt doğru kapatılmayabilir, bu nedenle bir veritabanını onarma riskiniz vardır. Sadece apt ile değil, herhangi bir uygulamayla.

Uygulamayı her zaman normal şekilde sonlandırmaya çalışın ve yalnızca uygulamalardan kaçan işlemleri sonlandırın.


0

İşte böyle yapıyorum, Ctrl+ CAma apt-get indirme aşamasında veya önbelleğini güncelleme aşamasında olduğu sürece güvenli olduğunu unutmayın. Bunun dışında daha güvenli bir yol düşünemiyorum. Bitmesine izin verin ve bir şekilde kaldırarak veya düşürerek değişiklikleri geri alın. İndirilen dosyalar ile temizlenebilirsudo apt-get autoclean

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.