archethic-foundation / archethic-node

Official Archethic Blockchain node, written in Elixir
GNU Affero General Public License v3.0
71 stars 22 forks source link

Support multi linux distribution in the `.sh` scripts #809

Open samuelmanzanera opened 1 year ago

samuelmanzanera commented 1 year ago

Currently, the scripts are Debian's like oriented using a lot apt package manager. We will need to support other distribution like ArchLinux which is well-used in the OSS ecosystem.

tenmoves commented 1 year ago

Something like this snippet should resolve the issue.

packagesNeeded='curl'
if [ -x "$(command -v apk)" ];       then sudo apk add --no-cache $packagesNeeded
elif [ -x "$(command -v apt-get)" ]; then sudo apt-get install $packagesNeeded
elif [ -x "$(command -v dnf)" ];     then sudo dnf install $packagesNeeded
elif [ -x "$(command -v zypper)" ];  then sudo zypper install $packagesNeeded
else echo "FAILED TO INSTALL PACKAGE: Package manager not found. You must manually install: $packagesNeeded">&2; fi
samuelmanzanera commented 1 year ago

Yes, indeed, something like this. We just need to check if the package name are the same ;)

tenmoves commented 1 year ago

yes unfortunately the packages names need to be maintained by hand

seb-uniris commented 1 year ago

[ArchLinux port] issue during archethic.service startup :

Start Call: Archethic.P2P.Listener.start_link([port: 30002, nb_acceptors: 100, transport: :tcp]) 2023-01-14 10:19:19.832 [error] Child Archethic.P2P.BootstrappingSeeds of Supervisor Archethic.P2PListenerSupervisor failed to start (exit) an exception was raised: (FunctionClauseError) no function clause matching in Archethic.DB.EmbeddedImpl.BootstrapInfo.set/2 (archethic 1.0.6) lib/archethic/db/embedded_impl/bootstrap_info.ex:15: Archethic.DB.EmbeddedImpl.BootstrapInfo.set("bootstrapping_seeds", nil) (archethic 1.0.6) lib/archethic/p2p/bootstrapping_seeds.ex:59: Archethic.P2P.BootstrappingSeeds.init/1 (stdlib 4.1.1) gen_server.erl:851: :gen_server.init_it/2 (stdlib 4.1.1) gen_server.erl:814: :gen_server.init_it/6 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 Start Call: Archethic.P2P.BootstrappingSeeds.start_link([backup_file: "p2p/seeds", genesis_seeds: nil]) 2023-01-14 10:19:19.832 [error] Child Archethic.P2P.ListenerSupervisor of Supervisor Archethic.Supervisor failed to start (exit) shutdown: failed to start child: Archethic.P2P.BootstrappingSeeds (EXIT) an exception was raised: (FunctionClauseError) no function clause matching in Archethic.DB.EmbeddedImpl.BootstrapInfo.set/2 (archethic 1.0.6) lib/archethic/db/embedded_impl/bootstrap_info.ex:15: Archethic.DB.EmbeddedImpl.BootstrapInfo.set("bootstrapping_seeds", nil) (archethic 1.0.6) lib/archethic/p2p/bootstrapping_seeds.ex:59: Archethic.P2P.BootstrappingSeeds.init/1 (stdlib 4.1.1) gen_server.erl:851: :gen_server.init_it/2 (stdlib 4.1.1) gen_server.erl:814: :gen_server.init_it/6 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 Start Call: Archethic.P2P.ListenerSupervisor.start_link([port: 30002]) 2023-01-14 10:19:19.835 [error] Process #PID<0.2916.0> terminating (exit) exited in: Archethic.Application.start(:normal, []) (EXIT) shutdown: failed to start child: Archethic.P2P.ListenerSupervisor (EXIT) shutdown: failed to start child: Archethic.P2P.BootstrappingSeeds (EXIT) an exception was raised: (FunctionClauseError) no function clause matching in Archethic.DB.EmbeddedImpl.BootstrapInfo.set/2 (archethic 1.0.6) lib/archethic/db/embedded_impl/bootstrap_info.ex:15: Archethic.DB.EmbeddedImpl.BootstrapInfo.set("bootstrapping_seeds", nil) (archethic 1.0.6) lib/archethic/p2p/bootstrapping_seeds.ex:59: Archethic.P2P.BootstrappingSeeds.init/1 (stdlib 4.1.1) gen_server.erl:851: :gen_server.init_it/2 (stdlib 4.1.1) gen_server.erl:814: :gen_server.init_it/6 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 (kernel 8.5.1) application_master.erl:142: :application_master.init/4 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 Initial Call: :application_master.init/4 Ancestors: [#PID<0.2915.0>] 2023-01-14 10:19:19.836 [notice] Application archethic exited: Archethic.Application.start(:normal, []) returned an error: shutdown: failed to start child: Archethic.P2P.ListenerSupervisor (EXIT) shutdown: failed to start child: Archethic.P2P.BootstrappingSeeds (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Archethic.DB.EmbeddedImpl.BootstrapInfo.set/2 (archethic 1.0.6) lib/archethic/db/embedded_impl/bootstrap_info.ex:15: Archethic.DB.EmbeddedImpl.BootstrapInfo.set("bootstrapping_seeds", nil) (archethic 1.0.6) lib/archethic/p2p/bootstrapping_seeds.ex:59: Archethic.P2P.BootstrappingSeeds.init/1 (stdlib 4.1.1) gen_server.erl:851: :gen_server.init_it/2 (stdlib 4.1.1) gen_server.erl:814: :gen_server.init_it/6 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 [os_mon] memory supervisor port (memsup): Erlang has closed [os_mon] cpu supervisor port (cpu_sup): Erlang has closed {"Kernel pid terminated",application_controller,"{application_start_failure,archethic,{{shutdown,{failed_to_start_child,'Elixir.Archethic.P2P.ListenerSupervisor',{shutdown,{failed_to_start_child,'Elixir.Archethic.P2P.BootstrappingSeeds',{function_clause,[{'Elixir.Archethic.DB.EmbeddedImpl.BootstrapInfo',set,[<<\"bootstrapping_seeds\">>,nil],[{file,\"lib/archethic/db/embedded_impl/bootstrap_info.ex\"},{line,15}]},{'Elixir.Archethic.P2P.BootstrappingSeeds',init,1,[{file,\"lib/archethic/p2p/bootstrapping_seeds.ex\"},{line,59}]},{gen_server,init_it,2,[{file,\"gen_server.erl\"},{line,851}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,814}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,240}]}]}}}}},{'Elixir.Archethic.Application',start,[normal,[]]}}}"} Kernel pid terminated (application_controller) ({application_start_failure,archethic,{{shutdown,{failed_to_start_child,'Elixir.Archethic.P2P.ListenerSupervisor',{shutdown,{failed_to_start_child,'Elixir.Archethic.P2P.BootstrappingSeeds',{function_clause,[{'Elixir.Archethic.DB.EmbeddedImpl.BootstrapInfo',set,[<<"bootstrapping_seeds">>,nil],[{file,"lib/archethic/db/embedded_impl/bootstrap_info.ex"},{line,15}]},{'Elixir.Archethic.P2P.BootstrappingSeeds',init,1,[{file,"lib/archethic/p2p/bootstrapping_seeds.ex"},{line,59}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,851}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,814}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]}}}}},{'Elixir.Archethic.Application',start,[normal,[]]}}})

