VPN deposu eklendikten sonra apt güncellemesi NO_PUBKEY ile başarısız oluyor
NO_PUBKEY ve eksik Release dosyası ağ arızası değil, güven arızasıdır. Satıcının anahtarını signed-by ile sabitlemeye ya da kaynağı kaldırmaya karar verin.
VPN sağlayıcınızın apt kaynağı paket yöneticinizi bozdu ve çözüm bir komut değil, bir karardır. NO_PUBKEY, ya da depoda Release dosyası olmadığına dair bir şikâyet, apt'un o kaynağa güvenmeyi reddettiği anlamına gelir, bu yüzden sonraki her paket işlemi aynı uyarıyı yazdırmaya devam eder. Tünelin kendisi muhtemelen suçsuzdur. O kaynağı hâlâ isteyip istemediğinize dair üç soruyu yanıtlayın ve doğru onarım neredeyse mekanik olarak gelir.
Önce arızayı doğru sınıfa koyun
Güven arızası kaynak dosyasını ve ya eksik anahtarı ya da olmayan Release dosyasını adlandırır. Aktarım arızası farklı görünür: TLS sertifika hataları, reddedilen bağlantı, zaman aşımları veya CONNECT'i reddeden bir vekil sunucu. Bu ayrım hangi makaleyi okuduğunuzu belirler, çünkü TLS'i engelleyen veya satıcının sunucusunu bloke eden bir VPN imza hatası değil, aktarım hatası üretir.
Şunu çalıştırın: sudo apt update tek başına ve üstündeki önbelleğe alınmış satırları yok sayarak sonunu okuyun. Önemli satır /etc/apt/sources.list.d/ dizinini adlandırır ve hangi dosyayı açmanız gerektiğini söyler.
Arıza tünel ayağa kalktıktan sonra ortaya çıkıyorsa, tünel kapalıyken ve DNS sistem çözümleyicisiyle çözülürken test edin. VPN olmadan çalışan bir kaynak yönlendirme veya engelleme sorunudur ve hiçbir anahtar yönetimi bunu düzeltmez.
Yolu seçen üç soru
Bu kaynaktan hâlâ paket kuruyor veya yükseltiyor musunuz? İstemci etkin olarak kullanılıyorsa güveni onarın. İstemciyi bir kez kurup artık NetworkManager'a sıradan bir profil aktarıyorsanız, kaynak ölü yüktür ve kaldırmak dürüst onarımdır.
İkincisi, satıcı kanal dışında doğrulayabileceğiniz bir anahtar ve parmak izi yayımlıyor mu? Üçüncüsü, bu makinede anahtarları kim yönetiyor: dağıtım mı, siz mi? Doğrulayamadığınız bir anahtarla imzalanmış kaynak, vermemeniz gereken bir güncelleme yetkisidir.
İlk soruya hayır yanıtı analizi bitirir. Üç maddenin tümüne evet yanıtı signed-by onarımına götürür, hem çalışan hem de denetlenebilir kalan tek düzen budur. İki yolu karıştırmak, kaynağı tutup zorla geçirmek, açıkça dışlanmayı hak eden tek seçenektir.
trusted=yes neden onarım gibi görünür ama değildir
Şu sayfa sources.list kılavuzundaki bu konuda açıktır. Trusted seçeneğini yes olarak ayarlamak, kimlik doğrulama başarısız olsa bile apt'a kaynağı kabul etmesini söyler, bu da o depo için apt-secure'ı kapatır. Sayfa bunu, kullanılıyorsa yerel bir bağlama saklar.
Bu, satıcıya güvenmenin daha dar bir sürümü değildir. Dizini kimin imzaladığı sorusunu ortadan kaldırır, böylece o ana makine adı için yanıt verebilen herkes makinenize root olarak kurulan paketler verebilir.
Onarım yolu: anahtarı alın, sonra sabitleyin
Anahtarı satıcının belgelediği yerden alın ve yöneticinin yönettiği bir anahtarlık içine açın, ardından depo satırını o dosyaya yönlendirin ki güven kayamaz.
- Başarısız satırı okuyup anahtar kimliğini ve kaynak dosya adını alın.
- Satıcının ASCII zırhlı anahtarını indirin ve
gpg --dearmorkomutunu/etc/apt/keyrings/vendor-name.gpgdosyasına çalıştırın. - Şunu ekleyin:
[signed-by=/etc/apt/keyrings/vendor-name.gpg]o satıcının.listdosyasındaki girdiye. - Şunu çalıştırın:
sudo apt updateve kaynağın imza uyarısını yinelemek yerine bir dizin indirdiğini doğrulayın.
Paketle gelen anahtarlar için /usr/share/keyrings dizinini, elle yerleştirdiğiniz anahtarlar için /etc/apt/keyrings dizinini tercih edin. Bu ayrım kozmetik değil: bir sonraki yöneticiye hangi anahtarların paket yükseltmesinden sağ çıkacağını ve hangilerinin bir insana ihtiyaç duyduğunu söyler.
Güvenmeden önce parmak izini satıcının yayımladığı değerle karşılaştırın. Bir forum gönderisinden kopyalanan anahtar kimliği, bir makinenin kimsenin adlandıramadığı bir güncelleme yetkisine güvenmeye başlama yoludur.
Kaldırma yolu ve hata neden geri gelebilir
Kurulum aracının gerçekte ne yazdığına bakın, çünkü birkaç dosya aynı satıcıdan söz edebilir ve bunlardan biri genellikle artık kalmış bir kopyadır.
grep -r . /etc/apt/sources.list.d/
sudo rm /etc/apt/sources.list.d/vendor.listapt bu dizinden yalnızca .list ve .sources dosyalarını okur, bu yüzden bir .save veya .distUpgrade kopyası zaten yok sayılır; yine de silmek, sonraki bir okuyucunun onu kazara geri getirmesini engeller. Kaynağı kaldırmak hiçbir şeyi kaldırmaz ve apt daha sonra kurulu VPN paketini yerel olarak kurulmuş ya da artık kullanılamıyor olarak tanımlayabilir; bu bir paket durumu iletisidir, güven hatasının geri dönüşü değil.
Tekrarlayan durum, anahtarları apt-key ile genel güvenilen halkaya kuran eski yönergelerdir. Bu yol kullanımdan kaldırılmıştır ve bir sürüm yükseltmesi anahtarı düşmüş ya da yalnızca hiç danışılmamış bırakabilir, ve bir yıl sessiz kalan bir hatanın yükseltme yaptığınız haftada ortaya çıkmasının nedeni tam olarak budur. /etc/apt/trusted.gpg.d/ dizinini denetleyin, sonra güven kararını ait olduğu depo satırına taşıyın. Satıcı hâlâ apt-key yönergeleri yazdırıyorsa yine de signed-by kullanın; kılavuzun belgelediği düzen budur ve bir yükseltmeden sağ çıkan da odur.