infinit / infinit

The Infinit policy-based software-defined storage platform.

Home Page:http://infinit.sh

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Infinit Drive and CLI - 'infinit-user is deprecated'

paulocoghi opened this issue · comments

(First of all, congratulations to the project)

Description:
After correctly installing infinit package in Ubuntu 16.04 64bit, I installed infinit-desktop and tried to create an account.

The following message is returned:
infinit-desktop message

It seems that infinit-desktop is using an old command syntax.

Steps to reproduce:

  1. Choose a computer (or VM) with Ubuntu 16.04 64bit

  2. Install infinit package according to official instructions ( https://infinit.sh/download )

  3. Install infinit-desktop package according to official instructions ( https://infinit.sh/drive )

  4. Run the binary /opt/infinit-desktop/bin/infinit and try to create an account

Details:
Ubuntu 16.04 64bit
Infinit 0.7.3
Infinit-Desktop 0.3.0


Edit
The problem persist even after correctly adding /opt/infinit/bin to PATH

CLI note:

Using the steps documented in https://infinit.sh/get-started through CLI, it generates the same error:

$ infinit-user --signup --name paulocoghi --fullname "Paulo Coghi"
[infinit] [main] infinit-user is deprecated, please run: infinit user signup --name paulocoghi --fullname Paulo Coghi
Generating RSA keypair.
infinit-user: symbol lookup error: infinit-user: undefined symbol: _ZN7infinit7Infinit16beyond_push_dataERKSsS2_S2_RKN4elle15ConstWeakBufferES2_RKNS_4UserEbb

I understand and I will use the new syntax. I'm just informing so we can keep the docs updated (and I'll certainly contribute to documentation when its repository becomes available).

Hi.

Thanks for reporting.

We recently (0.7.3) changed the way infinit's binaries work and infinit-desktop was left behind (the new binaries were supposed to be backward-compatible).

I'll fix it and push a new infinit-desktop in the days to come and keep you updated.

My pleasure!

Just a note, other commands from documentation, like:
infinit-storage --create --filesystem --name local --capacity ...

are also deprecated.

This is also affecting the daemon and docker:

[infinit] [main] infinit-volume is deprecated, please run: infinit volume create web-proxy_caddy-config --network diddledan/afterlife --create-root --register-service --as diddledan
/opt/infinit/bin/infinit-volume: symbol lookup error: /opt/infinit/bin/infinit-volume: undefined symbol: _ZN7infinit6VolumeC1ENS_10descriptor14BaseDescriptor4NameESsRKNS_12MountOptionsEN5boost8optionalISsEES9_
[   cli.daemon    ] [request 0x2513e90]   error creating volume: volume creation failed

Thanks to all for the reports about the warnings, we will address them. But rest assured that everything works as expected, albeit in a verbose fashion :)

However, I am worried by parts of the original message:

infinit-user: symbol lookup error: infinit-user: undefined symbol: _ZN7infinit7Infinit16beyond_push_dataERKSsS2_S2_RKN4elle15ConstWeakBufferES2_RKNS_4UserEbb

This should not happen, and is certainly breaking things. Paulo, can you comment on this?

there was a similar undefined symbol in my log two comments ago. I'm pulling it out here to highlight in light of @akimd's concerns:

infinit-volume: undefined symbol: _ZN7infinit6VolumeC1ENS_10descriptor14BaseDescriptor4NameESsRKNS_12MountOptionsEN5boost8optionalISsEES9_

@akimd some things doesn't work as expected, and I opened another issue about this here #11

It seems to me that new versions of infinit are not backward-compatible with older ones. And updating docs and get started guide will solve this issue.

Hi @paulocoghi. Well, really, as far as we know, they are backward compatible (except for some corner cases). Maybe the message

[infinit] [main] infinit-volume is deprecated, please run: infinit volume create web-proxy_caddy-config --network diddledan/afterlife --create-root --register-service --as diddledan

should read

[infinit] [main] warning: infinit-volume is deprecated, please run: infinit volume create web-proxy_caddy-config --network diddledan/afterlife --create-root --register-service --as diddledan

cause, really, all the message is saying is "you type this, and I ran that instead".

I am also seeing the undefined symbol errors with the deprecated binaries.

Maybe just make them small shell script stubs instead of delivering broken binaries?

@diddledan So the missing symbol is:

infinit::Volume::Volume(infinit::descriptor::BaseDescriptor::Name,
                        std::string,
                        infinit::MountOptions const&,
                        boost::optional<std::string>,
                        boost::optional<std::string>)

which is not surprising, as we are not using it, it has 6 arguments in the 0.7.3 release.

Could you please send us ls -l /opt/infinit/bin/? It looks like something was broken in the installation.

Could also please try to run the updated command yourself to check that it does work?

$ infinit volume create web-proxy_caddy-config --network diddledan/afterlife --create-root --register-service --as diddledan

Hi @djmaze. Same question: could you show us you infinit binaries? It seems that something horribly wrong happened during the packaging. Hopefully, infinit, the main binary, should work properly, it's "only" the backward compatible binaries that seem to be broken.

(and @djmaze, FWIW, the backward compatible binaries should just be symlinks to infinit, they are not supposed to be genuine binaries, so something similar to short shell scripts. Something in the packaging procedure wrecked those symlinks).

Which version did you download? Ubuntu, tarball, etc.?

@akimd

$ ls -l /opt/infinit/bin/
total 3004380
-rwxr-xr-x 1 root root    547584 Feb 14 15:31 fnetusermount-client
-rwxr-xr-x 1 root root    899456 Feb  6 17:53 fnetusermount-server
-r-xr-xr-x 1 root root 132999904 Feb 14 15:27 infinit
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-acl
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-block
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-credentials
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-daemon
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-device
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-doctor
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-drive
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-journal
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-ldap
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-network
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-passport
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-storage
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-user
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-volume

This is on Ubuntu 16.04. I followed the instructions from the website:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3D2C3B0B
add-apt-repository "deb https://debian.infinit.sh/ trusty main"
apt-get update
apt-get install infinit

Yeah, it's broken. One simple fix should be:

cd /opt/infinit/bin
for i in infinit-*; do sudo ln -sf infinit $i; done

We're sorry about that.

@akimd Thanks, for the help. No problem, after all this is still dubbed alpha ;)

$ ls -l /opt/infinit/bin/
total 3004412
-rwxr-xr-x 1 root root    547584 Feb 14 15:31 fnetusermount-client
-rwxr-xr-x 1 root root    899456 Feb  6 17:53 fnetusermount-server
-r-xr-xr-x 1 root root 132999904 Feb 14 15:27 infinit
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-acl
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-block
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-credentials
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-daemon
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-device
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-doctor
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-drive
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-journal
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-ldap
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-network
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-passport
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-storage
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-user
-rwxr-xr-x 1 root root 210144696 Feb 14 13:46 infinit-volume

and the creation command seems to work when run myself (not via the docker daemon)

$ infinit volume create web-proxy_caddy-config --network diddledan/afterlife --create-root --register-service --as diddledan
[infinit.Network] [main] client version: 0.7.3
[infinit.model.Model] [main] infinit::model::Model(0x2052490): compatibility version 0.7.3
[infinit.model.doughnut.Local] [main] dht::Local(0xb921918800): listen on tcp://[::]:35137
[infinit.model.doughnut.Local] [main] dht::Local(0xb921918800): listen on utp://[::]:35137
[infinit.model.doughnut.Doughnut] [main] unable to monitor, socket already present at: "/tmp/infinit/root/monitor/d62c94.sock"
[          cli.volume           ] [main] register volume in the network
[          cli.volume           ] [main] create root directory
Locally saved volume descriptor "diddledan/web-proxy_caddy-config".

@diddledan Yeah, you really should run

cd /opt/infinit/bin
for i in infinit-*; do sudo ln -sf infinit $i; done

too, and forgive us :)

yup, I've done that. docker seems much happier now. my test deployment using volumes hasn't failed instantly and is still deploying, so things are looking like I'm good now!

Something to note for the documentation of the docker daemon:

  • Need to show that the infinit network needs to be set-up per the network docs before starting on docker
    • If all the docker nodes are also storage nodes then infinit network needs to be running on all docker systems
    • I think the network needs to be running under the user specified by --docker-user to infinit daemon but it is unclear whether that is true
  • the docker daemon is noted that it needs to be run as root, and a mention of --docker-user is noted in the current docs but it isn't clear that the user assigned must have infinit configured. I only noticed the discrepency when the docker daemon tried accessing files from .local/share/infinit which weren't there because I used a different user to configure the infinit client.