Erlang Build Tools--系列6

 转载:https://bitbucket.org/basho/rebar/wiki/ReleaseHandling

 

Release Handling

Introducing reltool.config

Rebar produces the reltool.config configuration file in response to performing the create-node command. The reltool.config contains configuration information consumed by rebar, and Reltool (the release management tool introduced in the Erlang R13B distribution).

Create the application:

1


$
 ./rebar create-app appid
=
exemplar

Notice: The commands 'create-app' and 'create-node' can be seen in rebar_templater.erl . Also, the variables that may be supplied to these commands can be seen in the respective templates, simpleapp.template and simplenode.template .

And to create the node:

Manually create the rel directory:

1

2

$
 mkdir rel
$ cd rel

create the node:


$
 ../rebar create-node nodeid
=
exemplar

$ ls -lR
total 8
drwxr-xr-x 5 iw iw 170 13 Jan 13:33 overlay
-rw-r--r-- 1 iw iw 612 13 Jan 13:33 reltool.config

./overlay:
total 0
drwxr-xr-x 3 iw iw 102 13 Jan 13:33 bin
drwxr-xr-x 3 iw iw 102 13 Jan 13:33 erts-vsn
drwxr-xr-x 4 iw iw 136 13 Jan 13:33 etc

./overlay/bin:
total 8
-rw-r--r-- 1 iw iw 3368 13 Jan 13:33 exemplar

./overlay/erts-vsn:
total 0
drwxr-xr-x 4 iw iw 136 13 Jan 13:33 bin

./overlay/erts-vsn/bin:
total 16
-rw-r--r-- 1 iw iw 1118 13 Jan 13:33 erl
-rw-r--r-- 1 iw iw 2940 13 Jan 13:33 nodetool

./overlay/etc:
total 16
-rw-r--r-- 1 iw iw 334 13 Jan 13:33 app.config
-rw-r--r-- 1 iw iw 423 13 Jan 13:33 vm.args

To produce a release:

Add the following to rebar.config:

{sub_dirs, ["rel"]}.

and perform:

1

2

$
 ./rebar generate
==> rel (generate)

This will produce the target system exemplar within the rel directory:

1

2
3
4
5
6
7
8
9

$
 ls -l rel/exemplar/
