x789 / xonox

An alternative service for legacy NOXON(tm) devices
GNU Affero General Public License v3.0
6 stars 2 forks source link

Fehlermeldung bei pip #2

Closed ghost closed 2 years ago

ghost commented 2 years ago

Hallo, ich habe Python 3.8.0 auf dem Raspi und bekomme u.a. Meldung bei pip install xonox. Any ideas?

pi@raspberry:~ $ python -V Python 3.8.0 pi@raspberry:~ $ pip install xonox Collecting xonox Could not find a version that satisfies the requirement xonox (from versions: ) No matching distribution found for xonox

lmigula commented 2 years ago

Klappt es besser, wenn du pip3 install xonox zur Installation nutzt?

ghost commented 2 years ago

Nein, gleiche Meldung

ghost commented 2 years ago

Das geht: sudo pip3.8 install xonox oder sudo pip3.8 install xonox -v für verbose mode

python -m xonox liefert dann Folgendes:

x789 commented 2 years ago

Ich vermute, dass die permission denied-Meldung durch den Versuch den Port 80 zu öffnen entsteht. Unter Linux/Unix dürfen in der Regel normale Benutzer nur Ports über 1024 öffnen. Da die iRadios jedoch Port 80 erwarten, muss xonox auf diesem laufen. @HorstRado: Versuche mal, ob xonox läuft, wenn du das Script als superuser ausführst, also:

sudo python -m xonox

⚠️ Es kann passieren, dass dadurch zwar der Port geöffnet wird, xonox aber nicht die Konfiguration im Home-Verzeichnis speichern kann. Deshalb empfehle ich dir, den Speicherort für die Konfiguration manuell anzugeben, wenn du sudo nutzt. Um die xonox.config zum Beispiel im Verzeichnis home/pizu speichern, nutze:

sudo python -m xonox --config-dir /home/pi

Normalerweise würde ich davon abraten, einen Service als superuser auszuführen. So kannst du aber schnell feststellen, ob es an den fehlenden Berechtigungen für Port 80 lag.

ghost commented 2 years ago

Ich bin jetzt noch mal über 'Los' gegangen :-)

P.S.

x789 commented 2 years ago

@HorstRado: Es freut mich, dass du noch nicht aufgegeben hast. 👍

Du hast xonox als Benutzer horst installiert. Deshalb wurde das Modul durch pip in /home/horst/.local/lib/python3.9/site-packages/xonox/ abgelegt. Wenn du jetzt aber sudo python -m xonox ausführst, wird das ganze (wahrscheinlich) als Benutzer pi ausgeführt. Im Verzeichnis /home/pi/.local/lib/python3.9/site-packages/ wird es aber wahrscheinlich kein xonox geben.

Du hast jetzt zwei Möglichkeiten: Du installierst für pi das Paket xonox mittels sudo pip install xonox. Dann kannst du mit sudo python -m xonox --config-dir . den Service starten. (Vielleicht deinstallierst du das Paket dann noch für den Nutzer horst mittels pip uninstall xonox.)

Oder du führst xonox als Benutzer horst, ohne sudo aus. Dazu benötigst du aber noch ein Helferlein wie authbind. Installation:

sudo apt install authbind
# configure access to port 80
sudo touch /etc/authbind/byport/80
sudo chmod 777 /etc/authbind/byport/80

Start von xonox:

authbind --deep python -m xonox --config-dir .
x789 commented 2 years ago

@HorstRado: Falls du xonox nicht bei dir als Autostart-Service konfiguriert hast und verhindern möchtest, dass der Service nach deinem SSH-Logout beendet wird, kann dir screen weiterhelfen.

ghost commented 2 years ago

Erst mal vielen Dank für deine gute Hilfe!

Ich hab jetzt mit dem Benutzer pi folgendes gemacht: pi@raspberrypi:~ $ sudo pip install xonox Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: xonox in /usr/local/lib/python3.9/dist-packages (0.0.5) Requirement already satisfied: flask in /usr/lib/python3/dist-packages (from xonox) (1.1.2)

pi@raspberrypi:~ $ sudo python -m xonox

Am Radiomenu 'Internet' angewählt gibt die noxon Konsole folgendes aus und das Radiodisplay sagt 'leer': 192.168.42.125 - - [26/Jun/2022 17:40:26] "GET /setupapp/fs/asp/BrowseXML/loginXML.asp?token=0 HTTP/1.1" 200 - 192.168.42.125 - - [26/Jun/2022 17:40:26] "GET /setupapp/fs/asp/BrowseXML/loginXML.asp?gofile=&mac=9f868345b8fa93a771e9f6bc7309e275&dlang=ger&fver=79&hw=10143&ven=Terratec HTTP/1.1" 200 -

Beim Absenden deines Beispiels: curl --location --request POST 'http://legacy.noxonserver.eu/station' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "Radio Swiss Pop", "description": "Radio Swiss Pop Live Stream", "streamUrl": "http://stream.srg-ssr.ch/m/rsp/mp3_128" }'

oder bei

curl --location --request GET 'http://legacy.noxonserver.eu/station'

curl: (7) Failed to connect to legacy.noxonserver.eu port 80: Connection refused

x789 commented 2 years ago

Wenn das Radiodisplay 'leer' anzeigt, ist das ein gutes Zeichen. Das zeigt, dass das Radio mit xonox sprechen kann. Bei den Beispielrequests in der Doku bin ich davon ausgegangen, dass der Rechner der den Curl-Request abschickt den gleichen DNS-Server wie die Radios nutzt. Wenn das bei dir nicht der Fall ist, dann schicke die Requests an die IP-Adresse des xonox-Services. Wenn du direkt auf dem Raspberry bist auf dem auch xonox läuft, dann könntest du auch den Request an den localhost abschicken. Also wenn du den Request vom Raspberry ausführst:

curl --location --request POST 'http://localhost/station'
--header 'Content-Type: application/json'
--data-raw '{
"name": "Radio Swiss Pop",
"description": "Radio Swiss Pop Live Stream",
"streamUrl": "http://stream.srg-ssr.ch/m/rsp/mp3_128"
}'

Von einem anderen Computer:

curl --location --request POST 'http://xonox-ip/station'
--header 'Content-Type: application/json'
--data-raw '{
"name": "Radio Swiss Pop",
"description": "Radio Swiss Pop Live Stream",
"streamUrl": "http://stream.srg-ssr.ch/m/rsp/mp3_128"
}'
ghost commented 2 years ago

Kaum macht man es richtig und schon geht's auch. Vielen Dank für deine geduldige Hilfe.

Autostart des xonox Servers:

sudo nano /etc/rc.local

Vor der Zeile mit exit 0 sudo python -m xonox & einfügen