真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MacOS下如何用交互模式安裝依賴

MacOS下如何用交互模式安裝依賴?相信大部分人都還沒學(xué)會這個技能,為了讓大家學(xué)會,給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。

10年的西藏網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整西藏建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“西藏網(wǎng)站設(shè)計”,“西藏網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

依賴工具

  • Docker
  • Fun

Fun 和 Fcli 工具依賴于 docker 來模擬本地環(huán)境。

對于 MacOS 用戶可以使用 homebrew 進(jìn)行安裝:

brew cask install docker
brew tap vangie/formula
brew install fun

Windows 和 Linux 用戶安裝請參考:

安裝好后,記得先執(zhí)行 fun config 初始化一下配置。

注意, 如果你已經(jīng)安裝過了 fun,確保 fun 的版本在 3.0.0-beta.1 以上。

$ fun --version
3.0.0-beta.1

背景

函數(shù)計算以 Zip 壓縮文件格式作為約定的交付物,交付物通常包含代碼和依賴庫文件。這些依賴庫文件通常分為系統(tǒng)依賴(使用 apt-get 包管理安裝的庫)和語言運行時依賴(使用語言相關(guān)的包管理器如 npm、pip 安裝的庫)。

系統(tǒng)依賴通常不可移植

通常情況下系統(tǒng)依賴和環(huán)境相關(guān),比如我們希望在函數(shù)里調(diào)用 brotli 命令解壓文件,如果我們在開發(fā)機 mac 上,使用 brew install brotli  安裝了 brotil 命令,然后打包發(fā)布到函數(shù)計算平臺是無法運行的。有時候即使開發(fā)機是 linux 也不一定可以。這是因為通過系統(tǒng)提供的包管理工具安裝的可執(zhí)行程序和動態(tài)鏈接庫與系統(tǒng)的類型和版本強相關(guān)。不同系統(tǒng)上安裝的這些程序和文件不具備可移植性。

語言依賴也存在不可移植的情況

通常情況下語言依賴是平臺無關(guān)的,比如說使用 npm install jszip 安裝一個 nodejs 依賴,該依賴可以運行在不同的操作系統(tǒng)和不同的 nodejs 版本下。語言平臺上的依賴通常是可移植的,單也有例外的情況。如: npm install node-pty 就是一個存在原生綁定(native binding)的例子。node-pty 模塊安裝過程中,依賴一些 c/c++ 代碼,這些代碼會在安裝的過程中進(jìn)行編譯,我們知道 c/c++ 代碼雖然也具備平臺移植性,但是其編譯產(chǎn)物是不可移植的。

DSL 腳本的不足

Fun 2.0 版本支持依賴安裝 DSL 文件 fun.yml,fun.yml 為依賴安裝提供了批量模式。日常開發(fā)提供了一種命令模式,如:fun install --package-type pip tensorflow。在 Fun 3.0 中我們提供了一種全新的 DSL 文件 Funfile。Funfile 可以理解為 Dockerfile 的語法子集,讓熟悉 docker 的開發(fā)者可以快速上手。

但是無論是 fun.yml 或 Funfile,以及命令模式,對于開發(fā)者都有一個痛點。那就是不知道環(huán)境里當(dāng)前的狀態(tài):

  1. 已經(jīng)安裝的軟件有哪些
  2. 某個目錄下有些什么文件
  3. 文件的內(nèi)容以及屬性是什么

開發(fā)者需要可以交互的沙箱環(huán)境。該功能在 Fun 2.0 中沒有,用戶常常使用 fcli sbox 命令作為替代,或者直接使用 fc-docker 項目提供的鏡像啟動一個 container。docker run --rm -it -v $(pwd):/code aliyunfc/runtime-python2.7:build bash 但是這些復(fù)雜的命令和參數(shù)需要用戶具備足夠的 docker 背景知識以及對函數(shù)計算工作原理的了解。

為了更好的解決上述問題,提升用戶的開發(fā)體驗,我們在 Fun 3.0 中提供了 fun install sbox 子命令。MacOS下如何用交互模式安裝依賴

命令行參數(shù)

$ fun install sbox --help
Usage: fun install sbox [-f|--function <[service/]function>] [-r|--runtime ] [-i|--interactive] [-e|--env key=val ...] [-e|--cmd ]

Start a local sandbox for installation dependencies or configuration

Options:
  -f, --function <[service/]function>  Specify which function to execute installation task.
  -r, --runtime               function runtime, avaliable choice is: nodejs6, nodejs8, nodejs10, python2.7, python3, java8, php7.2, custom
  -i, --interactive                    run as interactive mode. Keep STDIN open and allocate a pseudo-TTY when in a interactive shell. (default: false)
  -e, --env                       environment variable, ex. -e PATH=/code/bin (default: [])
  -c, --cmd                       command with arguments to execute inside the installation sandbox.
  -h, --help                           output usage information

快速開始

下面以項目 pyzbar_example 為例, pyzbar_example 項目包含如下文件

$  tree .
.
├── fun.yml
├── index.py
├── qrcode.png
└── template.yml

