Sistem paket yöneticileri (apt, dnf, pacman gibi) ve dile özgü paket yöneticileri (npm, pip, cargo gibi) her ikisi de bağımlılıkları çözümleme, kod indirme ve yazılım yükleme işlevlerini yerine getirse de, evrimleri ve temel amaçları farklıdır. Bu farklılık, özellikle C kütüphaneleri söz konusu olduğunda önemli sürtünmelere yol açar. Sistem paket yöneticileri, Firefox veya LibreOffice gibi uygulamaları son kullanıcılara ulaştırmak amacıyla ortaya çıkmış, tek bir sürümü koruyarak sistem kararlılığını ön planda tutmuştur. Bu yaklaşım, güvenlik güncellemelerini basitleştirirken, geliştiricilerin farklı veya eski sürümlere erişimini zorlaştırır.
Diğer yandan, npm ve pip gibi dile özgü paket yöneticileri, geliştiricilerin projeleri için bağımlılıkları yönetmelerine yardımcı olmak üzere tasarlanmıştır. Bu yöneticiler, projelerin ihtiyaç duyduğu tam sürümleri sabitlemelerine olanak tanır ve genellikle birden fazla sürümü aynı anda barındırabilirler. Ayrıca, platformdan bağımsız çalışacak şekilde tasarlanmışlardır, bu da C bağımlılıklarını doğrudan sistem paket yöneticileri aracılığıyla kurmalarını engeller. Bu iki farklı yaklaşım, aynı kütüphaneyi farklı şekillerde ele almalarına neden olur: sistem yöneticisi uyumluluğu ve güvenliği düşünürken, dil yöneticisi sürüm kısıtlamalarını ve çoklu varlığı sorgular.
Sorun, dil paketlerinin C kütüphanelerini sarmalaması gerektiğinde ortaya çıkar. C ekosistemi hiçbir zaman standart bir paket kayıt sistemi geliştirmemiş, bu da C kütüphanelerinin yönetiminde bir boşluk yaratmıştır. Dil paket yöneticileri, C bağımlılıklarını yönetmek için gerekli mekanizmalara sahip değilken, sistem paket yöneticileri de dil ekosisteminin özel ihtiyaçlarını karşılamakta yetersiz kalır. Bu durum, yazılım geliştirme süreçlerinde karmaşıklığa ve uyumsuzluklara yol açan 'C şekilli bir delik' olarak tanımlanmaktadır.
Farklı paket yönetimi yaklaşımlarının C kütüphaneleri özelinde yarattığı uyumsuzluk, yazılım geliştirme süreçlerinde önemli zorluklara yol açmaktadır.