rebar3使用介绍(四)依赖

【Erlang入门02】强大开发工具rebar3        在写这篇文章之前,我也有过考虑,是不是需要写语法,写案例,写其他基础的东西。但转念一下(因为懒),那些方面的资料还是很容易就可以寻找的,像是《Erlang编程指南》《Erlang OTP并发编程实战》《Erlang趣学指南》等等。但我看到的部分有一个通病就是,看完之后,我并不知道能做什么。Erlang并没有说专属的ide,因为类型不检查,我用idea写的时候最多给不注意的语法错误标个... 阅读详情

依赖关系和配置文件
将始终使用prod应用于其配置的配置文件编译依赖项。没有其他(default当然,除此之外)用于任何依赖。即使它们是为prod依赖项配置的,仍然会将其提取到其声明的配置文件的配置文件目录中。例如,顶层的依赖deps将存放在_build/default/lib/下,而test模式会存放在_build/test/lib/下,并且两者都将在prod应用其配置文件配置的情况下进行编译。
简而言之,deps存放的目录是和当前的执行模式强相关的

  • 解决冲突
    与先前版本的rebar不同,有一组严格的规则,其中拿到的依赖关系不会根据提取或更新的时间而改变。对此的算法如下所述:

Rebar3认为依赖版本仅供参考。鉴于Erlang社区中现有的开源环境,试图强加语义版本控制或任何其他类似方案通常都在胎死腹中:

  • 人们更新了一些版本但不是全部版本(git标签与分支名称与OTP应用程序版本相比),它们可能相互矛盾;
  • 有些人从不更新他们的版本;
  • 不是每个人都订阅相同的版本方案;
  • 人们在订阅语义版本时会出错;
  • 许多应用程序卡在小于的版本中1.0.0,因此被认为永远不稳定;
  • 在撰写本文时,大多数情况下使用源依赖关系:因此,找出版本冲突需要从所有依赖项下载所有传递依赖项,以确定它们是否每次都发生冲突。

在rebar3出现之前,依赖关系的任何其他格式都需要对依赖进行全面检查

相反,rebar3将在级别顺序遍历中获取和下载依赖项。这意味着最接近依赖树根的依赖关系是那些将被选择的依赖关系,无论它们是什么版本。

这意味着在项目中声明的rebar.config任何依赖项永远不会被传递依赖项覆盖,并且传递依赖项永远不会被后来遇到的冲突传递依赖项所覆盖。

这也意味着如果你希望使用的版本高于其他所有版本,您只需将其添加到你的rebar.config文件中并选择将保留的内容即可。

将冲突视为错误
如果你希望rebar3在检测到依赖项冲突时立即中止,而不是像往常一样跳过文件并继续,请将该行添加{deps_error_on_conflict, true}.到您的rebar配置文件中。

声明依赖关系

可以在顶级rebar.config文件中声明依赖关系,并使用该rebar3 tree命令进行检查。

通常,Rebar3支持两种类型的依赖项:

  • 源依赖
  • 包依赖

这两种处理方式可能略有不同(在下载之前,包提供的信息比源依赖项更多,并且将在本地缓存~/.cache/rebar3/),但它们通常表现相同。

所有依赖项都是项目本地的通常是一个很好的选择,以避免全局库存在版本冲突的常见问题。它还有助于独立项目的Releases。

依赖关系描述可以是以下任何格式:

{deps,[
  %% Packages
  rebar,
  {rebar,"1.0.0"},
  {rebar, {pkg, rebar_fork}}, % rebar app under a different pkg name
  {rebar, "1.0.0", {pkg, rebar_fork}},
  %% Source Dependencies
  {rebar, {git, "git://github.com/erlang/rebar3.git"}},
  {rebar, {git, "http://github.com/erlang/rebar3.git"}},
  {rebar, {git, "https://github.com/erlang/rebar3.git"}},
  {rebar, {git, "git@github.com:erlang/rebar3.git"}},
  {rebar, {hg, "https://othersite.com/erlang/rebar3"}},
  {rebar, {git, "git://github.com/erlang/rebar3.git", {ref, "aef728"}}},
  {rebar, {git, "git://github.com/erlang/rebar3.git", {branch, "master"}}},
  {rebar, {git, "git://github.com/erlang/rebar3.git", {tag, "3.0.0"}}},
  %% Legacy support -- added parts such as [raw] are ignored
  {rebar, "3.*", {git,"git://github.com/erlang/rebar3.git"}},
  {rebar, {git, "git://github.com/erlang/rebar3.git"}, [raw]},
  {rebar, "3.*", {git, "git://github.com/erlang/rebar3.git"}, [raw]}
]}.