0 directories, 4 files

其中 template.yml 文件內(nèi)容如下

ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
pyzbar-srv:
Type: 'Aliyun::Serverless::Service'
pyzbar-fun:
    Type: 'Aliyun::Serverless::Function'
    Properties:
    Handler: index.handler
    Runtime: python3
    Timeout: 60
    MemorySize: 128
    CodeUri: .

啟動交互模式 sbox

$ fun install sbox -f pyzbar-fun -i
using template: template.yml
root@fc-python3:/code# ls
fun.yml  index.py  qrcode.png  template.yml
root@fc-python3:/code# exit
exit
$

在 template.yml 所在的項目目錄執(zhí)行 fun install sbox,其中參數(shù)

  • -f/--function 參數(shù)指定啟動 sbox 的函數(shù),本例中函數(shù)所設(shè)定的 runtime 為 python3,所以 python3 環(huán)境的沙箱環(huán)境會被啟動起來,函數(shù) pyzbar-fun 所對應(yīng)的 CodeUri 目錄會被掛載到沙箱環(huán)境內(nèi)部的 /code 目錄,上面例子中在沙箱環(huán)境內(nèi) ls 命令返回的文件列表證實了這一點。
  • -i/--interactive 參數(shù)表示啟動交互模式,對應(yīng)非交互模式的用途可以看后面的示例。

如果 template.yml 文件并不存在,或者 template.yml 配置文件內(nèi)的函數(shù)尚未配置可以 使用 --runtime 參數(shù)啟動交互模式,此時當(dāng)前目錄會被掛載到沙箱環(huán)境的 /code 目錄。

$ fun install sbox -r nodejs10 -i
root@fc-nodejs10:/code# ls
fun.yml  index.py  qrcode.png  template.yml
root@fc-nodejs10:/code# exit
exit
$

上面的方法適用于臨時啟動一個 sbox 做些動手實驗的場景。

使用 fun-install 安裝 apt 和 pip 依賴
$ fun install sbox -f pyzbar-fun -i
using template: template.yml
root@fc-python3:/code# fun-install apt-get install libblas3
Task => [UNNAMED]
     => apt-get update (if need)
     => apt-get install -y -d -o=dir::cache=/code/.fun/tmp libblas3
     => bash -c
        for f in $(ls /code/.fun/tmp/archives/*.deb); do
          dpkg -x $f /code/.fun/root;
          mkdir -p /code/.fun/tmp/deb-control/${f%.*};
          dpkg -e $f /code/.fun/tmp/deb-control/${f%.*};

          if [ -f "/code/.fun/tmp/deb-control/${f%.*}/postinst" ]; then
            FUN_INSTALL_LOCAL=true /code/.fun/tmp/deb-control/${f%.*}/postinst configure;
          fi;
        done;
     => bash -c 'rm -rf /code/.fun/tmp/archives'
root@fc-python3:/code# fun-install --help
Usage: fun local [options] [command]

build function codes or install related depedencies for Function Compute

Options:
  -h, --help  output usage information

Commands:
  apt-get     install apt depencies
  pip         install pip depencies
  build       build function codes for Function Compute
  help [cmd]  display help for [cmd]

非交互模式下使用 sbox

使用如下一行命令打印出 pyzbar-fun 函數(shù)的 sbox 內(nèi)預(yù)裝的 deb 包。

$ fun install sbox -f pyzbar-fun -c 'dpkg -l'
using template: template.yml
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                               Version                          Architecture Description
+++-==================================-================================-============-===============================================================================
ii  acl                                2.2.52-2                         amd64        Access control list utilities
ii  adduser                            3.113+nmu3                       all          add and remove users and groups
ii  apt                                1.0.9.8.4                        amd64        commandline package manager
ii  apt-utils                          1.0.9.8.5                        amd64        package management related utility programs
ii  autoconf                           2.69-8                           all          automatic configure script builder
ii  automake                           1:1.14.1-4+deb8u1                all          Tool for generating GNU Standards-compliant Makefiles
...(此處省略了許多行)

也可以通過管道將外部命令的內(nèi)容傳遞到內(nèi)部

$  echo hello | fun install sbox -r nodejs10  -i -c 'cat -'
hello

注意這里 -i 參數(shù)不能省略,該參數(shù)表示接受標(biāo)準(zhǔn)輸入。

小結(jié)

fun install sboxfcli sbox 的替代工具,除了支持交互模式,沿用了指定 runtime 啟動 sbox,也實現(xiàn)了 fun 風(fēng)格的指定函數(shù)啟動 sbox,更加便利。同時也支持內(nèi)聯(lián)命令和管道等非交互模式的用法,為編寫腳本提供了更好的支持。

以上就是用交互模式安裝依賴的詳細(xì)內(nèi)容,代碼示例簡單明了,如果在日常工作遇到此問題。通過這篇文章,希望你能有所收獲,更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


名稱欄目:MacOS下如何用交互模式安裝依賴
當(dāng)前鏈接:http://weahome.cn/article/iiiojh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部