Hostname
主機名:名稱或服務未知
我在安裝 2 個軟體包的過程中遇到了這個錯誤。
root@blackbox:~# apt-get install mpack ssmtp Reading package lists... Done Building dependency tree Reading state information... Done mpack is already the newest version. ssmtp is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. 2 not fully installed or removed. After this operation, 0 B of additional disk space will be used. Do you want to continue? [Y/n] Y Setting up ssmtp (2.64-8) ... hostname: Name or service not known dpkg: error processing package ssmtp (--configure): subprocess installed post-installation script returned error exit status 1 dpkg: dependency problems prevent configuration of mailutils: mailutils depends on default-mta | mail-transport-agent; however: Package default-mta is not installed. Package mail-transport-agent is not installed. Package ssmtp which provides mail-transport-agent is not configured yet. dpkg: error processing package mailutils (--configure): dependency problems - leaving unconfigured Errors were encountered while processing: ssmtp mailutils E: Sub-process /usr/bin/dpkg returned an error code (1) root@blackbox:~#
問題是輸入的值
/etc/hostname
與/etc/hosts
.這會導致命令
hostname --fqdn
返回無法解析的主機名,從而導致ssmtp
無法安裝。確保將機器的主機名添加到
/etc/hosts
.相關錯誤:
這些似乎很糟糕:
hostname: Name or service not known dpkg: error processing package ssmtp (--configure): subprocess installed post-installation script returned error exit status 1
hostname
在腳本中使用postinst
(在 Debian 軟體包維護者指南中描述 -連結)失敗。正如我
ssmtp
在 2.64-8 (amd64) 版本中檢查提到的包,它有以下腳本:#!/bin/sh set -e if test -L /usr/doc/ssmtp then rm -f /usr/doc/ssmtp 2>/dev/null || true fi . /usr/share/debconf/confmodule db_get ssmtp/root root="$RET" db_get ssmtp/mailhub mailhub="${RET:-mail}" db_get ssmtp/port port="$RET" db_get ssmtp/hostname hostname="${RET:-`hostname --fqdn`}" db_get ssmtp/rewritedomain rewritedomain="$RET" if test -s /etc/mailname then : else test -n "$hostname" && MailName="$hostname" test -n "$rewritedomain" && MailName="$rewritedomain" touch /etc/mailname chmod 644 /etc/mailname echo "$MailName" > /etc/mailname fi db_get ssmtp/fromoverride test "$RET" = "true" && FromOverride=YES test -d /etc/ssmtp || exit 1 if test -s /etc/ssmtp/ssmtp.conf then if test "$port" = "25" -o -z "$port" then : else mailhub=${mailhub}:$port fi test -z "$FromOverride" && FromOverride=NO touch /etc/ssmtp/ssmtp.conf.tmp chmod 644 /etc/ssmtp/ssmtp.conf.tmp sed "s/^root=.*/root=$root/;s/^mailhub=.*/mailhub=$mailhub/;s/^rewriteDomain=.*/rewriteDomain=$rewritedomain/;s/^hostname=.*/hostname=$hostname/;s/^FromLineOverride=.*/FromLineOverride=$FromOverride/;s/^#FromLineOverride=.*/FromLineOverride=$FromOverride/" /etc/ssmtp/ssmtp.conf > /etc/ssmtp/ssmtp.conf.tmp mv -f /etc/ssmtp/ssmtp.conf.tmp /etc/ssmtp/ssmtp.conf else touch /etc/ssmtp/ssmtp.conf chmod 644 /etc/ssmtp/ssmtp.conf exec 1>/etc/ssmtp/ssmtp.conf echo "#" echo "# Config file for sSMTP sendmail" echo "#" echo "# The person who gets all mail for userids < 1000" echo "# Make this empty to disable rewriting." echo "root=$root" echo echo "# The place where the mail goes. The actual machine name is required no " echo "# MX records are consulted. Commonly mailhosts are named mail.domain.com" if test "$port" = "25" -o -z "$port" then echo "mailhub=$mailhub" else echo "mailhub=${mailhub}:$port" fi echo echo "# Where will the mail seem to come from?" test -z "$rewritedomain" && echo -n "#" echo "rewriteDomain=$rewritedomain" echo "" echo "# The full hostname" echo "hostname=$hostname" echo echo "# Are users allowed to set their own From: address?" echo "# YES - Allow the user to specify their own From: address" echo "# NO - Use the system generated From: address" test -z "$FromOverride" && echo -n "#" echo "FromLineOverride=YES" fi # Program End exit 0
最重要的是:
hostname="${RET:-`hostname --fqdn`}"
如前所述,
hostname --fqdn
失敗了。如果出現以下情況,請檢查:
- 命令存在
hostname --fqdn
返回什麼命令