カテゴリー
Linux

【Linux】「sudo: sudo を実行するには tty がなければいけません。すみません」への対応。改行コードに注意!

エラー内容

  • Windows 10 マシンで packer を使用して CentOS 7 の Vagrant Box を作成し、動作を確認した。
  • 別のマシンで vagrant up するとエラーが発生した。
    vagrant ssh は正常に動き、ログインできた。
  • 改行コードが CRLF のコードで packer build を実行してしまったことが原因

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'oki2a24/centos-7-x86_64' could not be found. Attmpting to find and install...
... 略 ...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

mkdir -p /vagrant

Stdout from the command:



Stderr from the command:

sudo: sudo を実行するには tty がなければいけません。すみません
$

原因

調べてみましたら、原因はすぐにわかりました。

# cat /etc/sudoers.d/vagrant^M
... 略 ...

/etc/sudoers.d/vagrant ファイルを作成しようとして、/etc/sudoers.d/vagrant^M が作成されてしまったようです><。

そして、次の行で実行しようとしていた

sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers

は実行されておりませんでした><。

キックスタートファイルの改行コードが CRLF であることから起きてしまった問題ですわね。恥ずかしいですの><。

そもそも、.gitattributes で対策をしていたにもかかわらず、なぜこのようなことが起きてしまったのかしら。

.gitattributes はチェックアウト時に改行コードを整えてくれるものであって、編集中に変更された改行コードまでは制御してくれないこと、そして、おそらく横着してコピペしていた時に改行コードが変わってしまったこと、というのが原因と存じます。

おわりに

次のページが参考になりました、ありがとう存じます!

以上です。

コメントを残す