How to build the linux Desktop wallet for the Steem blockchain Vessel from source code

avatar
(Edited)

Hello Utopians & Steemians, this tutorial is for anyone who wants to build the linux desktop wallet for the Steem blockchain from the source code on Ubuntu; and this is what it will look like as a result.

vessel-running-0.2.3-helo.png

It is called Vessel (for now), my thanks go to @jesta for creating it. See his latest article about version 0.2.3 if you just want to install the already made binaries. This tutorial is for those who want it build on their machine from scratch.

Let's update and install some dependencies:

sudo apt-get update

Install node js if you do not have it.

sudo apt-get install nodejs
sudo apt-get install nodejs-legacy

Install npm if you do not have it:

sudo apt-get install npm

Install snapcraft, even if you do not plan to install the snap

sudo apt-get install --no-install-recommends -y snapcraft

For your information, if you do not install this, you will get these errors:
missing-snapcraft-deps-helo.png

Update your nodejs:

sudo npm install -g n
sudo n latest

Install yarn:

sudo npm install -g yarn

Get the source code of the Vessel wallet:

git clone https://github.com/aaroncox/vessel.git
cd vessel

Let the configurator install the node js dependencies:

yarn install

yarn-install-helo.png

Get the wallet built:

npm run package-linux

vessel-built-helo.png

Install the newly created wallet:

cd release
sudo dpkg -i vessel_0.2.3_amd64.deb

You will find the wallet installed and available in your apps screen:
vessel-app-helo-desktop.png

After running it, you will get the wallet as shown in the top image of this post!

Have a great day and let's keep making Steem better by our actions everyday.



Posted on Utopian.io - Rewarding Open Source Contributors



0
0
0.000
7 comments
avatar

I sent you my ten cent vote. @originalworks. Under Mint I found the package snapcraft is called snapd. I think vessel should include n and yarn as dependencies if they are necessary for building.

The only dependency lists for NPM are "dependencies" and "devdependencies". The "dependencies" are supposed to be for "using" and the "devdependencies" for "testing" and development.

I posted this about how to run without installing. It is much better to be able to have an install solution like described in this post. I am still waiting for these command lines I issued from this tutorial to complete. I am looking forward to trying it out!

0
0
0.000
avatar

Hello @leprechaun, I will try to do a fresh install with sudo apt-get install snapd instead of snapcraft and see if it makes the instruction for building the package more generic across distributions. 👍

I've chosen n to allow users to update their nodejs since the one that comes with ubuntu is to old for this build. Others may assume that the user will have the latests nodejs and not think to include a package updater. From looking at the code, it did look to me that yarn was involved and it is part of the 'devEngines' section of the package.json file.

I'm glad to see you've found another way to get it running, that's great.

0
0
0.000
avatar
(Edited)

I had installed npm from source. As I recall my distribution's version of npm was old or just absent or perhaps it didn't have the package name I expected (like with snapd). Anyway, I issued the following command:
sudo apt-get install --no-install-recommends -y snapd

I added node_modules/.bin to the end of the PATH variable.
After waiting a long time while getting ready for a party, I found it finally finished but the other task that I was waiting for had not yet finished. So, I issued the following command line:
npm install n && n latest && npm i yarn && yarn install && npm run package-linux && cd release && sudo dpg -i vessel*.deb

I left out the '-g' so I can later remove everything needed by vessel and test installs with fewer packages. If I can get a 32-bit installer built, I want to proceed to see if I can eliminate packages from the dependencies that are only for the development of vessel but not required for making its package or running it like I described earlier.

I mispelt dpkg. Of course things didn't work out. I see an error at the end but I it is not "command not found". The error is:

npm WARN [email protected] requires a peer of eslint@>=4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of flow-bin@>=0.57.3 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/7zip-bin-win):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"win32","arch":"any"} (current: {"os":"linux","arch":"ia32"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/7zip-bin-mac):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"ia32"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"ia32"})

+ [email protected]
added 1 package in 137.442s

  Error: invalid version 

Using which n, I see n was installed and running which yarn, I see yarn was not installed.

I am going to try it without running n latest. I know npm is already the newest stable version on this old computer I am using. I should probably take this computer to a kindergarten because she is old enough to start that.

Now, if the yarn command is in the 'devEngines', I guess that means it is supposed to install yarn automatically. It doesn't. I did some searching and I found users of npm are disappointed that things found in "devdependencies" were not getting installed before running the install scripts. There seems to be a big disconnect between the developers of npmitself and the developers that use npm (us).

I am going to try this now:
npm --save-prod yarn && yarn install && npm run package-linux

Edit
The result of the above command was:

No native production dependencies
Packaging for linux ia32 using electron 1.7.8 to release/linux-ia32-unpacked

... and 1 more
Building Snap for arch ia32
Error: spawn snapcraft ENOENT
    at _errnoException (util.js:1024:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
    at onErrorNT (internal/child_process.js:372:16)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
From previous event:
    at spawn (/home/alumno/development/vessel/node_modules/builder-util/src/util.ts:183:3)
    at /home/alumno/development/vessel/node_modules/electron-builder-lib/src/targets/snap.ts:117:13
    at Generator.next (<anonymous>)
    at /home/alumno/development/vessel/node_modules/graceful-fs/graceful-fs.js:99:16
    at /home/alumno/development/vessel/node_modules/graceful-fs/graceful-fs.js:43:10
    at FSReqWrap.oncomplete (fs.js:135:15)

... etc

Now, I had only moved nearly all packages from "devdependencies" to "dependencies". This was necessary because many of the modules needed for the "install" process were in devdependencies and those listed in devdependencies were not being installed before running the scripts named in "install".

It seems to me that a user shouldn't need to install npm packages manually. The package contains a file that lists all of dependencies. The dependencies should be installed automatically. Maybe that is part of that "disconnect" I referred to earlier.

0
0
0.000
avatar

thank you for sharing a good article.
we can learn a lot of thing's from here.
keep it up.
@helo

0
0
0.000
avatar

Hey @helo I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x

0
0
0.000