質問: ### 前提・実現したいこと Selenium+ヘッドレスChromeで画面キャプチャを取得する環境を作っています。 手順は以下を参考にしています。 SeleniumはDocker上のUbuntu 18.04 に対し、環境構築しようと考えていて、 Seleniumをインストールする為、apt-get install で python3-pip をインストールしようとしたのですが、 以下のようなエラーが発生してしまい、インストールがストップしてしまいます。 ### 発生している問題・エラーメッセージ ``` # apt-get -y install python3-pip (中略) ... Fetched 112 MB in 8min 48s (211 kB/s) debconf: unable to initialize frontend: Dialog debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76, <> line 115.) debconf: falling back to frontend: Readline debconf: unable to initialize frontend: Readline debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7, <> line 115.) debconf: falling back to frontend: Teletype Extracting templates from packages: 100% E: Symlinking /var/cache/apt/archives/liblocale-gettext-perl_1.07-3build2_amd64.deb to /tmp/apt-dpkg-install-lFoSJQ/000-liblocale-gettext-perl_1.07-3build2_amd64.deb failed! - DPkg::Go (71: Protocol error) # ``` E: Symlinking に記載のライブラリ「liblocale-gettext-perl」をapt-getでインストールすると、ここのエラーメッセージが変わります。 ``` E: Symlinking /var/cache/apt/archives/libmpdec2_2.4.2-1ubuntu1_amd64.deb to /tmp/apt-dpkg-install-0JQUog/000-libmpdec2_2.4.2-1ubuntu1_amd64.deb failed! - DPkg::Go (71: Protocol error) ``` apt Protocol Error など複数キーワードでググったりしましたが、具体的な解決策を見つけられませんでした。 これまでは E: Symlinking のようなエラーは発生していなかったのですが、一昨日あたりから急に発生するようになって、苦戦しています。 ### 試したこと apt-get update apt-get upgrade も試しましたが、事象は改善せず。 Timezoneの問題かとも思い、以下のサイトを参考にtimedatectlコマンドを実行しようとしましたが、 そもそもDockerのUbuntu 18.04のイメージにはtimedatectlがインストールされておらず、 apt-get でインストールしようとしましたが、リポジトリに無いと言われてしまい、途方にくれています。 ``` # apt-get install timedatectl Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package timedatectl # ``` ### 補足情報(FW/ツールのバージョンなど) ホストはWindows7 SP1 VagrantでVitrualBoxのCentOS7 を起動し、そこにDockerをインストールして、Ubuntu 18.04のイメージからコンテナ起動しています。 また、Proxy環境下である為、http_proxyとhttps_proxy環境変数にプロキシ情報を設定しています。 よろしくお願いします。
回答: 想定のアプローチとちょっと違ってしまうのですが、「Selenium+ヘッドレスChromeで画面キャプチャを取得する」に絞った場合、こんな方法はどうですか、ということで回答を書いてみますね。 * Ubuntuベースのイメージにpip3を入れるのではなく、**python3のベースイメージ**を使う というのは如何でしょうか? 先日簡単にpython3,selenium,chrome入りのコンテナでサイトをキャプチャする処理を試したので、そちらでよければ、手前味噌ですが下記に書いてあります。 ご利用の環境がWindows, VirtualBox下のCentOS(Dockerホスト)で、Proxy環境下ということ、ちょっとうまくいくかはわかりませんが、もしよかったらご覧くださいませ。 * * サンプルコード付けてます 流れや注意点ですが、こんな感じです。 * FROM python:3 で、python公式の3系のイメージを利用 * OSはUbuntuでなく、Docker向けの軽量のLinuxKitをベースにする * debian系なのでapt, apt-getが使える * Dockerに特化している分、制約も多少あり * ブラウザ操作の自動化とキャプチャ専用であれば用途に合うかも?