Troubles getting started with openBalena


#1

Dear Balena,
congratulations to new name and exciting new features
including ability to run self-hosted infra.

I have jumped on Getting started guide for openBalena
and I have done full setup server and client
side on Internet reachable VPS with proper DNS.

I hit now two issues and not sure about troubleshooting approach:

ISSUE1

  • device (RPi Zero W) was able to reach server and register under my app, however even if RPi does not blink led, is connected, “balena devices” report my new device offline. Not really sure how to proceed finding why…
    What would be troubleshooting commands and logs to use?

    balena device 48a0f02

    == FLORAL HILL
    ID: 1
    DEVICE TYPE: raspberry-pi
    STATUS: offline
    IS ONLINE: false
    APPLICATION NAME: myapp
    UUID: 48a0f02397b58456683f4576118e8734
    DASHBOARD URL: https://dashboard.balena.mydomain-replaced/devices/48a0f02397b58456683f4576118e8734/summary

ISSUE2

  • I am building my app used already with openCloud (so tested build process), however local build and deployment via “balena deploy myapp --logs --source .” fails with some API error:
    I am using last balena CLI pointed correctly to my openBalena URL.

    [Info] Everything is up to date (use --build to force a rebuild)
    [Info] Creating release…
    [Error] Deploy failed

    Error
    Cannot GET /v4/user(2)

    If you need help, don’t hesitate in contacting us at:

    GitHub: https://github.com/balena-io/balena-cli/issues/new
    Forums: https://forums.balena.io
    

===

Thank you
Martin


#2

Hello! Thanks for trying out openBalena.

Regarding the issues you’re seeing – the devices appearing offline is a known issue we’re currently investigating. That Cannot GET /v4/user(2) is unexpected though – it seems as if some CLI dependency was not updated. How did you install balena-cli? Is it a new install or an update?


#3

Thanks for looking at it.

balena-cli@9.0.0 installed fresh this morning per getting started instructions - fresh install. There used to be resin-cli however, that remains in parallel. Both npm installed globally. Will try to remove both and install only latest balena-cli.


#4

removed both resin-cli and balena-cli and reinstalled balena.

problem remains, but with other API call
[Info] Everything is up to date (use --build to force a rebuild)
[Info] Creating release…
[Error] Deploy failed




Error


Cannot GET /v4/application(1)


balena apps

balena devices

work for me

just release creation process on openBalena after sucessful build fails as above


#5

hey @mko thanks for helping us figure this out and for your patience! not much more to add, just thanks :slight_smile:


#6

Many thanks for great idea to form future Balena customers on self-hosted Balena.

So I understand that not much I can do for now until issue is addressed in balena-cli or openBalena code?
Did I understand correctly that v5 API should be called by CLI in case of openBalena - which is why request from CLI to self-hosted server fails?
I am staying tuned :wink:

Good luck - especially in challenging time around renaming services, DNS, in code - not a simple project :wink:


#7

@mko the CLI issue you were seeing should have now been fixed. Can you please completely remove and reinstall balena-cli? We’ll hopefully also be able to resolve the devices showing offline issue by the end of this week. Thanks for reaching out!


#8

@dfunckt
Wow, you are amazing. I have just successfully pushed my first app to my first own openBalena registry!

What I did to reinstall CLI

npm uninstall -g balena-cli --unsafe-perm
npm install balena-cli -g --production --unsafe-perm

And this is lovely result that I am so happy about with bonus unicorn replacement :wink:

[Info]    Everything is up to date (use --build to force a rebuild)
[Info]    Creating release...
[Info]    Pushing images to registry...
[Info]    Saving release...
[Success] Deploy succeeded!
[Success] Release: 7eccf7fa38063778fe20a793a4e17a7c

		                   ,--.,
		                   |    \
		                   ''^\   \
		                       -   .
		                        ;  .
		           _..-'”^''.,.)---.'“'--.,___
		       .-'`,-`       '` l    `,       ```-.
		     /   ,'            /       `          '.
		   /    /   .-.        (           _         \
		  /        /   '.                ./  `.       \
		 /        /      \            _ /      \       \
		;        |   ##   `-         /    ##   |        )
		,        (   ##    ;  _      \    ##   ;         .
		, .       \       /  / |  |`\ \        /      ,  ,
		(  |;       \.....`  \_|  ;_/  `-,._.,'      /|  |
		|  \ '-                                    ;-' , )
		;   ;  `|  |`\    --,    --,     __    ;'\_;  '  |
		(    \  `--'  \___| |___/  |___.`  |,.-`     /   ;
		l    \   .--                        .--.   /    -
		 ;    `-_|  |   _._   ___    ___    |  |_;      ;
		 .          |__|   ` |   |  |   ;._-'          /
		  \     \          |_.   `'^`                 /
		   \.    \                                   /
		     -,   `.                             ,-”
		       `-._ _`- _                  _,,.-'
		                 `'----.....--'''”

Many thanks for fixes and looking forward to progress reviewing and exploring openBalena features.


#9

I have noticed device supervisor on new device cannot progress after registration:

via

balena logs resin_supervisor | grep POST

on device

> [2018-10-31T23:33:10.901Z] Error reporting initial configuration, will retry { t: <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="utf-8">
> <title>Error</title>
> </head>
> <body>
> <pre>Cannot POST /v4/device_config_variable</pre>
> </body>

openBalena does not respond as expected. My understanding this is issue causing device to stay offline - issue you are now working on.


#10

I’m also having some issues following the getting started guide for openBalena.

I have the server setup and running and the balena-cli is installed on my MacOS Mojave client as standalone binary using the darwin release here: https://github.com/balena-io/balena-cli/releases/tag/v9.1.1

I have setup an app:

$ balena apps
ID APP NAME   DEVICE TYPE  ONLINE DEVICES DEVICES LENGTH
1  myFirstApp raspberrypi3

…and a device has come online (although it exhibits the ‘offline’ issue noted above):

$ balena device dc7bd9f
== BILLOWING SNOW
ID:                 2
DEVICE TYPE:        raspberrypi3
STATUS:             offline
IS ONLINE:          false
IP ADDRESS:         ---.---.---.---
APPLICATION NAME:   myFirstApp
UUID:               d...a
SUPERVISOR VERSION: 8.0.0
OS VERSION:         balenaOS 2.26.0+rev1
DASHBOARD URL:      https://dashboard.abc.com/devices/d...a/summary

I’m just following the getting started right along, so trying to deploy https://github.com/balena-io-playground/sense-snake.git results in the following error:

$ balena deploy myFirstApp --logs --source . --emulated
[Info]    Creating default composition with source: /Users/donfmorrison/Source/sense-snake
[Error]   Deploy failed
Part of the CLI could not be loaded. This typically means your CLI install is in a broken state.
You can normally fix this by uninstalling and reinstalling the CLI.
...

I tried removing both balena-cli and old version of resin-cli. I was unable to install balena-cli using npm thus why I’m using the standalone binary per the instructions here: https://github.com/balena-io/balena-cli#standalone-install

What shall I try next?


#11

Hello @donfmorrison – the issue with devices appearing offline is in balenaOS and I expect it will be fixed on the next release in the coming week or the next.

We’re looking into the error you see with the standalone binary – being standalone it should contain all its dependencies and getting this error should not be possible, unless the build is broken. We’re looking into this.

What was the error you had with installing with npm?


#12

@dfunckt - I tried the new standalone of v9.1.2 from @pimterry’s patch release today.

All is well, now! Victory is ours. Thank you for the help!

[Info]    Creating release...
[Info]    Pushing images to registry...
[Info]    Saving release...
[Success] Deploy succeeded!
[Success] Release: 6fbb839b5925e7cf56ae5b8ad459c425
		    \
		     \
		      \\
		       \\
		        >\/7
		    _.-(6'  \
		   (=___._/` \
		        )  \ |
		       /   / |
		      /    > /
		     j    < _\
		 _.-' :      ``.
		 \ r=._\        `.
		<`\\_  \         .`-.
		 \ r-7  `-. ._  ' .  `\
		  \`,      `-.`7  7)   )
		   \/         \|  \'  / `-._
		              ||    .'
		               \\  (
		                >\  >
		            ,.-' >.'
		           <.'_.''
		             <'

Hooray!

Congrats to the team on your new branding, and thank you for your contribution those of us on the edge with the release of openBalena!


#13

Also, here is the output of my latest npm install from tonight (9.1.2) - seems like it might have installed ok this time. Results of the build above were using the standalone release, just to be clear.

$ sudo npm install balena-cli -g --production --unsafe-perm
Password:
npm WARN deprecated graceful-fs@3.0.11: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
npm WARN deprecated graceful-fs@1.2.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
/usr/local/bin/balena -> /usr/local/lib/node_modules/balena-cli/bin/balena

> drivelist@5.2.12 install /usr/local/lib/node_modules/balena-cli/node_modules/drivelist
> prebuild-install || node-gyp rebuild

prebuild-install WARN install EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/balena-cli/node_modules/drivelist/build/Release'
  CXX(target) Release/obj.target/drivelist/src/code.o
  CXX(target) Release/obj.target/drivelist/src/log.o
  SOLINK_MODULE(target) Release/drivelist.node

> ext2fs@1.0.7 install /usr/local/lib/node_modules/balena-cli/node_modules/ext2fs
> prebuild-install || node-gyp rebuild

prebuild-install WARN install EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/balena-cli/node_modules/ext2fs/build/Release'
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/alloc.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/alloc_sb.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/alloc_stats.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/alloc_tables.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/atexit.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/badblocks.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/bb_compat.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/bb_inode.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/bitmaps.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/bitops.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/blkmap64_ba.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/blkmap64_rb.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/blknum.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/block.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/bmap.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/check_desc.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/closefs.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/crc16.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/crc32c.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/csum.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/dblist.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/dblist_dir.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/dirblock.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/dirhash.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/dir_iterate.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/dupfs.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/expanddir.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/ext_attr.o
../deps/e2fsprogs/lib/ext2fs/ext_attr.c:739:17: warning: comparison of integers of different signs: 'const int' and
      'unsigned long' [-Wsign-compare]
            inode_size <= EXT2_GOOD_OLD_INODE_SIZE + inode->i_extra_isize +
            ~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../deps/e2fsprogs/lib/ext2fs/ext_attr.c:976:16: warning: comparison of integers of different signs: 'size_t'
      (aka 'unsigned long') and 'int' [-Wsign-compare]
        for (i = 0; i < h->capacity; i++) {
                    ~ ^ ~~~~~~~~~~~
2 warnings generated.
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/extent.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/fallocate.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/fileio.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/finddev.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/flushb.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/freefs.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/gen_bitmap64.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/gen_bitmap.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/get_num_dirs.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/get_pathname.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/getsectsize.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/getsize.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/i_block.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/icount.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/imager.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/ind_block.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/initialize.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/inline.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/inline_data.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/inode.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/io_manager.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/ismounted.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/link.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/llseek.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/lookup.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/mkdir.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/mkjournal.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/mmp.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/namei.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/native.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/newdir.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/openfs.o
../deps/e2fsprogs/lib/ext2fs/openfs.c:310:18: warning: comparison of integers of different signs: 'int' and 'unsigned int'
      [-Wsign-compare]
            (inode_size > fs->blocksize) ||
             ~~~~~~~~~~ ^ ~~~~~~~~~~~~~
1 warning generated.
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/progress.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/punch.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/qcow2.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/rbtree.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/read_bb.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/read_bb_file.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/res_gdt.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/rw_bitmaps.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/sha512.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/swapfs.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/symlink.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/tdb.o
../deps/e2fsprogs/lib/ext2fs/tdb.c:415:13: warning: comparison of integers of different signs: 'int' and 'unsigned int'
      [-Wsign-compare]
            (ltype == tdb->global_lock.ltype || ltype == F_RDLCK)) {
             ~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~
../deps/e2fsprogs/lib/ext2fs/tdb.c:510:13: warning: comparison of integers of different signs: 'int' and 'unsigned int'
      [-Wsign-compare]
            (ltype == tdb->global_lock.ltype || ltype == F_RDLCK)) {
             ~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~
../deps/e2fsprogs/lib/ext2fs/tdb.c:631:55: warning: comparison of integers of different signs: 'unsigned int' and 'int'
      [-Wsign-compare]
        if (tdb->global_lock.count && tdb->global_lock.ltype == ltype) {
                                      ~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~
../deps/e2fsprogs/lib/ext2fs/tdb.c:675:29: warning: comparison of integers of different signs: 'unsigned int' and 'int'
      [-Wsign-compare]
        if (tdb->global_lock.ltype != ltype || tdb->global_lock.count == 0) {
            ~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~
../deps/e2fsprogs/lib/ext2fs/tdb.c:858:17: warning: comparison of integers of different signs: 'off_t' (aka 'long long') and
      'size_t' (aka 'unsigned long') [-Wsign-compare]
        if (st.st_size < (size_t)len) {
            ~~~~~~~~~~ ^ ~~~~~~~~~~~
../deps/e2fsprogs/lib/ext2fs/tdb.c:3011:12: warning: comparison of integers of different signs: 'int' and 'unsigned int'
      [-Wsign-compare]
        for (i=0;i<tdb->header.hash_size;i++) {
                 ~^~~~~~~~~~~~~~~~~~~~~~
6 warnings generated.
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/unlink.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/valid_blk.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/version.o
  CC(target) Release/obj.target/ext2fs/deps/e2fsprogs/lib/ext2fs/write_bb_file.o
  LIBTOOL-STATIC Release/libext2fs.a
  CXX(target) Release/obj.target/bindings/src/node_ext2fs.o
../src/node_ext2fs.cc:11:9: warning: 'O_DIRECTORY' macro redefined [-Wmacro-redefined]
#define O_DIRECTORY 0200000
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/fcntl.h:153:9: note: 
      previous definition is here
#define O_DIRECTORY     0x100000
        ^
../src/node_ext2fs.cc:203:10: warning: implicit conversion of NULL constant to 'ext2_ino_t' (aka 'unsigned int')
      [-Wnull-conversion]
                return NULL;
                ~~~~~~ ^~~~
                       0
../src/node_ext2fs.cc:256:17: warning: comparison between NULL and non-pointer ('ext2_ino_t' (aka 'unsigned int') and NULL)
      [-Wnull-arithmetic]
        if (parent_ino == NULL) {
            ~~~~~~~~~~ ^  ~~~~
../src/node_ext2fs.cc:507:36: warning: implicit conversion of NULL constant to '__u64' (aka 'unsigned long long')
      [-Wnull-conversion]
                                ret = ext2fs_file_llseek(file, NULL, EXT2_SEEK_END, NULL);
                                      ~~~~~~~~~~~~~~~~~~       ^~~~
                                                               0
../src/node_ext2fs.cc:781:19: warning: comparison between NULL and non-pointer ('ext2_ino_t' (aka 'unsigned int') and NULL)
      [-Wnull-arithmetic]
                        if (parent_ino == NULL) {
                            ~~~~~~~~~~ ^  ~~~~
../src/node_ext2fs.cc:864:12: warning: 'Call' is deprecated [-Wdeprecated-declarations]
        callback->Call(2, argv);
                  ^
../../nan/nan.h:1654:3: note: 'Call' has been explicitly marked deprecated here
  NAN_DEPRECATED inline v8::Local<v8::Value>
  ^
../../nan/nan.h:102:40: note: expanded from macro 'NAN_DEPRECATED'
# define NAN_DEPRECATED __attribute__((deprecated))
                                       ^
../src/node_ext2fs.cc:843:7: warning: unused variable 'flags' [-Wunused-variable]
        auto flags = get_flags(info);
             ^
7 warnings generated.
  CXX(target) Release/obj.target/bindings/src/async.o
  CXX(target) Release/obj.target/bindings/src/js_io.o
../src/js_io.cc:65:14: warning: 'Call' is deprecated [-Wdeprecated-declarations]
        request_cb->Call(7, argv);
                    ^
../../nan/nan.h:1654:3: note: 'Call' has been explicitly marked deprecated here
  NAN_DEPRECATED inline v8::Local<v8::Value>
  ^
../../nan/nan.h:102:40: note: expanded from macro 'NAN_DEPRECATED'
# define NAN_DEPRECATED __attribute__((deprecated))
                                       ^
In file included from ../src/js_io.cc:4:
../src/ext2fs.h:533:13: warning: unused function 'increment_version' [-Wunused-function]
static void increment_version(struct ext2_inode *inode) {
            ^
2 warnings generated.
  CXX(target) Release/obj.target/bindings/src/bindings.o
  SOLINK_MODULE(target) Release/bindings.node

> drivelist@6.4.3 install /usr/local/lib/node_modules/balena-cli/node_modules/resin-cli-visuals/node_modules/drivelist
> prebuild-install || node-gyp rebuild

prebuild-install WARN install EISDIR: illegal operation on a directory, open '/usr/local/lib/node_modules/balena-cli/node_modules/resin-cli-visuals/node_modules/drivelist/build/Release'
  CXX(target) Release/obj.target/drivelist/src/drivelist.o
  CXX(target) Release/obj.target/drivelist/src/device-descriptor.o
  CXX(target) Release/obj.target/drivelist/src/darwin/list.o
  SOLINK_MODULE(target) Release/drivelist.node

> spawn-sync@1.0.15 postinstall /usr/local/lib/node_modules/balena-cli/node_modules/spawn-sync
> node postinstall

npm WARN balena-request@10.0.1 requires a peer of balena-auth@^2.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN resin-register-device@5.0.0 requires a peer of resin-request@^9.0.2 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: removedrive@1.1.2 (node_modules/balena-cli/node_modules/removedrive):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for removedrive@1.1.2: wanted {"os":"win32","arch":"any"} (current: {"os":"darwin","arch":"x64"})

+ balena-cli@9.1.2
added 732 packages from 536 contributors in 63.558s