segler-alex / radiobrowser-api-rust

radio-browser API implementation in rust
GNU Affero General Public License v3.0
234 stars 105 forks source link

Native Ubuntu Installation errors #2

Closed Zenith-Nadir closed 5 years ago

Zenith-Nadir commented 5 years ago

Hello, I wanted to install this package as advised in other posts, so I installed rust. The link to git repository is wrong/incomplete, for native installation, but I think I got it. During installation I am getting errors: first regarding openssl, which I do have, and later: warning: build failed, waiting for other jobs to finish... error: build failed [sudo] password for user: cp: cannot stat 'target/release/radiobrowser-api-rust': No such file or directory chmod: cannot access '/usr/local/bin/radiobrowser': No such file or directory groupadd: group 'radiobrowser' already exists useradd: user 'radiobrowser' already exists Enable service with:

segler-alex commented 5 years ago

i changed the install.sh script, so that it will stop after the first error

please do:

git pull
cargo build --release

and send me the full output

Zenith-Nadir commented 5 years ago

Hello Alex, Thanks for very quick answers.

  1. The link in readme file for native build points to:

    clone repository

    git clone https://github.com/segler-alex/radiobrowser-api ~/radio which does not look right (or maybe I am wrong).

  2. My system: openssl version OpenSSL 1.1.1 11 Sep 2018

  3. after git pull and cargo build --release this is copy of terminal output: user@Ubuntu-1804:~$ git pull https://github.com/segler-alex/radiobrowser-api-rust.git ~/radio fatal: not a git repository (or any of the parent directories): .git user@Ubuntu-1804:~$ cd ~/radio user@Ubuntu-1804:~/radio$ git pull remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (1/1), done. remote: Total 3 (delta 2), reused 3 (delta 2), pack-reused 0 Unpacking objects: 100% (3/3), done. From https://github.com/segler-alex/radiobrowser-api-rust 9eb11fa..21bd200 master -> origin/master Updating 9eb11fa..21bd200 Fast-forward install.sh | 3 +++ 1 file changed, 3 insertions(+) user@Ubuntu-1804:~/radio$ cargo build --release Compiling openssl-sys v0.9.49 Compiling idna v0.2.0 error: failed to run custom build command for openssl-sys v0.9.49

Caused by: process didn't exit successfully: /home/user/radio/target/release/build/openssl-sys-6ec4812869245b7f/build-script-main (exit code: 101) --- stdout cargo:rustc-cfg=const_fn cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset cargo:rerun-if-env-changed=OPENSSL_LIB_DIR OPENSSL_LIB_DIR unset cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR OPENSSL_INCLUDE_DIR unset cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset cargo:rerun-if-env-changed=OPENSSL_DIR OPENSSL_DIR unset run pkg_config fail: "\"pkg-config\" \"--libs\" \"--cflags\" \"openssl\" did not exit successfully: exit code: 1\n--- stderr\nPackage openssl was not found in the pkg-config search path.\nPerhaps you should add the directory containing `openssl.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'openssl\' found\n"

--- stderr thread 'main' panicked at '

Could not find directory of OpenSSL installation, and this -sys crate cannot proceed without this knowledge. If OpenSSL is installed and this crate had trouble finding it, you can set the OPENSSL_DIR environment variable for the compilation process.

Make sure you also have the development packages of openssl installed. For example, libssl-dev on Ubuntu or openssl-devel on Fedora.

If you're in a situation where you think the directory should be found automatically, please open a bug at https://github.com/sfackler/rust-openssl and include information about your system as well as this message.

$HOST = x86_64-unknown-linux-gnu $TARGET = x86_64-unknown-linux-gnu openssl-sys = 0.9.49

', /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.49/build/find_normal.rs:150:5 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace.

warning: build failed, waiting for other jobs to finish... error: build failed user@Ubuntu-1804:~/radio$ Z-N

segler-alex commented 5 years ago

your error says that the following command does not work pkg-config --libs --cflags openssl

have you tried the following? apt install -y libssl-dev libssl1.1

Zenith-Nadir commented 5 years ago

Hello Alex, with apt install -y libssl-dev libssl1.1, it worked. libssl1.1 was already there and the newest version. install -y libssl-dev was installed "de novo". I deleted ~/radio dir and rerun git clone and install.sh. It took a really longer while, but it completed without any errors. But now, how do I handle this rust api, while I already do have radiobrowser in my nginx www server, and that is what I use predominantly? Z-N

segler-alex commented 5 years ago

i would add a reverse proxy setting to nginx that sends all requests to your local radiobrowser server

but what exactly do you want to accomplish?

Zenith-Nadir commented 5 years ago

Currently I am running locally radiobrowser back-end Mariadb server (import data from your latest.gz backup files). And GUI part as it was originally advised in radiobrowser-api and radiobrowser front-end projects. And I do not know what is rust, besides that it is some kind of programming platform/framework, and what to do with radiobrowser-api-rust. I just do not know correlation between std api and rust based api, I only guess they are similar, but how they differ? Otherwise, my local radiobrowser server and gui are running fine. Similarly, I do not know how to execute other based radiobrowser-related rust projects, and I cannot find any installation or usage documentation, what to do with it, where to place it in relation to db server and gui front end. Sorry, for my lack of knowledge. Z-N

