Mengapa saya mendapatkan nama host: Nama atau layanan tidak dikenal kesalahan?

23

Saya mendapatkan kesalahan ini ketika saya menginstal paket apa pun melalui apt-get:

hostname: Name or service not known
dpkg: error processing ssmtp (--configure):
 subprocess installed post-installation script returned error exit status 1
Setting up libt1-5 (5.1.2-3.4ubuntu1) ...
Setting up php5-gd (5.3.10-1ubuntu3.2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Errors were encountered while processing:
 ssmtp
E: Sub-process /usr/bin/dpkg returned an error code (1)

Kenapa ini terjadi?

batman
sumber
Saya memiliki masalah yang sama, masalahnya terkait dengan fakta bahwa DNS tidak membantu entri apa pun untuk nama host - oleh karena itu FQDN tidak tersedia.

Jawaban:

10

Larutan:

(Jenis masalah ini tidak memiliki solusi yang baik. Tetapi hanya beberapa haking-ish)

Anda harus terlebih dahulu mencoba perintah ini di terminal:

sudo apt-get -f install

Jika tidak berhasil, proses dengan solusi haking-ish .

Coba pindahkan sementara skrip konfigurasi ssmtp.

  1. Buka terminal dan jalankan perintah ini untuk memindahkannya ke direktori saat ini

     sudo mv /var/lib/dpkg/info/ssmtp* .
    
  2. Kemudian coba gunakan apt-get

Penyebab masalah:

Instalasi atau penghapusan sebelumnya mungkin tidak berhasil diselesaikan, meninggalkan beberapa langkah konfigurasi yang harus dilakukan untuk ssmtppaket. Karena, dpkg tidak akan berkembang tanpa terlebih dahulu menyelesaikan langkah-langkahnya, penggunaan selanjutnya dari apt-getsekarang terjebak pada langkah itu.

Anwar
sumber
18

menjalankan hostname --fqdn

Jika Anda mendapatkan kesalahan, edit / etc / hostname dan / etc / hosts dengan nama host yang tepat.

Kemudian aptitude install ssmtplagi untuk menginstalnya.

tukang cerewet___
sumber
13

Supaya semua orang tahu, pengeditan / etc / hosts melakukan trik etc / hostname benar dengan server.exmaple.com

Namun tuan rumah itu tidak benar

127.0.0.1 localhost
127.0.0.1 server

ubah ke ini:

127.0.0.1 localhost.localdomain  localhost
192.168.xxx.xxx  server.example.com   server

Saya menjalankan hostname -f dan hostname --fqdn dan mendapatkan yang berikut.

server.example.com

Kupikir semua orang ingin tahu.

nexusguy59
sumber
5

Kemungkinan koneksi internet Anda tidak berfungsi dengan baik. Secara khusus saya pikir DNS Anda tidak terselesaikan dengan baik.

coba tambahkan baris

nameserver 80.80.80.80 

untuk Anda /etc/resolv.conf

Ini akan menambahkan server DNS freenom sementara (sampai boot berikutnya)

pengguna61664
sumber
Itu adalah file yang dihasilkan. Bagaimana cara saya mengelolanya?
chovy
@chovy jika Anda masih bertanya-tanya tentang hal ini, aman untuk melanjutkan dan sudoedit /etc/resolv.confmengganti alamat apa pun yang ada 8.8.8.8untuk menyelesaikan masalah DNS sementara. File akan dibuat ulang pada boot berikutnya, jadi Anda tidak dapat melakukan sesuatu yang terlalu berbahaya di sini kecuali me-reboot bukanlah pilihan
Zanna
2

Saya mendapatkan pesan di jaringan rumah saya di sistem Ubuntu dengan alamat IP yang ditetapkan secara dinamis dari router yang menyediakan DHCP dan server DNS gabungan untuk jaringan saya.

Pesan: hostname: Name or service not knowndapat disebabkan oleh perangkat yang turun, jika hanya untuk sesaat.

Misalnya ini bisa terjadi jika router rumah saya reboot ketika daya saya padam.

Masalahnya di sini adalah bahwa layanan DHCP yang mengandalkan jaringan Anda lupa semua alamat IP yang telah ditetapkan dan nama domain yang terkait. Ketika komputer Anda memeriksa server dns terkait untuk namanya sendiri, server tidak lagi memilikinya. Beberapa server DHCP dapat menghindari masalah dengan menulis tugas yang telah mereka buat ke disk atau memori flash sehingga tidak ada yang hilang ketika mereka memulai ulang.


Server mungkin biasanya mengambil Anda computername dari sistem permintaan DHCP Anda, membuatnya computername .local dan toko yang dalam catatan nya, membuatnya tersedia di DNS server yang terkait secara bersamaan. Biasanya hostname -fqdnmeminta nama domain lengkap melalui jaringan Anda dari server DNS Anda dan jika memiliki catatan itu akan mengembalikan nama itu. The .localakhiran membuatnya tampak seperti nama domain yang memenuhi syarat valid (meskipun tidak benar-benar sebuah nama domain global yang valid). Inilah sebabnya mengapa Anda mungkin tidak harus menentukan nama domain secara manual di file / etc / hosts atau / etc / hostname.


Memulai ulang server DHCP dapat menyebabkan masalah lebih lanjut karena alamat IP dapat ditetapkan ke beberapa komputer secara bersamaan, menyebabkan beberapa tidak dapat berkomunikasi. Alamat tersebut diberikan satu kali sebelum server dimulai ulang, dan sekali lagi setelah itu.

Jika server DHCP Anda lupa tugasnya, hal yang aman untuk dilakukan adalah menyambungkan kembali setiap komputer yang dilayaninya saat dihidupkan ulang. Ketika saya kehilangan milik saya, saya hanya memutus dan menghubungkan kembali ke jalur akses wifi saya. Pada jaringan kabel Anda dapat menggunakan ifdowndan ifupatau hanya memutuskan dan menghubungkan kembali kabel jaringan. Ketika menghubungkan kembali sistem saya secara otomatis menggunakan dhclient untuk mendapatkan alamat baru - komputer saya dan server sekarang menyetujui siapa saya, dan pesan tidak lagi muncul.

Jika Anda menunggu cukup lama, DHCP lease akan habis dan sistem Anda akan meminta dan mendapatkan sewa baru dari server - membereskan masalahnya. Ini mungkin berjam-jam atau berhari-hari kemudian (untuk server saya ini satu hari).

Jika Anda telah menetapkan nama dan alamat IP statis dan jika catatan pencarian balik DNS benar, masalahnya tidak akan terjadi.

John S Gruber
sumber
1

Saya mengalami kesalahan ini pagi ini, dan ternyata nama host salah eja /etc/hostname. Memperbaiki ini sehingga setuju dengan ejaan nama host/etc/hosts menyelesaikan masalah. The hostname -b -F /etc/hostnameperintah yang berjalan pada saat boot tampaknya tidak dapat menyelesaikan kecuali /etc/hostnamedan /etc/hostssetuju.

Michael Merideth
sumber
Jawaban ini menyelesaikannya untuk saya: Pertama saya memastikan /etc/hostsdan /etc/hostnamesetuju. Kemudian saya menjalankan "perintah yang berjalan saat boot", hanya tanpa -btanda (karena ini hanya memungkinkan file yang ditentukan tidak ada, tetapi ada di sini). Dan bang: hostname --fqdnmengembalikan FQDN yang tepat lagi.
isync