1. 前言

首先介绍下在本文出现的几个比较重要的概念:

函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。

Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考。

如何在函数计算中安装依赖,一直是一个困扰用户的难题。我们写过很多文章,也推出很多功能,都是为了解决用户安装依赖“痛”的问题。

*备注:请确保 Fun 工具版本在 3.0.0+

2. 依赖安装方法一览

我们曾写过一系列文章介绍如何安装函数依赖,这次,我们从用户需求的视角对这些安装方式进行简单分类,以便于用户可以根据自己的需求,寻找到正确的解决方法。

2.1 用户需求一:我就想安装一个库到函数,能不能不让我理解 pip、apt-get 等包管理工具的复杂概念?

fun install 支持这种安装方式,使用方法为,安装到某个函数下代码目录下,只需要在 template.yml 所在的目录执行:

1.安装 apt-get 依赖:

fun install -f functionName -p apt libzbar0

2.安装 pip 依赖:

fun install -f functionName -p pip flask

-p 指的是安装的库类型,现在支持 pip、apt 两种。因为这两种类型的库安装难度是比较大的。那么对于 npm、maven 这些库,怎么装?往下看。

另外,-f functionName 指的是会将依赖安装到这个函数目录下。如果想安装依赖到当前目录也是支持的,可以通过 fun install -h 查看更多帮助信息或者阅读《开发函数计算的正确姿势 —— 安装第三方依赖》https://yq.aliyun.com/articles/688062?spm=a2c4e.11153940.0.0.340846a0s9Wpv8。

2.2 用户需求二:我想装的库,安装步骤比较复杂,我只知道怎么在 linux 服务器上装,函数计算能否提供相同的安装体验?

通过 Fun 3.0 提供的 fun innstall sbox 可以做到这一点。

使用方法为,在 template.yml 所在的目录,执行如下命令:

fun install sbox -f pyzbar-fun -i

其中 -f pyzbar-fun 指的是 template.yml 声明的一个函数。

执行完成后,就会进入一个用于安装依赖的交互式环境。这个交互式环境其实是一个函数计算的模拟环境,在这个环境上装的依赖,可以在最大程度上保证,部署后,不会出现因为环境差异导致的兼容问题。

在这个环境里,常见的 linux 命令都是可以使用的,比如 apt-get、pip、npm 等等。只不过,在安装 apt-get 以及 pip 库时,需要添加 fun-install 前缀。比如原先装一个包的步骤为 pip install flask,那在这个环境中,只需要添加 fun-install 前缀就好了,也就是 fun-install pip install flask。

注意: 直接在交互环境使用 pip 也是可以的,只不过,通过原生命令 pip 安装的依赖都会被安装到系统目录里,退出交互式环境时,这些依赖不会保留下来。而通过 fun-install 安装的依赖会被安装到代码目录,退出交互式命令时,可以被保留下来。

交互式安装依赖的更多帮助信息,请参考《开发函数计算的正确姿势——使用交互模式安装依赖》链接:https://yq.aliyun.com/articles/716663?spm=a2c4e.11153940.0.0.340846a0CGLegU

2.3 用户需求三:我是 node/java/php/c# 用户,我想装一些库,怎么装?

npm 的库安装本身就比 python、apt-get 的库容易很多。原因是 npm install 后,会直接安装在项目目录的 node_modules 里,只要打包的时候,也就是将 template.yml 中的 CodeUri 指向 node_modules 所在的目录就好了。更多信息参考。

java 库安装思路为在 maven 声明依赖,然后在打包时,将所有依赖都打包到同一个 jar 中,然后部署就可以了。更多信息参考。

php 以及 c# 的思路其实都是类似的,可以参考 php 的文档以及 c# 的文档。

2.4 用户需求四:装完后,有没有办法“录制”下来,再次需要的时候,可以一键安装?

请参考我们的 Funfile 文档 链接:https://yq.aliyun.com/articles/719100?spm=a2c4e.11153940.0.0.340846a0CGLegU。

2.5 用户需求五:我的安装比较复杂,即使在本地,我也不知道要怎么装,你们有什么方案吗?

这种场景,其实并没有统一的解决方案,只能 case by case 的解决。目前,我们已经积累了一些解决方案,基本上都是“开箱即用”的。可以参考 Fun 主页的“第三方模板”章节。

