0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【CentOS7】仮想環境でyumが使えない問題を解決

Last updated at Posted at 2022-10-22

結論

ゲストOSから外部へアクセスする際に、ネットワークインターフェースを有効化していなかった。

ネットワークインターフェース
→ 通信するときの規約、設定事項のこと

経緯

  1. Virtual BoxCentOS7を入れる(UTMなどの他の仮想環境も同様)
  2. Linux操作でtabキーの補完が効かない事を知る
  3. yumbash-completionをダウンロード
  4. エラーが起こってダウンロードができない

該当のソースコード

Terminal
yum install bash-completion

エラー文

error
Cannot find a valid baseurl for repo base/7/x86_64

原因

DNSの名前解決ができていないみたいだった。

例えば、googleのトップページ( https://google.com )をIPアドレスに直すと
172.217.161.46
となり、実際にアクセスしてもらうとそのページに遷移してくれる。
そのgoogle.comのような文字列を192.168.?.?みたいなIPアドレスに直してくれるやつをDNSといい、変換することを名前解決という。

pingを打って通信ができているか試してみる

Terminal
ping google.com

>>> ping: google.com: Name or service not known 

確かにうまくいかなかった。

試したこと

DNSサーバーのIPアドレスの設定ファイルをいじる

googleがDNSサーバーを運用していて、しかも自由に使えるパブリックDNSサービスとなっているため使わせてもらう。

/etc/resolve.conf
# 追加
nameserver 8.8.8.8

再起動してやり直すも効かず。

ネットワークインターフェースをいじる

DNSの指定

/etc/sysconfig/network-scripts/ifcfg-eth0
# 追加
DNS1=8.8.8.8
# こいつは代替DNS
DNS2=8.8.4.4

再起動して試すも撃沈

イーサネット設定をいじる

実は自分の環境では複数のイーサネット設定ファイルが存在した

ls /etc/sysconfig/network-scripts

そのうちの1つが/etc/sysconfig/network-scripts/ifcfg-enp0s3ってファイルで、そこにはいろんな設定が書き込まれていた。

/etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
...
...
ONBOOT=off

この、ONBOOTってやつを「on」に変えてみるといいらしい。

Terminal
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 | grep ONBOOT | sed -i 's/no/yes/' && systemctl restart network

再起動は手間なので、コマンドでrestartする。
grepでONBOOTのみをしっかり取り出さないと、他のnoになってる項目がyesになってうまく動かないかも。
sedのiオプションが上書きなので、注意して使う必要がある。

無事名前解決、yumもしっかり動いたよ。


ONBOOTが一体なんなのかというと、「デバイスが起動したときに、この設定ファイルを有効化しますか?(yes/no)」って意味だったっぽい。
Linuxを立ち上げたときに、このONBOOTonになっているファイル(今回は/etc/sysconfig/network-scripts/ifcfg-enp0s3)で通信を行うってことか。

最初からonにしてくれてもいいじゃんって思ったら、ホームディレクトリになぜかインストール初期からあったanaconda-ks.cfgファイルにoffにするような記述があった。

anaconda-ks.cfg
...
# Network information
network  --bootproto=dhcp --device=enp0s3 --onboot=off --ipv6=auto --no-activate
network  --hostname=localhost.localdomain
...
...

やられた。。

結果

まとめると、

  1. yumbash-completionダウンロードできなかった
  2. bash-completionをダウンロードするurlを見つけたはいいけど、DNSサーバーが名前解決(IPアドレスに変換)できてなかった。
  3. イーサネット設定ファイル(通信規約)がifcfg-eth0ではなく、自分の場合はifcfg-enp0s3だった
  4. システム起動時に設定ファイルを有効化するONBOOToffだった
  5. offになっているのは、OSインストール時に勝手に作られるanaconda-ks.cfgの仕業だった

こんな単純なミスなのに、この遠回り具合がプロダクト作る時と違って慣れない。。

反省

何がどう動いているのかと疑問に思ったことはしっかり学ぼうと思いました、反省。

終わりに

よくよく考えればいろんなサイトにいろんないい情報が載ってるんだけど、「yumコマンドが動かない」から派生して考えるのが難しかった。
誰かの参考になることを祈っております。

ちなみに

ほんとはコマンドを打ち終わった後に、複数ファイルがあったらtabキーで候補を切り替える機能が欲しかったんだけど、bash-completionは途中までコマンドを打ったらその後を補完してくれる機能だったっぽくて自分の求めてるものじゃなかった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?