热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在snap安装时运行我们的hook脚本

对于有些snap应用来说,我们很希望在snap安装时能够运行我们的一段脚本来做一些我们想要做的事,比如创建一个文件夹等.那么我们如何能得到这个事件呢?在我们的先前的文章"如何为我们的Ubuntu

对于有些snap应用来说,我们很希望在snap安装时能够运行我们的一段脚本来做一些我们想要做的事,比如创建一个文件夹等.那么我们如何能得到这个事件呢?在我们的先前的文章"如何为我们的Ubuntu Core应用进行设置"中,我们已经展示了如何设置我们的snap应用.在那里面的configure脚本在设置时会被调用.事实上,它在安装时也会被自动调用.下面,我们以如下的例子来说明:

https://github.com/liu-xiao-guo/helloworld-install

在上面的例子中,我们的configure脚本如下:

configure

#!/bin/sh

echo "This is called during the installation!"
exit 1

这是一个非常简单的脚本程序.在我们的安装过程中,它返回的值是"1",表明它是失败的.那么这个应用将不被成功安装:

liu-xiao-guo@localhost:~/apps/helloworld-install$ sudo snap install *.snap --dangerous
error: cannot perform the following tasks:
- Run configure hook of "hello-install" snap if present (This is called during the installation!)
liu-xiao-guo@localhost:~/apps/helloworld-install$ snap list
Name            Version       Rev  Developer  Notes
classic         16.04         17   canonical  devmode
core            16.04.1       716  canonical  -
grovepi-server  1.0           x1              devmode
packageproxy    0.1           3    ogra       -
pi2             16.04-0.17    29   canonical  -
pi2-kernel      4.4.0-1030-3  22   canonical  -
snapweb         0.21.2        25   canonical  -

显然通过上面的展示,helloworld-install没有被安装到我们的系统中去.
如果我们把configure脚本修改为:

configure

#!/bin/sh

echo "This is called during the installation!"
exit 0

这个脚本的返回值为"0",表明它的安装是成功的.

liu-xiao-guo@localhost:~/apps/helloworld-install$ sudo snap install *.snap --dangerous
hello-install 1.0 installed
liu-xiao-guo@localhost:~/apps/helloworld-install$ snap list
Name            Version       Rev  Developer  Notes
classic         16.04         17   canonical  devmode
core            16.04.1       716  canonical  -
grovepi-server  1.0           x1              devmode
hello-install   1.0           x1              -
packageproxy    0.1           3    ogra       -
pi2             16.04-0.17    29   canonical  -
pi2-kernel      4.4.0-1030-3  22   canonical  -
snapweb         0.21.2        25   canonical  -
liu-xiao-guo@localhost:~/apps/helloworld-install$ vi /var/log/syslog
liu-xiao-guo@localhost:~/apps/helloworld-install$ sudo vi /var/log/syslog

我们可以在系统的/var/log/syslog中找到这个脚本运行时的输出:



显然脚本在安装时有被正常运行.我们可以通过运行这样一个hook来对我们的应用做一些初始化,从而为接下来的应用的运行铺好基础.

更多阅读: https://kyrofa.com/posts/snap-updates-automatic-rollbacks

推荐阅读
  • socket.io是个基于node.js的快平台实时通讯框架。只用不到10行代码,就可以搭建一个简单的多人实时聊天室。先来看看运行后的效果:socket.io多人聊天室只要简单几 ... [详细]
  • 十一、构建我们自己的包在本章中,我们将学习如何构建自己的包。编写包可以让我们创建可以在许多应用 ... [详细]
  • 一、如果使用默认的1521端口,让实例自动注册到该监听上,那么local_listener无需设置,listener.ora文件按照正常方 ... [详细]
  • pdf怎么把html变成pdf1 用AdobeAcroat8.1.2,打开网页后,页面右键菜单中会出现一个“转换为AobePDF的选项,点击就可以转换。 安装AdobeAcroba ... [详细]
  • 1.File类:文件和目录路径名的抽象表现形式2.创建对象:File(Stringpathname)通过给定的路径创建文件对象File(Stringpa ... [详细]
  • 获取原始语音系统图使用matlab生成一个测试用的单频信号,1KHz,1Vrmsclcclearall;closeall;f1000;%定义信号频 ... [详细]
  • 开发笔记:(源码开放) React + webpack3 多页面应用 及 常见问题解答
    本文由编程笔记#小编为大家整理,主要介绍了(源码开放)React+webpack3多页面应用及常见问题解答相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 1.安装cordovapluginaddcordova-plugin-file-transfercordovapluginaddcordova-plugin-fi ... [详细]
  • 这篇文章将为大家详细讲解有关C#开发技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C#开发技 ... [详细]
  • Java开发框架!Alibaba高并发业务秒杀系统落地实战文档,砥砺前行!
    接口概述:接口是Java语言中的一种引用类型,是方法的集合,所以接口的内部主要就是定义方法,包含常量,抽象方法(JDK ... [详细]
  • 在Android源码环境下编译系统App使用第三方jar包的方法(备忘)
    1将要使用的jar包放入App的根目录,即Android.mk所在目录2按如下方式编写Android.mk文件(########之间的行用于编译和使用jar包)LOCAL_PATH:$(ca ... [详细]
  • 开发笔记:sql盲注之报错注入(附自动化脚本)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了sql盲注之报错注入(附自动化脚本)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • hibernate映射组件映射
    在Hibernate中,component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid(对象标识符),compo ... [详细]
  • 如何理解MyBatis动态SQL
    本篇内容主要讲解“如何理解MyBatis动态SQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解M ... [详细]
  • 1、安装插件即可在源码管理中看见svn的选项subversion2、源码管理中配置svn的工程地址  3、点击Credentials的【添加】配置svn的用户名密码,完成后选取即可 ... [详细]
author-avatar
经典调剂行570
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有