"sudo: unable to resolve host" uyarısı nedir, nasıl düzeltilir?
Hangi sudo komutunu çalıştırırsanız çalıştırın başında şu satır çıkıyor:
sudo: unable to resolve host sunucum: Name or service not known
Komut çoğunlukla yine de çalışır; yani bu bir hata değil, can sıkıcı bir uyarıdır. Anlamı şudur: sunucunun kendi adı (hostname) yerel olarak bir IP adresine çözülemiyor. Çözümleme için sunucu önce /etc/hosts dosyasına bakar. Orada kendi adı yoksa DNS'e gider, DNS de bilmediği için hata verir.
Neden olur?
- Sunucu adını panelden ya da
hostnamectl set-hostnameile değiştirdiniz ama/etc/hostsdosyasını güncellemediniz. Bu en sık sebeptir: sunucu adı değiştirme. - Sunucu şablondan kopyalanıp yeni ad aldı, ama dosyada eski ad kaldı.
- DNS kullanılamıyor (bu durumda ayrıca name resolution hatası da görürsünüz).
Düzeltmek
- Sunucunun mevcut adını öğrenin:
hostname /etc/hostsdosyasını açın:
(Uyarı çıkması bu komutu engellemez.)sudo nano /etc/hosts- Dosyada
127.0.0.1 localhostsatırının hemen altına, yukarıdaki adı yazarak şu satırı ekleyin ya da var olan127.0.1.1satırını düzeltin:127.0.1.1 sunucum - Kaydedin (nano'da Ctrl+O, Enter, Ctrl+X) ve test edin:
Uyarı kaybolduysa iş bitmiştir.sudo true
Sunucuda alan adı biçiminde bir ad kullanıyorsanız (sunucu.ornek.com) hem tam adı hem kısa adı yazabilirsiniz: 127.0.1.1 sunucu.ornek.com sunucu.
Kalıcı mı?
Bazı bulut şablonlarında cloud-init, /etc/hosts dosyasını yeniden yazabilir (manage_etc_hosts ayarı). Düzeltme açılışta kayboluyorsa /etc/cloud/cloud.cfg içinde bunu kontrol edin ya da sunucu adını cloud-init yerine hostnamectl ile kalıcı yapın. Bizim şablonlarda sunucu adı hizmet sayfasındaki Sunucu Adı Değiştir aracından da değişir; değişiklikten sonra bir yeniden başlatma gerekebilir ve /etc/hosts dosyasını yine kontrol etmeniz iyi olur.
Hangi dosyalar etkilenir?
Sunucu adı iki yerde tutulur: /etc/hostname sunucunun adını, /etc/hosts ise bu adın hangi IP adresine karşılık geldiğini söyler. İkisi uyuşmazsa uyarı çıkar. Adı hostnamectl ile değiştirdiğinizde ilk dosya güncellenir ama ikincisi güncellenmez; bu yüzden her ad değişikliğinden sonra /etc/hosts dosyasına bakmak iyi alışkanlıktır.
Uyarıyı görmezden gelebilir miyim?
Çalışmayı engellemiyorsa evet, ama düzeltmeniz tavsiye edilir. Çünkü adı çözülemeyen sunucuda bazı servisler (mail sunucusu, bazı veritabanları, sudo kendisi) yavaş açılır ya da yanlış davranır. Linux sunucuda yapılacak diğer ilk ayarlar için ilk yapılacaklar makalesine bakın.
Sık sorulanlar
Windows'ta da böyle bir uyarı var mı?
Hayır. Bu Linux'a özgü bir davranıştır ve /etc/hosts dosyasıyla ilgilidir.
Sunucu adını değiştirdim, her komut yavaşladı.
Adı çözemeyen sunucuda sudo birkaç saniye bekleyebilir. /etc/hosts düzeltmesi bunu da giderir.
127.0.1.1 yerine 127.0.0.1 yazabilir miyim?
Teknik olarak çalışır. Debian ve Ubuntu gelenekleri sunucu adı için 127.0.1.1 kullanmaktır; ikisi de kabul edilir.
İlgili makaleler
- Sunucumun adını (hostname) nasıl değiştiririm?
- Linux'ta "Temporary failure in name resolution" hatası
- Yeni Linux sunucuda ilk yapılması gerekenler
Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.
Geri bildiriminiz için teşekkürler!