segler-alex commented 5 years ago

the packages are described at http://www.radio-browser.info/gui/#!/faq

segler-alex commented 5 years ago

i think you are mixing up the style servers and old style servers

segler-alex commented 5 years ago

current www.radio-browser.info runs the following: https://github.com/segler-alex/radiobrowser-api - backend https://github.com/segler-alex/radiobrowser - web frontend https://github.com/segler-alex/stream-check-rust - stream checker https://github.com/segler-alex/radiobrowser-cleanup-tasks-rust - database cleaner

segler-alex commented 5 years ago

https://github.com/segler-alex/radiobrowser-api-rust - is the new alternative for radiobrowser-api AND stream-check-rust AND radiobrowser-cleanup-tasks-rust

segler-alex commented 5 years ago

rust is a programming language. i decided to move away from PHP, as rust promised to be faster and handle more concurrent connections

segler-alex commented 5 years ago

are things clearer now for you?

Zenith-Nadir commented 5 years ago

Hi Alex, Thanks for your answers and patience. I would like to clarify few things. I do understand some cleaning, stream checking tasks would be handled by rust. But you have mentioned, it is moving away from PHP. I do currently manage db using phpMyAdmin or adminer, so how will I manage db and data with rust? Or db and data will be still possible to manipulate using PHP? Other question: To run radiobrowser-rust, I could just git clone radiobrowser-rust into and replace current radiobrowser /var/www/radio and still get it operational with web server? If this is the case, that will be OK. I am asking, since this seems relatively newer technology, and I do know how to get around dbs, web servers, etc, but those rust, bootstrap, and some others, are a bit new & "kinky" for me yet. And I am positive lots of others would like to run radiobrowser locally, but have no clue what rust involves it it. And I am not sure if I want to run it in docker environment. I know virtualization, but docker would bring another variable to my system. Well, anyway, if I can just replace old-style radiobrowser with rust version, without any major "re-do"s. I won't have any problem. Unfortunately documentation is not that great on all these topics, and to get used to them requires plenty of googling. Thank You very much for your attention. Sincerely, Z-N

segler-alex commented 5 years ago

you mentioned managing data in database yourself, for example with phpmyadmin. my question is: why would you do that? what do you want to accomplish?

segler-alex commented 5 years ago

of course you could change the data in the database yourself. it still uses the same mysql or mariadb which you can change with phpmyadmin.

segler-alex commented 5 years ago

i also wanted to make it easy for people to run radiobrowser server themselves. that is why i also added a docker way, which is honestly the simplest you can get. sidequestion: you sound like you are running radiobrowser server in a private network?

segler-alex commented 5 years ago

maybe i can be of greater help, if you exactly describe your usecase?

segler-alex commented 5 years ago

maybe i should also distribute an debian package in the future, so that you don't have to fiddle with compiling rust yourself, the problem is that i am not that good in creating them... i thought that is what docker is for, that you don't have to do things yourself

Zenith-Nadir commented 5 years ago

Hello Alex, Many thanks for your answers and your attention. Let me present here briefly what is the story and premises for radiobrowser use. This might be an epistle, and somehow, I feel it does not belong here, but into a Private Message, which github does not provide, so, since there is no other option, let it be here, but feel free to remove it.

I encountered your project while looking for internet radio/TV stations dbs. At the same time vTuner demanded "Ransom" for AVR NetRadio services, and Yamaha did not stand up to the task and left off legacy (out-of-support) units w/o support, thus I found/encountered ycast. 1+2 this is how I got interested in both projects. Unfortunately (don't take this wrong, please; it is your project, your db, and you can do with it whatever you want) your db was a bit too messy for my taste and ycast use, due to "idiots"/analphabets/illiterates vandalizing it, and no internal restrictions sets, on db entries. I really did not like to browse through a list of countries or languages that exist in outer space or peoples minds. So, I decided, to get the db locally, clean it up and use with my home ycast, entirely for my home environment and myself. Before I had nothing to do with sql, python, php. I just installed LEMP (since google claimed is faster than apache), got MariaDB working. So, I got radiobrowser db so-so cleaned, countries, languages-not so well, tags, I left alone for time-being. In the meantime, I encountered few quirks with the db: when I cleaned names, stream urls multiple duplicates, I still was getting not existing already entries listing. Upon further investigation I got to Cache tables, which do not refresh on-the-fly ("D'oh!"-it is cache) as original Stations table, and at recent time, in one of your responses, you suggested to use rust api, so, this how I got here. I tried docker and contenerization, but if you try multiple docker projects it becomes a mess. For individual single project it is great, but multiple projects, it does not seem that great. The more that lots of dockers containers are for AWS, or other clouds, and I do want to avoid those costs. ---I guess a rust package for debian/ubuntu/other nixes without the need of compiling all modules (these are modules?), would be great. ---I am willing to test the rust project, gladly, NP (=no problem), but at this moment, if I move rust radio folder to another one, do I have to re-run install.sh every time moving it??? Again, my apologies in advance, but my intent is to present my radiobrowser use case, and by any means not to be offensive to the readers, or polluting the support forum.

I am also attaching one file with scripts which I am using for daily cleanup the radio db (maybe any of the ideas there will be useful for you). Radiobrowser_MySQL_Script.zip