Doküman

You Have Held Broken Packages Hatası Nasıl Düzeltilir

Ubuntu’da paket kurarken oldukça sık karşılaşılan hatalardan biri, bozuk paketlerde oluşan sorunları düzeltememektir ki bu kılavuzla çok kolay bir şekilde çözülebilir.

Sisteminizi güncellemeye çalıştığınızda veya Ubuntu veya Debian tabanlı dağıtımlarınıza herhangi bir uygulama yüklemeye çalıştığınızda ekranın sonunda aşağıdaki mesajı bulacaksınız:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resollve the situation:

The following packages have unmet dependencies:
tasksel : Depends: tasksel-data but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Burada size bu hatayı nasıl düzelteceğinizi göstereceğiz.

Bu Hata Neden Oluştu?

Bu hatayla genellikle üçüncü taraf bir PPA’dan herhangi bir uygulamayı yüklemeye çalıştığınızda veya bir uygulamanın belirli bir sürümünü yüklerken karşılaşılır.

Ayrıca bu hata, bir bağımlılığın belirli bir sürümüne dayanan başka bir uygulamayı yüklemeye çalıştığınızda veya belirli bir paketi yükleme, kaldırma veya değişiklik için tutulacak şekilde işaretlediğinizde de ortaya çıkabilir.

Şimdi bağımlılık hatasının nedeninin nasıl bir üçüncü taraf PPA olabileceğini merak ediyor olabilirsiniz.

Evet, yukarıdaki hatanın nedeni PPA olabilir, çünkü bazen uygulama için gereken bağımlılık, dağıtımların en son sürümünde geçerliliğini yitirir.

Dolayısıyla, bir uygulamayı yüklemek için apt komutlarını kullandığınızda, uygulama yüklenmeden önce tüm bağımlılıkların karşılandığından emin olunur.

Bir bağımlılık eksikse hata verir.

Bu hataya yalnızca PPA neden olmakla kalmaz, aynı zamanda eksik veya önceden yüklenmiş bir bağımlılık da Ubuntu/Debian depolarından bir uygulamanın belirli bir sürümünü yüklemeye çalıştığınızda bu hataya neden olabilir.

Artık bildiğiniz gibi, yukarıdaki hatanın pek çok nedeni var, bu nedenle hangi çözümün sizin açınızdan işe yarayacağını garanti edemem.

Ancak sorunu gidermek için size beş farklı yöntem sunabilirim ve umarım bunlardan biri sorunu çözecektir.

📝 Hızlı Eylem

Karşılaştığınız düzeltilemeyen sorunları çözmek için bozuk paketler aşağıdaki komutlardan herhangi biri kullanılarak kolayca düzeltilebilir:

$ sudo apt update && sudo apt upgrade$ sudo aptitude install "package-name"$ sudo dpkg --force-depends --install "package-name"$ sudo apt-mark unhold "package-name"

1. Sistem Deponuzu Güncelleyin

Karşılanmayan bağımlılık hatası gördüğünüzde yapmanız gereken ilk şey, sistemin paketler hakkında en son bilgilere sahip olabilmesi için sistem depo bilgilerini güncellemektir.

Sistem terminalinizi açın ve aşağıdaki komutu yürütün:

$ sudo apt update
$ sudo apt upgrade

Sorun paket bilgilerindeki tutarsızlıktan kaynaklanıyorsa sorun çözülecektir.  Aksi halde bir sonraki çözüme geçmeniz gerekir.

2. Eksik Bağımlılıkları Kurun

Bir sonraki yaklaşım, sisteminizde eksik olan gerekli bağımlılığı yerine getirmektir.

Bir bağımlılık yüklemek için bağımlılığı Launchpad’den manuel olarak indirebilir veya belirli bağımlılıkların nasıl kurulacağına ilişkin bilgi için internette arama yapabilirsiniz.

Örneğin, LibreOffice 1:7.3.2-ubuntu2’nin belirli bir sürümünü yüklemeye çalışıyorum ancak ihtiyaç duyulan bağımlılık listelerinde karşılanmayan bağımlılıklar hatası alıyoruz.

