Snap Chrome浏览器及展示如何在snap中打入debian包

Chrome浏览器是一个非常重要的应用.它甚至成为我们平时工作而不可以缺失的工具.在今天的教程中,我们来展示如何把Chrome浏览器打包为一个snap应用.


我们知道,每当我们在电脑上安装我们的Chrome浏览器时,我们可以在如下的地址来下载我们的Chrome deb安装包:

https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

当然这是针对64位的机器来说的.我们如何在我们的snapcraft如何安装这个debian包呢?答案是使用dump plugin.为此,我们的snapcraft.yaml的内容如下:

snapcraft.yaml


name: mychrome # you probably want to 'snapcraft register <name>'
version: '0.2' # just for humans, typically '1.2+git' or '1.3.2'
summary: Chrome for snap # 79 char long summary
description: |
  This is chrome app in snap format

grade: stable # must be 'stable' to release into candidate/stable channels
confinement: strict # use 'strict' once you have the right plugs and slots

apps: 
  mychrome:
    command: desktop-launch $SNAP/opt/google/chrome/chrome
    plugs: [unity7,home,x11,opengl,network,network-bind,browser-support,process-control,fuse-support]

parts:
  chrome:
    plugin: dump
    source: https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    stage-packages:
      - overlay-scrollbar-gtk2
      - libatk-adaptor
      - libgail-common
      - libcanberra-gtk-module
      - libnss3-tools
      - libglu1-mesa

      # language support
      - fonts-freefont-ttf
      - ttf-freefont
      - ttf-wqy-microhei
      - fonts-wqy-microhei

      # input method
      - fcitx
      - fcitx-frontend-gtk2 

    after: [desktop-gtk2]

在上面可以看出来,我们使用dump plugin来安装我们的google-chrome-stable_current_amd64.deb文件.
为了能够让我们的chrome正确运行,我们也同时把它所需要的其它的debian包一并打入到我们的snap包中.

    stage-packages:
      - overlay-scrollbar-gtk2
      - libatk-adaptor
      - libgail-common
      - libcanberra-gtk-module
      - libnss3-tools
      - libglu1-mesa

      # language support
      - fonts-freefont-ttf
      - ttf-freefont
      - ttf-wqy-microhei
      - fonts-wqy-microhei

      # input method
      - fcitx
      - fcitx-frontend-gtk2 

这些都是从Ubuntu Archive来的debian安装包,它们将最终被打入到我们的snap包中.也许有人问:为什么我们不可以用同样的方法(stage-packages)来打包我们的google-chrome-stable_current_amd64.deb?这里的原因就是它不来自于Ubuntu Archive,所以stage-packages不可以帮我们安装.在这里,我们由于在应用中需要中文的显示,所以我也把相应的语言字体包打入到我们的应用之中.对于其它语言的支持,开发者可以自己添加到语言的列表中.另外为了配合我们的输入法的输入,我也把相应的输入法的包打入到我们的最终的snap包中.

另外由于这个应用是一个gtk的应用,所有我们必须使用由desktop-gtk2所提供的desktop-launch来启动我们的应用.由于这个 remote part必须是先于我们的chrome part,所有我们使用了after来调整在build过程中的先后顺序.

在这里值得注意的是我们使用两个非自动连接的plug/slot接口( interfaces):process-control及fuse-support.将来如果该应用发布到stable channel的话,并且我们不以--devmode的选项来安装,我们可以使用如下的命令来安装并需要做相应的手动连接:

$ sudo snap install mychrome
$ sudo snap connect mychrome:fuse-support ubuntu-core:fuse-support
$ sudo snap connect mychrome:fuse-support ubuntu-core:process-control

由于目前我的mychrom应用是发布到 beta的channel里,并且还有个别的安全问题没有完全得到解决.我们可以使用--devmode来安装:

$ sudo snap install mychrome --beta --devmode

等安装完我们的chrome应用后,我们可以在我们的dash中找到相应的Chrome图标.我们可以直接使用这个图标来启动我们的应用:






我们项目的源码在: https://github.com/liu-xiao-guo/mychrome

在调试我们的应用时,我们可以在一个terminal中打入如下的命令:

$ sudo snap install snappy-debug
$ sudo snap connect snappy-debug:log-observe ubuntu-core:log-observe
$ sudo /snap/bin/snappy-debug.security scanlog mychrome

在另外一个terminal或在dash中直接启动我们的应用mychome,我们可以在上面的terminal中查看我们缺失的plugs或错误信息.通过这种方法可以帮助我们来调试我们的应用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值