如上例所示,对于当前版本,仅支持包,git源和mercurial源。可以通过实现资源行为并将其包含在插件中来添加自定义依赖项源。

Rebar3将获取所需的任何其他内容。

但是,Erlang / OTP对引导和关闭应用程序以及用于构建版本和脚本的工具(甚至是Rebar3的一部分)所做的依赖性处理依赖于更细粒度的依赖性声明,指定项目中每个应用程序的哪个依赖于其他应用程序。

你应该每个依赖添加到对应的app或app.src文件:

{application, <APPNAME>,
 [{description, ""},
  {vsn, "<APPVSN>"},
  {registered, []},
  {modules, []},
  {applications, [kernel
                 ,stdlib
                 ,cowboy
                 ]},
  {mod, {<APPNAME>_app, []}},
  {env, []}
 ]}.

这将允许灵活地编写和生成软件,其中各种不相交的应用程序可以在虚拟机中共存而不会将它们的依赖性完全纠缠在一起。例如,您可能希望Web服务器能够独立于管理和调试工具运行,即使它们应该在生产中可用。

如果需要支持更多格式,可以通过rebar_resource行为扩展Rebar3 ,并通过拉取请求发送给维护者。

源依赖

源依赖性将以级别顺序遍历的方式下载 - 从依赖树中的根到叶。一旦看到并获取了依赖项,将忽略共享相同名称的其他依赖项,并显示警告。

对于常规依赖关系树,例如:

  A
 / \
B   C 

依赖项A,B和C将被提取。

但是,对于更复杂的树,例如:

   A
 /   \
B    C1
|
C2

依赖项A,B和C1将被提取。当Rebar3遇到要求时C2,它会显示警告:Skipping C2 (from $SOURCE) as an app of the same name has already been fetched。

比如你在你的项目中使用了cowlib,但是版本和cowboy不同,同时主项目又依赖cowboy,那么编译时会打印

===> Skipping cowlib (from {git,
“git://github.com/ninenines/cowlib.git”,
“1.0.0”}) as an app of the same name has already been fetched

这样的消息应该让用户知道已经跳过了哪个依赖项。

那两个传递依赖关系具有相同名称并且处于同一级别的情况呢?

   A
 /   \
B     C
|     |
D1    D2

在这种情况下,D1将替代D2,因为按B字典顺序排序C。这是一个完全武断的规则,但它至少是一个确保可重复提取的规则。

如果用户不同意结果,他们可以D2提升到最高水平并确保提前选择:

   A      D2
 /   \
B     C
|     |
D1    D2

这将产生A,B,C,和D2。而不是D1。
Rebar3对包(package)使用相同的算法,并且还将检测循环依赖性和错误输出。但是,Source依赖项始终优先于包。

_checkouts目录中的依赖关系将保持不变。

包依赖

rebar3使用hex.pm来提供一组托管包及其依赖项,可以使用以下命令获取列表:

$ rebar3 update
===> Updating package index...
$ rebar3 pkgs

然后可以包含包依赖关系,如前所示:

{deps, [
        {cowboy, "1.0.0"}
       ]
}.

包管理器将获取一组最小的依赖项,以符合基于其拓扑排序过的依赖关系图的构建规则。
为了支持源依赖关系的正确行为,将合并和处理包依赖关系集以及源依赖关系的级别顺序遍历。在发生冲突时选择获胜者的最终结果将类似于源依赖关系,并显示警告。

要使用非默认的CDN,例如官方镜像之一添加到您的项目rebar.config或~/.config/rebar3/rebar.config:

{rebar_packages_cdn, "https://s3-eu-west-1.amazonaws.com/s3-eu.hex.pm"}.

Checkout 依赖