Şimdi hatayı çözmek için bağımlılıkların adını aşağıda gösterildiği gibi sürümle listeleyebiliriz

$ sudo apt install libreoffice=1:7.3.2-ubuntu2\ libreoffice-core=1:7.3.2-0ubuntu2\ libreoffice-base libreoffice-calc libreoffice-draw\
 libreoffice-core libreoffice-impress libreoffice-math\ libreoffice-writer python3-uno=1:7.3.2-0ubuntu2

Sistem daha fazla komplikasyon yaratmıyorsa işiniz bitmiştir.

Ancak ABC paketleri BCD paketlerine ve BCD EFG’ye bağlı olduğundan manuel olarak telafi edemeyeceğiniz bazı senaryolar vardır, bu da tüm bağımlılıkları yerine getirmeyi yorucu hale getirecektir.

3. Aptitude’u Kullanarak Eksik Bağımlılıkları Kurun

Bu durumda aptitude komutundan yararlanarak uygulamanın eski sürümünü hata vermeden kurmak için kurtarıcı bir araç haline gelebilirsiniz.

aptitude komutu kutudan çıktığı haliyle kullanılamayacağından, aşağıdaki komutu çalıştırarak onu platformunuza manuel olarak yüklemeniz gerekir:

$ sudo apt install aptitude

aptitude komutunu yükledikten sonra, “libreoffice=1:7.3.2-0ubuntu2” ifadesini yüklemek istediğiniz paketin adıyla değiştirerek aşağıdaki komutu çalıştırın.

$ sudo aptitude install libreoffice=1:7.3.2-0ubuntu2
or
$ sudo aptitude install libreoffice

Komutu çalıştırdıktan sonra bağımlılıkları çözerek uygulamayı kurma olasılıklarını arayacak ve seçeneklere devam etmek isteyip istemediğiniz konusunda onayınızı isteyecektir.

Yukarıdaki komutun davranışı:

Install Application using Aptitude Command to Fix Unmet dependencies
Karşılanmayan bağımlılıkları düzeltmek için Aptitude Komutunu kullanarak Uygulamayı Yükleyin

Kabul ediyorsanız kurulumu başlatmak için ‘Y’ yazın.

4. Uygulamayı Zorla Kurun

Her neyse, eksik bağımlılıkları dikkate almadan bir uygulamayı yüklemek istiyorsanız bunu bağımlılık gereksinimini göz ardı edecek dpkg komutuyla yapabilirsiniz.

Bunun için bir .deb ikili paketine sahip olmanız ve aşağıda gösterildiği gibi –force ve –install bayraklarını kullanmanız gerekir:

$ sudo dpkg --force-depends --install tasksel_3.34ubuntu16_all.deb 

Yukarıdaki komutun çıktısı:

Unable to Correct Problems You Have Held Broken Packages: Installed application by suppressing dependency issue
Bağımlılık sorununu bastırarak yüklenen uygulama

Yukarıdaki komutu çalıştırdıktan sonra sorununuz kesin olarak çözülecektir, ancak eksik bağımlılık nedeniyle bazı sorunlar yaşanabilir.

5. Bekletilen Paketi Kontrol Edin ve Bekletmeyi Kaldır

Bu hata, belirli kitaplıkların, yardımcı programların veya uygulamaların yüklenmesini, kaldırılmasını veya en son sürüme güncellenmesini engellediyseniz de meydana gelebilir.

Eğer bu konuda emin değilseniz aşağıdaki komutu yazarak sisteminizde tuttuğunuz uygulamaları listeleyebilirsiniz:

$ sudo apt-mark showhold

Paketi tutulanlar listesinden çıkarmak için aşağıdaki komutta paketin adını yazın ve onu paketin gerçek adıyla değiştirin.

$ sudo apt-mark unhold "package-name"

Tutulan tüm paketleri kaldırmak istiyorsanız aşağıdaki komutu çalıştırın:

$ sudo apt-mark unhold `sudo apt-mark showhold`

 

 

Yazının orijinalini buradan okuyabilirsiniz.