有没有办法从 Firefox 在沙盒环境中安装 Chrome/Chromium?

有没有办法从 Firefox 在沙盒环境中安装 Chrome/Chromium?

我确信,当 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 镜像。这篇博文详细介绍,但这里只给出一个简要的概述。

  1. 从 docker 社区版安装依赖项:sudo apt-get install docker-ce -y; mkdir chrome-local; cd chrome-local;

  2. 在名为“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'
    
  3. 在名为 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
    
  4. 构建 docker 镜像:chmod +x boostrap.sh; docker build -t local/chrome:0.0.1 .- 注意结尾的.!这将在上面的 Dockerfile 中构建镜像并给它命名为local/chrome:0.0.1

  5. 使用以下命令运行 docker 镜像:docker run -p 5900:5900 -e VNC_SERVER_PASSWORD=password --user apps --privileged local/chrome:0.0.1

  6. 使用 VNC 客户端连接到5900保存 Docker 镜像的端口

相关内容