为了处理希望使用本地依赖的情况,提供了_checkouts目录,通常只需创建一个符号链接或将依赖项复制到_checkouts目录下,在_checkouts目录下的app具有最高优先级,他不会被任何的其他的同名app所覆盖

更新依赖

每当获取并锁定依赖项时,Rebar3将从源文件中提取引用以及时将其固定到特定版本。依赖在以后的构建中都必须强制符合这个特定版本。

rebar3允许将以前安装的依赖项升级到更新的版本。有两种形式:将分支的引用转发到其最新版本(例如,旧的master直到新master的HEAD源文件,或最新版本的未指定的版本包),或使用配置在rebar.config的新版本来破坏现有的锁定依赖关系。

但是,Rebar3只允许升级顶级依赖项; 尝试升级传递依赖没有多大意义 - 如果需要对这些依赖进行控制,它们应该被提升到顶层。

在以下依赖关系树中:

A  B
|  |
C  D

用户可以一次升级依赖项(rebar3 upgrade A和rebar3 upgrade B)或两者(rebar3 upgrade A,B或者rebar3 upgrade升级所有依赖项)。

只升级A意味着A和C可升级。升级B和D将被忽略。

然而,升级源依赖性充满了危险,并且出现了有趣的特殊案例。考虑以下依赖树:

    A       B       C1
   / \     / \     / \
  D   E   F   G   H   I2
  |   |
  J   K
  |
  I1

在获取上面的依赖树之后,I2将在I1之前被选择。不过,从之后升级C1到C2而且新的C2不再需要依赖I2,Rebar3将自动获取I1下A树(即使没有升级A是必需的),以提供正确的新树:

    A       B     C2
   / \     / \    |
  D   E   F   G   H
  |   |
  J   K
  |
  I1

这是I2不存在了,I1还在,也就是之前一直使用I2因为C2的更新,导致系统不再使用I2而是变成了I1

锁文件 Lock File

锁文件(rebar.lock)是唯一一个由rebar3生成,但是不在_build目录的产物,这个文件应该被包含在你的源代码列表中,锁文件包含有关代码依赖的信息,包括源依赖中的不可变引用(入git和hg中的那些),以及他们的版本和包预期的哈希值。

这么做的目的是为了使用更准确的依赖而不是通过配置文件自己获得的信息,例如,配置从master更新,这会把你更新到的依赖锁定到一个此刻相对稳定的版本,只有unlock和upgrading才能让他真的更新到一个更新的版本,这么做可以保证即使你使用的源被某人修改了,你的每次构建内容也不会受影响,他是稳定的。

当切换分支或获取传递deps时,Rebar3还将使用锁定文件作为依赖关系的真正权限来源(它将从锁定文件中选择数据,如果有的话)而不是rebar.config文件。当在rebar.config文件中使用松散的引用或版本时,这允许更容易地将安全测试状态携带到其他应用程序中。

从版本3.0.0(实际上是beta-4)开始,该格式预计将向前和向后兼容。Rebar3将根据存储的元数据格式注释锁定文件版本,并在旧版本的rebar3用于读取较新版本的锁定文件时发出警告。这可以告诉用户使用该工具的较旧副本将丢失一些在以后被判断为重要的元数据。

依赖锁管理

可以使用以下方法检查锁和依赖项的状态rebar3 deps:

→ rebar3 deps
cowboy* (package)
recon* (git source)
erlware_commons (locked git source)
getopt* (locked git source)
providers (locked hg source)
relx (locked git source)

依赖项与锁定文件将进行比较以报告其状态。磁盘上的存在与锁定文件不匹配的那些用星号(*)注释。

如果依赖项已锁定但不再需要,也不在配置文件中,则可以将其取消标记rebar3 unlock <app>(rebar3 unlock <app1>,<app2>,...,<app3>对于许多应用程序)。

调用rebar3 unlock将完全刷新锁定文件。这以为着你下次更新到的某些从master获得的依赖可能和之前的依赖不一致了,这可能会导致其他问题,所以unlock的时候一定要小心,最好是unlock指定app而不是全部

rebar3 tree可用于显示当前依赖关系树:

→ rebar3 tree
...
|- bootstrap-0.0.2 (git repo)
|- dirmon-0.1.0 (project app)
|- file_monitor-0.1 (git repo)
|- peeranha-0.1.0 (git repo)
|  |- gproc-git (git repo)
|  |- interclock-0.1.2 (git repo)
|  |  |- bitcask-1.7.0 (git repo)
|  |  |  |- lager-2.1.1 (hex package)
|  |  |  |  |- goldrush-0.1.6 (hex package)
|  |  |- itc-1.0.0 (git repo)
|  |- merklet-1.0.0 (git repo)
|- recon-2.2.2 (git repo)
|- uuid-1.5.0 (git repo)
|  |- quickrand-1.5.0 (git repo)
VS2015+C++实战:手把手教你用海康MVS里的Demo搞定多相机同步采图与保存 本文详细解析了在VS2015+C++环境下,利用海康威视MVS工业相机SDK实现多相机同步采图与保存的全流程。从环境准备、SDK选择到多相机初始化、同步采图方案,再到异常处理与性能优化,提供了实战技巧和代码示例,帮助开发者快速掌握工业相机二次开发的核心技术。 阅读详情

相关推荐

TSMaster实战:如何用LIN总线唤醒你的汽车电子系统(附波形分析)

本文通过TSMaster工具实战解析LIN总线唤醒机制。详细介绍了LIN网络唤醒的协议要求、时序参数计算,并演示了如何在TSMaster中配置唤醒信号、捕获分析波形,以及验证休眠流程。文章结合常见问题排查,为汽车电子工程师提供了从理论到实践的完整调试指南。

weixin_28308325的博客 460

Rebar3使用介绍(一)基础用法

Rebar3使用介绍(一)安装基础用法创建一个新的app或者release加入deps依赖编译输出配置测试发布 本文基本都是按照rebar3官方文档翻译加上自己的理解整理而成,可能有纰漏,疑惑部分请查看原文订正。 安装 使用源码安装 $ git clone https://github.com/erlang/rebar3.git $ cd rebar3 $ ./bootstrap 直接下...

yida_young的博客 1万+

JS实例(三)图片的缓慢放大和缩小

  我们经常能看到在一些网站中可以通过按钮实现对图片的放大或者缩小,也有可能是鼠标经过时图片放大。在本例中就是通过JavaScript实现图片的放大和缩小。   首先是进行简单的页面布局 1 <div class="imagedispose"> 2 <img src="1.jpeg" id="imaged" width="400px" height="3...

weixin_34235105的博客 313

rebar3使用介绍(二)配置项

rebar3使用介绍(二)全局配置Alias 别名ArtifactsCompilation测试选项CoverDialyzerDistributionDirectories 目录EDocEscriptEUnit最小OTP版本检查OverridesHook 钩子shell钩子功能钩子自写功能中可以hook的点RELXSHELLXRef 本篇主要介绍rebar3的配置部分 全局配置 rebar3支持全局...

yida_young的博客 4572

vue3的面试题

vue3的面试题

jiang7701037的博客 6264

【VTKExamples::Meshes】第十二期 QuadricDecimation

本文分享VTK样例QuadricDecimation,并解析接口vtkQuadricDecimation,希望对各位小伙伴有所帮助!

qq_40041064的博客 342

rebar3安装-windows篇

已经不难看出它的地位了。rebar官网地址是,上面有安装和使用文档,推荐看一看。rebar3的安装并不像通常的windows程序那样简单直接,所以本文会对rebar的安装做一个介绍。能看到这里我就默认大家都有erlang环境了,所以我们直接进入rebar3的安装。

陈戏猿 2378

YOLOv12涨点改进 | Neck特征融合改进篇 | YOLOv12引 入 BiFPN双向特征金字塔网络,显著提升了多尺度特征融合效率,目标检测、图像分割、图像分类,助力高效涨点

本文提出了一种基于BiFPN特征融合模块优化的YOLOv12目标检测方法。BiFPN通过引入可学习的权重实现高效的多尺度特征融合,结合双向连接机制提升特征提取能力。实验表明,该方法在COCO数据集上实现了优异的检测性能。文章详细介绍了BiFPN模块的原理、核心代码实现,以及如何将其集成到YOLOv12框架中,包括模块添加、配置文件修改等具体步骤。这种改进方案具有参数少、计算量小等优势,为高效目标检测提供了一种新的技术路径。