Crash dump is being written to: erl_crash.dump...done

apoorv-2204 commented 1 year ago

may be

[ArchLinux port] issue during archethic.service startup :

Start Call: Archethic.P2P.Listener.start_link([port: 30002, nb_acceptors: 100, transport: :tcp]) 2023-01-14 10:19:19.832 [error] Child Archethic.P2P.BootstrappingSeeds of Supervisor Archethic.P2PListenerSupervisor failed to start (exit) an exception was raised: (FunctionClauseError) no function clause matching in Archethic.DB.EmbeddedImpl.BootstrapInfo.set/2 (archethic 1.0.6) lib/archethic/db/embedded_impl/bootstrap_info.ex:15: Archethic.DB.EmbeddedImpl.BootstrapInfo.set("bootstrapping_seeds", nil) (archethic 1.0.6) lib/archethic/p2p/bootstrapping_seeds.ex:59: Archethic.P2P.BootstrappingSeeds.init/1 (stdlib 4.1.1) gen_server.erl:851: :gen_server.init_it/2 (stdlib 4.1.1) gen_server.erl:814: :gen_server.init_it/6 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 Start Call: Archethic.P2P.BootstrappingSeeds.start_link([backup_file: "p2p/seeds", genesis_seeds: nil]) 2023-01-14 10:19:19.832 [error] Child Archethic.P2P.ListenerSupervisor of Supervisor Archethic.Supervisor failed to start (exit) shutdown: failed to start child: Archethic.P2P.BootstrappingSeeds (EXIT) an exception was raised: (FunctionClauseError) no function clause matching in Archethic.DB.EmbeddedImpl.BootstrapInfo.set/2 (archethic 1.0.6) lib/archethic/db/embedded_impl/bootstrap_info.ex:15: Archethic.DB.EmbeddedImpl.BootstrapInfo.set("bootstrapping_seeds", nil) (archethic 1.0.6) lib/archethic/p2p/bootstrapping_seeds.ex:59: Archethic.P2P.BootstrappingSeeds.init/1 (stdlib 4.1.1) gen_server.erl:851: :gen_server.init_it/2 (stdlib 4.1.1) gen_server.erl:814: :gen_server.init_it/6 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 Start Call: Archethic.P2P.ListenerSupervisor.start_link([port: 30002]) 2023-01-14 10:19:19.835 [error] Process #PID<0.2916.0> terminating (exit) exited in: Archethic.Application.start(:normal, []) (EXIT) shutdown: failed to start child: Archethic.P2P.ListenerSupervisor (EXIT) shutdown: failed to start child: Archethic.P2P.BootstrappingSeeds (EXIT) an exception was raised: (FunctionClauseError) no function clause matching in Archethic.DB.EmbeddedImpl.BootstrapInfo.set/2 (archethic 1.0.6) lib/archethic/db/embedded_impl/bootstrap_info.ex:15: Archethic.DB.EmbeddedImpl.BootstrapInfo.set("bootstrapping_seeds", nil) (archethic 1.0.6) lib/archethic/p2p/bootstrapping_seeds.ex:59: Archethic.P2P.BootstrappingSeeds.init/1 (stdlib 4.1.1) gen_server.erl:851: :gen_server.init_it/2 (stdlib 4.1.1) gen_server.erl:814: :gen_server.init_it/6 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 (kernel 8.5.1) application_master.erl:142: :application_master.init/4 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 Initial Call: :application_master.init/4 Ancestors: [#PID<0.2915.0>] 2023-01-14 10:19:19.836 [notice] Application archethic exited: Archethic.Application.start(:normal, []) returned an error: shutdown: failed to start child: Archethic.P2P.ListenerSupervisor (EXIT) shutdown: failed to start child: Archethic.P2P.BootstrappingSeeds (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Archethic.DB.EmbeddedImpl.BootstrapInfo.set/2 (archethic 1.0.6) lib/archethic/db/embedded_impl/bootstrap_info.ex:15: Archethic.DB.EmbeddedImpl.BootstrapInfo.set("bootstrapping_seeds", nil) (archethic 1.0.6) lib/archethic/p2p/bootstrapping_seeds.ex:59: Archethic.P2P.BootstrappingSeeds.init/1 (stdlib 4.1.1) gen_server.erl:851: :gen_server.init_it/2 (stdlib 4.1.1) gen_server.erl:814: :gen_server.init_it/6 (stdlib 4.1.1) proc_lib.erl:240: :proc_lib.init_p_do_apply/3 [os_mon] memory supervisor port (memsup): Erlang has closed [os_mon] cpu supervisor port (cpu_sup): Erlang has closed {"Kernel pid terminated",application_controller,"{application_start_failure,archethic,{{shutdown,{failed_to_start_child,'Elixir.Archethic.P2P.ListenerSupervisor',{shutdown,{failed_to_start_child,'Elixir.Archethic.P2P.BootstrappingSeeds',{function_clause,[{'Elixir.Archethic.DB.EmbeddedImpl.BootstrapInfo',set,[<<"bootstrapping_seeds">>,nil],[{file,"lib/archethic/db/embedded_impl/bootstrap_info.ex"},{line,15}]},{'Elixir.Archethic.P2P.BootstrappingSeeds',init,1,[{file,"lib/archethic/p2p/bootstrapping_seeds.ex"},{line,59}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,851}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,814}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]}}}}},{'Elixir.Archethic.Application',start,[normal,[]]}}}"} Kernel pid terminated (application_controller) ({application_start_failure,archethic,{{shutdown,{failed_to_start_child,'Elixir.Archethic.P2P.ListenerSupervisor',{shutdown,{failed_to_start_child,'Elixir.Archethic.P2P.BootstrappingSeeds',{function_clause,[{'Elixir.Archethic.DB.EmbeddedImpl.BootstrapInfo',set,[<<"bootstrapping_seeds">>,nil],[{file,"lib/archethic/db/embedded_impl/bootstrap_info.ex"},{line,15}]},{'Elixir.Archethic.P2P.BootstrappingSeeds',init,1,[{file,"lib/archethic/p2p/bootstrapping_seeds.ex"},{line,59}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,851}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,814}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]}}}}},{'Elixir.Archethic.Application',start,[normal,[]]}}})

Crash dump is being written to: erl_crash.dump...done

maybe bootstrapping seeds are missing

apoorv-2204 commented 1 year ago

in path for a single node ARCHETHIC_CRYPTO_SEED="" ARCHETHIC_REWARD_ADDRESS= ARCHETHIC_P2P_BOOTSTRAPPING_SEEDS="$127.0.0.1:30002:"`

for connecting to testnet we need bootstrapping seeds

seb-uniris commented 1 year ago

thx Apoorv ! keybase ?

samuelmanzanera commented 1 year ago

To join real networks such as testnet, you need to provide the bootstrapping seeds; otherwise the error returned would be the same as you got, meaning you cannot reach one node to announce your node's chain.

samuelmanzanera commented 1 year ago

Probably this issue will be taken by the snapcraft package.