红联Linux门户
Linux帮助

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

发布时间:2016-11-08 14:50:28来源:Ubuntu手机作者:Ubuntu手机
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(https://wiki.ubuntu.com/snapcraft/parts)必须是先于我们的chrome part,所有我们使用了after来调整在build过程中的先后顺序.
 
在这里值得注意的是我们使用两个非自动连接的plug/slot接口(interfaces)(http://snapcraft.io/docs/reference/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图标.我们可以直接使用这个图标来启动我们的应用:
Snap Chrome浏览器及展示如何在snap中打入debian包
Snap Chrome浏览器及展示如何在snap中打入debian包
 
我们项目的源码在:https://github.com/liu-xiao-guo/mychrome
 
本文永久更新地址:http://www.linuxdiyf.com/linux/25829.html