我确信,当 Firefox 和 Chrome/Chromium 一起安装在同一个 Ubuntu 系统上时,Chrome/Chromium 会做一些事情使 Firefox 变得更慢、更不可靠。
每当我在 Ubuntu 系统上安装 Chrome/Chromium 时,系统总会在大约一个月后变得非常慢。我有很多 Ubuntu 系统,这种情况会发生每时每刻,至少过去两年确实如此。
当我同时安装 Firefox 和 Chrome/Chromium 时,最烦人的事情发生了。它可以工作几天,然后 Firefox 启动速度就慢得离谱。我的一台机器花了将近 10 分钟才加载 Firefox,而使用 Chrome/Chromium 时则瞬间完成。
我更喜欢 Firefox,因为它没有添加任何这些粗略的 BS。但我需要 Chrome/Chromium 才能调试我的 android 应用程序内的 webview。那么,有没有办法在沙盒环境中安装 Chrome/Chromium,同时仍可以使用 USB,而不会破坏 Firefox?
(有没有可以替代谷歌浏览器的软件可以用于调试 Android webview,并且不会强迫我在安装一个月后重新安装 Ubuntu 16.04?)
答案1
就我而言,我有一台多余的、非常旧的 Ubuntu 笔记本电脑,我已经用它来通过 Chrome 播放一些 DRM 内容。我决定将它设置为永久的 Android 测试设备,这样我甚至可以远程访问它。
在另一种情况下,人们可能会创建一个涉及 Chrome 的 docker 镜像。这篇博文详细介绍,但这里只给出一个简要的概述。
从 docker 社区版安装依赖项:
sudo apt-get install docker-ce -y; mkdir chrome-local; cd chrome-local;
在名为“Dockerfile”的文件中,输入:
FROM ubuntu:trusty RUN apt-get update; apt-get clean # Add a user for running applications. RUN useradd apps RUN mkdir -p /home/apps && chown apps:apps /home/apps # Install x11vnc. RUN apt-get install -y x11vnc # Install xvfb. RUN apt-get install -y xvfb # Install fluxbox. RUN apt-get install -y fluxbox # Install wget. RUN apt-get install -y wget # Install wmctrl. RUN apt-get install -y wmctrl # Set the Chrome repo. RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list # Install Chrome. RUN apt-get update && apt-get -y install google-chrome-stable COPY bootstrap.sh / CMD '/bootstrap.sh'
在名为 bootstrap.sh 的文件中,输入:
#!/bin/bash # Based on: http://www.richud.com/wiki/Ubuntu_Fluxbox_GUI_with_x11vnc_and_Xvfb readonly G_LOG_I='[INFO]' readonly G_LOG_W='[WARN]' readonly G_LOG_E='[ERROR]' main() { launch_xvfb launch_window_manager run_vnc_server } launch_xvfb() { # Set defaults if the user did not specify envs. export DISPLAY=${XVFB_DISPLAY:-:1} local screen=${XVFB_SCREEN:-0} local resolution=${XVFB_RESOLUTION:-1280x1024x24} local timeout=${XVFB_TIMEOUT:-5} # Start and wait for either Xvfb to be fully up or we hit the timeout. Xvfb ${DISPLAY} -screen ${screen} ${resolution} & local loopCount=0 until xdpyinfo -display ${DISPLAY} > /dev/null 2>&1 do loopCount=$((loopCount+1)) sleep 1 if [ ${loopCount} -gt ${timeout} ] then echo "${G_LOG_E} xvfb failed to start." exit 1 fi done } launch_window_manager() { local timeout=${XVFB_TIMEOUT:-5} # Start and wait for either fluxbox to be fully up or we hit the timeout. fluxbox & local loopCount=0 until wmctrl -m > /dev/null 2>&1 do loopCount=$((loopCount+1)) sleep 1 if [ ${loopCount} -gt ${timeout} ] then echo "${G_LOG_E} fluxbox failed to start." exit 1 fi done } run_vnc_server() { local passwordArgument='-nopw' if [ -n "${VNC_SERVER_PASSWORD}" ] then local passwordFilePath="${HOME}/x11vnc.pass" if ! x11vnc -storepasswd "${VNC_SERVER_PASSWORD}" "${passwordFilePath}" then echo "${G_LOG_E} Failed to store x11vnc password." exit 1 fi passwordArgument=-"-rfbauth ${passwordFilePath}" echo "${G_LOG_I} The VNC server will ask for a password." else echo "${G_LOG_W} The VNC server will NOT ask for a password." fi x11vnc -display ${DISPLAY} -forever ${passwordArgument} & wait $! } control_c() { echo "" exit } trap control_c SIGINT SIGTERM SIGHUP main exit
构建 docker 镜像:
chmod +x boostrap.sh; docker build -t local/chrome:0.0.1 .
- 注意结尾的.
!这将在上面的 Dockerfile 中构建镜像并给它命名为local/chrome:0.0.1
。使用以下命令运行 docker 镜像:
docker run -p 5900:5900 -e VNC_SERVER_PASSWORD=password --user apps --privileged local/chrome:0.0.1
使用 VNC 客户端连接到
5900
保存 Docker 镜像的端口