Ai缝合怪、助力小伙伴高效发论文 391

推荐使用Rebar3:Erlang的高效构建工具

Rebar3是Erlang社区的一个强大构建工具,旨在简化和标准化Erlang库、应用程序和系统的创建、开发以及发布过程。作为一个自我封装的Erlang脚本,Rebar3不仅在小型项目中表现出色,而且在大型项目和跨平台环境中也能轻松应对。 ## 项目简介 **Rebar3** 的核心功能包括: - 遵循并强制执行标准的Erlang/OTP项目结构,促进代码重用。 - 管理源代码依赖关系,确保可...

gitblog_00964的博客 852

「深度学习之优化算法」笔记(二)优化算法的分类

但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?

quanzhan_King的博客 1371

YOLOv8模型改进、剪枝、蒸馏和Web端界面的直观展示

模型蒸馏与性能提升 为了进一步优化YOLOv8模型,可以使用蒸馏技术将大型模型的知识转移到小型模型中。在模型蒸馏过程中,通过定义适当的损失函数和训练策略,学生网络可以学习教师网络的知识,并达到接近教师网络性能的效果。这样做不仅可以减少模型的存储和计算开销,还可以提高模型的推理速度和实时应用的响应能力。这样,用户可以直观地观察到模型的性能和应用的效果。为了优化YOLOv8模型并实现直观地观看检测效果或训练结果的全家通应用,本文将探讨如何通过改进、剪枝和蒸馏技术,并结合Web端界面来提升模型性能。

weixin_51988935的博客 2397

(npm)项目中更新所有依赖,项目中更新指定依赖,更新某个依赖到最新/某个版本

(npm)vue项目中更新所有依赖,项目中更新指定依赖,更新某个依赖到最新/某个版本 前言:项目依赖有时会需要更新,可能需要全部更新,也可能局部更新,话不多说,上方法,本人亲测有效 1. 第一种,在项目中更新所有依赖 npm install -g npm-check-updates 这一步如果报错的话,像这样 第一步下载不成功,用管理员身份打开PowerShell再次执行npm install -g npm-check-updates,直到成功进行第二步 接下来在当前项目中的继

熟悉JS拼写的FE 9349

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

【保姆级教程】YOLOv8_Pose多目标+关键点检测:训练自己的数据集

m0_51579041的博客 1万+

[erlang] [rebar依赖] app使用lager依赖

rebar3配置添加依赖

sinat_33474267的博客 959

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

rebar3使用本地依赖

简介 erlang提供了rebar3来管理依赖和编译项目,结合git和hex,项目的依赖管理会非常简单。项目本体也会非常精简。但是也带来了问题就是项目本身必须依赖外网才可以构建,因为deps库一般都是从git或者hex上进行的下载。如果是内网环境下,就无法进行构建,只能提前将依赖在外网环境下下载完整再本地进行构建。 同样如果网络环境比较差,国内连接hex的本站速度也比较慢,意味着每次构建都需要很久,因此如果能将依赖从本地进行拉取就会快很多。 实现 rebar3提供了插件功能,在有了插件功能后,就可以在不修改

yida_young的博客 1338

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【erlang】【rebar依赖】cowboy依赖

每个项目都会有对外接口或者提供web服务的需求,erlang有一些优秀的提供http服务的依赖包,包括cowboy、mochiweb、misultin等,本文选用cowboy,对cowboy进行搭建。

sinat_33474267的博客 789

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【erlang】【rebar依赖】添加protobuff(gpb)依赖

客户端与服务器通信的协议现在大部分都是使用google proto buffer规则,怎么在项目中使用gpb?本文对erlang项目旨在搭建使用gpb依赖,将.proto文件转化为.erl文件进行使用。rebar3_gpb_plugin是用于自动转化使用gpb规则编写的.proto文件的插件,能将.proto文件转化为对应的.erl文件...

sinat_33474267的博客 928

如何在项目中集成 erlcloud:rebar3 依赖配置与 Hex 安装终极教程