可以阅读下我们的 《函数计算安装依赖库方法小结》链接:https://yq.aliyun.com/articles/602147?spm=a2c4e.11153940.0.0.340846a0CGLegU,这个是原理性文章,包括我们推出的一些功能,都是基于这里介绍的原理来实现的。

如果依旧没能解决问题,可以去我们的博客 链接:https://yq.aliyun.com/teams/69/type_blog?spm=a2c4e.11153940.0.0.340846a0CGLegU里扒一扒,也许有意外收获。

3. 总结

上面介绍了一些常见的依赖安装的问题以及相关的解决方案。

如果上面的解决方案不能解决您的业务场景问题,可以加入钉钉群 11721331 进行反馈。

作者:tanhe123

本文为云栖社区内容,未经允许不得转载。

aptitude安装出现依赖_开发函数计算的正确姿势——依赖安装方法一览相关推荐

  1. 开发函数计算的正确姿势——轻松解决大依赖部署

    前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算 ...

  2. 开发函数计算的正确姿势——支持 ES6 语法和 webpack 压缩

    为什么80%的码农都做不了架构师?>>>    首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算 ...

  3. 开发函数计算的正确姿势 —— 移植 next.js 服务端渲染框架

    为什么80%的码农都做不了架构师?>>>    首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算 ...

  4. 开发函数计算的正确姿势 —— 使用 Fun Local 本地运行与调试

    前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算 ...

  5. 开发函数计算的正确姿势 —— 爬虫

    2019独角兽企业重金招聘Python工程师标准>>> 在 <函数计算本地运行与调试 - Fun Local 基本用法> 中,我们介绍了利用 Fun Local 本地运行 ...

  6. 开发函数计算的正确姿势——使用交互模式安装依赖

    前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算 ...

  7. 开发函数计算的正确姿势 —— 安装第三方依赖

    前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算 ...

  8. 开发函数计算的正确姿势——OCR 服务

    简介 首先介绍下在本文出现的几个比较重要的概念: OCR(光学字符识别): 光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理 ...

  9. 开发函数计算的正确姿势———为 PHP 运行时添加自定义扩展

    PHP 语言提供了一种扩展机制(Extension),通过 PHP 扩展可以增强语法.调用 C/C++ 实现的库函数以及优化执行性能.PHP 扩展是与平台相关的动态链接库,在 Linux 和 Mac ...

最新文章

  1. JavaScript中的call、apply、bind深入理解
  2. leetcode算法题--下降路径最小和
  3. Android之提示错误Can not perform this action after onSaveInstanceState
  4. 基于SSM实现宠物领养网站平台管理系统
  5. oracle自动导出awr报告,自动生成awr报告脚本
  6. 华为认证怎么考?华为认证考试费用是多少?
  7. 树莓派能做什么?如何使用树莓派
  8. 微信公众号自定义消息模板(处理数据)
  9. VIEW: X$KSMLRU - LRU flushes from the shared pool - (7.3 - 8.1) [ID 43600.1]
  10. 数据中心与云计算关系
  11. Windows10黑体字体
  12. excel表格如何转换成word表格_将excel/word数据复制粘贴到word表格的几种方式
  13. MySQL DBA必读:万字归总表设计与SQL编写技巧
  14. python图片拼接成特定图案_Python 把几张图片拼接成一张图片,并且写上文字
  15. GD32F307 DAC 输出波形
  16. 时事评论--民间只有传说
  17. AudioPlayer-简易音频播放器
  18. Python安全小工具之Web目录扫描器
  19. 安装和配置Anaconda需要注意的问题
  20. 消息队列中间件之RabbitMQ(上)

热门文章

  1. html页面可以用在webview,使用WebView加载HTML代码
  2. 华为搭载鸿蒙2.0系统的手机,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...
  3. SoundWireServer使用以及失败问题
  4. 被逼至“盗版合法化”,俄罗斯要把 RuTracker 放出来了?
  5. 开源该如何“扎根”中国?听听他们怎么说
  6. 仅需 5 步,用 JavaScript 直接通过前端发送电子邮件
  7. 面试官:你说对 MySQL 事务很熟?那我问你 10 个问题
  8. 一文追溯 ETL 的发展历程
  9. 这才是设计 React 的万金油!
  10. V神已抵京,倒计时4天!6大理由告诉你为什么要参加“2019以太坊技术及应用大会”...