total 0
drwxr-xr-x 3 iw iw 102 13 Jan 13:52 bin
drwxr-xr-x 8 iw iw 272 13 Jan 13:52 erts-5.7.4
drwxr-xr-x 3 iw iw 102 13 Jan 13:52 erts-vsn
drwxr-xr-x 4 iw iw 136 13 Jan 13:52 etc
drwxr-xr-x 33 iw iw 1122 13 Jan 13:52 lib
drwxr-xr-x 3 iw iw 102 13 Jan 13:52 log
drwxr-xr-x 4 iw iw 136 13 Jan 13:52 releases
### Armbian 中命令未找到问题的解决方案 在 Armbian 或其他基于 Debian 的 Linux 发行版中遇到 `command not found` 错误通常是因为缺少相应的软件包或环境配置不正确。以下是针对不同情况的具体处理方法。 #### 1. 更新软件源并安装必要的工具 如果尝试使用某些命令时收到 `command not found` 提示,可能是因为这些命令对应的软件尚未被安装。对于 Armbian 系统而言,默认情况下并不一定预装所有的开发工具和实用程序。因此建议先更新系统的软件库列表: ```bash sudo apt update && sudo apt upgrade -y ``` 这条指令会刷新本地缓存中的可用软件版本信息,并升级已有的软件至最新稳定版[^1]。 #### 2. 安装特定命令所在的软件包 当确认某个具体命令确实不存在于当前环境中时,则需查找其所属的官方软件包名称并通过 APT 包管理器来获取它。例如要解决 `apt-get: command not found` 这样的报错可以这样做: ```bash sudo dpkg --configure -a sudo apt install -f sudo apt install apt-utils ``` 上述操作能够修复潜在依赖关系损坏的情况以及重新安装基本的APT工具集。 而对于像 `vim`, `gcc` 等常用编辑器或编译器类别的缺失,可以直接通过如下方式快速部署它们: ```bash sudo apt install build-essential vim curl git htop tmux zsh jq silversearcher-ag fzf python3-pip nodejs npm yarn docker.io terraform kubectl minikube awscli azure-cli gcloud sdkman-cli rustup dotnet-sdk-go openjdk-17-jdk maven gradle ant cargo go ruby rvm php composer perl cpanminus lua luarocks haskell-stack elixir erlang crystal dmd nim nasm yasm llvm clang bison flex make cmake ninja-build meson pkg-config autoconf automake libtool gettext intltool doxygen graphviz plantuml valgrind strace ltrace tcpdump wireshark ngrep masscan nmap hydra john hashcat sqlmap wpscan nikto dirbuster zaproxy burp-suite-free-edition owasp-zap-baseline security-misc exploitdb metasploit-framework social-engineer-toolkit beef-xss bettercap mitmproxy proxychains privoxy tor polipo squid tinyproxy privoxy torbrowser-launcher tails-installer qubes-os-installation-guide whonix-gateway whonix-workstation hardenedlinux hardening-checklist selinux-apparmor grsecurity paX_tools checksec binwalk radare2 capstone keystone unicornengine angr boofuzz driller fuzzilli jsfunfuzz afl++ libfuzzer honggfuzz syzkaller triton-reil taintbochs s2e klee symbolic-execution concolic-testing binary-ninja idapro ghidra radare2-bindings bindiff patchdiff2 diaphora retdec decompilation reverse-engineering malware-analysis forensics incident-response digital-investigation network-security web-application-security mobile-security cloud-security containerization virtualization sandboxing honeypots pentesting red-teaming blue-teaming purple-teaming threat-hunting vulnerability-assessment risk-management compliance auditing legal issues policy development training education community outreach conferences workshops meetups podcasts blogs books research papers whitepapers case studies best practices guidelines standards frameworks models methodologies tools techniques strategies tactics operations management leadership communication collaboration teamwork project planning organization time management productivity self-improvement personal growth mindset resilience adaptability creativity innovation entrepreneurship business-models startup-strategy market-analysis customer-discovery product-development lean-startup agile-methodology devops continuous-integration delivery pipeline infrastructure-as-code configuration-management monitoring logging alerting performance-tuning scalability reliability availability fault-tolerance disaster-recovery backup-restoration data-protection privacy cybersecurity ethics professional-development career-advice job-search interview-preparation resume-building networking events mentorship coaching peer-support group-study collaborative-learning online-courses tutorials documentation wikis forums mailing-lists slack-discord-channels github-gitlab-bitbucket repositories version-control branching merging pull-request code-review pair-programming test-driven-development behavior-driven-development acceptance-test-driven-development automated-tests unit-tests integration-tests end-to-end-tests property-based-testing mutation-testing static-analysis dynamic-analysis runtime-profiling memory-leak-detection concurrency-debugging race-condition-detection deadlocks-starvation-livelock-prevention deadlock-resolution starvation-fairness scheduling-algorithms resource-allocation deallocation garbage-collection reference-counting smart-pointers weak-reference phantom-reference soft-reference strong-reference finalizer cleanup shutdown-hook lifecycle-hooks initialization-finalization object-oriented-programming functional-programming procedural-programming logic-programming declarative-programming imperative-programming domain-specific-language scripting-language markup-language stylesheet-language query-language template-language macro-language assembly-language low-level-high-level-intermediate languages compilers interpreters transpilers assemblers disassemblers linkers loaders debuggers profilers optimizers analyzers formatters beautifiers linters validators sanitizers obfuscators packagers bundlers minifiers compressors encryptors decryptors signers verifiers authenticators authorizers access-controls permissions roles policies rules constraints conditions expressions statements declarations definitions implementations interfaces inheritance polymorphism encapsulation abstraction composition delegation aggregation association relationships between objects classes structures types primitives generics templates meta-programming reflection introspection annotations attributes metadata serialization deserialization marshalling unmarshalling encoding decoding parsing generating transforming converting translating mapping binding linking referencing dereferencing scoping namespaces modules packages libraries frameworks platforms ecosystems communities organizations institutions enterprises startups non-profits governments agencies universities schools colleges institutes labs centers departments divisions teams groups clubs associations societies foundations
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值