如果您的 Erlang 项目需要对接 AWS 云服务(如 EC2、S3、SQS、DynamoDB),**erlcloud** 就是最流行的开源选择。它是纯 Erlang 编写的 **AWS APIs library for Erlang**,覆盖 Amazon EC2、S3、SQS、DDB、ELB 等数十个服务。本文带来 **erlcloud rebar3 依赖配置**与 **Hex 安装**的终

gitblog_00183的博客 661

rebar3依赖管理终极指南:轻松解决Erlang项目依赖难题

**rebar3依赖管理**是每个Erlang开发者必须掌握的核心技能!作为Erlang生态系统中功能最强大的构建工具,rebar3为开发者提供了完整的依赖解决方案。无论你是刚接触Erlang的新手,还是经验丰富的开发者,掌握rebar3依赖管理都能让你的项目开发效率提升数倍。本文将为你详细介绍rebar3依赖管理的各个方面,帮助你轻松解决项目依赖难题。 ## 🚀 为什么需要专业的依赖管理?

gitblog_00529的博客 1070

推荐开源构建工具:rebar(已弃用,请使用rebar3)

推荐开源构建工具:rebar(已弃用,请使用rebar3) 虽然标题中提及了rebar已被弃用,但我们仍然要向大家介绍这个曾经在Erlang开发领域中举足轻重的工具,并引导用户转向更新且功能更加强大的rebar3。 1、项目介绍 rebar是一个Erlang构建工具,它使得编译和测试Erlang应用、端口驱动和发布变得简单易行。作为一个自包含的Erlang脚本,rebar便于分发,甚至可以直接嵌入...

gitblog_00719的博客 1049

rebar3编译及发布erlang程序

确保已经安装erlang/OTP和rebar3,可参考本人的“centos7安装erlang/otp”、“centos7安装rebar3”博文完成an

技术需要分享 1777

erlang rebar 配置mysql_Erlang Rebar 使用指南之四:依赖管理

Erlang Rebar 使用指南之四:依赖管理全文目录:本章链接:1 rebar依赖定义Rebar取得和构建符合OTP/Rebar规范的项目。如果项目包含子项目,Rebar会自动递归地构建它们。项目的依赖在project_dir/rebar.config中定义,形式如下:{deps,[Dependency1,Dependency2,...]}.其中每一项(Dependency?)都按照{App,...

weixin_39607710的博客 156

Rebar3项目常见问题解决方案

Rebar3 是一个为 Erlang 语言设计的构建工具,它可以帮助开发者轻松地编译和测试 Erlang 应用程序和发行版。Rebar3 尊重并强制执行标准的 Erlang/OTP 项目结构,以便它们能够被社区轻松复用。该工具管理源代码依赖项和 Erlang 包,确保可重复构建,同时处理构建工件、路径和库,使得标准开发工具可以无忧使用。Rebar3 适用于各种大小的项目,几乎兼容任何平台,并将文档...

gitblog_00364的博客 876

Erlang:Rebar3的简单使用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33774308的博客 488

Rebar3 开源项目教程

Rebar3 是一个用于创建、开发和发布 Erlang 库、应用程序和系统的工具。它遵循 Erlang/OTP 标准项目结构,便于社区复用。Rebar3 能够管理源代码依赖、Erlang 包,确保可重复构建,处理构建路径和库,使标准开发工具使用无障碍。此外,Rebar3 支持多种平台,将文档视为功能,将错误或缺乏文档视为缺陷。 ## 项目快速启动 要快速开始使用 Rebar3,可以按照以下步骤进...

gitblog_00125的博客 1168

Ubuntu下安装Erlang、rebar

Ubuntu下安装erlang、rebar 安装erlang 在官网下载需要版本的安装包。 我选择的是esl-erlang_22.0-1_ubuntu_bionic_amd64.deb。 注:从windows向linux子系统复制文件可以通过如下命令 cp /mnt/c/download/esl-erlang_22.0-1_ubuntu_bionic_amd64.deb /home/mfile 通过以下命令安装: dpkg -i esl-erlang_22.0-1_ubuntu_bionic_am

Dylan_2018的博客 1157
上一篇: rebar3使用介绍(三)命令
下一篇: rebar3使用介绍(五)自定义依赖获取方式
yida_young
博客等级 码龄15年 18粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值