Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Adapter als Git-Repository

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Adapter als Git-Repository

    This topic has been deleted. Only users with topic management privileges can see it.
    • 1
      150d last edited by

      Hallo,

      ich habe einen neuen Adapter (iobroker.serviio) entwickelt. Den Code habe ich in ein Git-Repository (bei GitHub) ausgelagert, das lokale Verzeichnis ist direkt das Unterverzeichnis in node_modules.

      Wenn ich jetzt einen anderen Adapter (nicht den meinen) aktualisieren will, so wird das Update nicht durchgeführt und das Log zeigt folgendes:

      87 verbose stack Error: /opt/iobroker/node_modules/iobroker.serviio: Appears to be a git repo or submodule.
      87 verbose stack     at /usr/lib/node_modules/npm/node_modules/npm-install-checks/index.js:137:15
      87 verbose stack     at /usr/lib/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18
      87 verbose stack     at FSReqWrap.oncomplete (fs.js:153:5)
      88 verbose cwd /
      89 verbose Linux 3.13.0-164-generic
      90 verbose argv "/usr/bin/node" "/usr/bin/npm" "install" "iobroker.hm-rega@2.1.2" "--production" "--save" "--prefix" "/opt/iobroker"
      91 verbose node v8.15.0
      92 verbose npm  v6.4.1
      93 error path /opt/iobroker/node_modules/iobroker.serviio
      94 error code EISGIT
      95 error git /opt/iobroker/node_modules/iobroker.serviio: Appears to be a git repo or submodule.
      96 error git /opt/iobroker/node_modules/iobroker.serviio
      97 error git Refusing to remove it. Update manually,
      97 error git or move it out of the way first.
      
      

      Die Meldung ist natürlich völlig korrekt, im Verzeichnis node_modules/iobroker.serviio befindet sich tatsächlich ein Git-Repository. Und natürlich könnte ich die Meldung vermeiden, in dem ich es daraus entferne.

      Aber warum kommt es überhaupt zu dieser Meldung? Ich will nicht iobroker.serviio entfernen, sondern iobroker.hm-rega. Die beiden haben nichts miteinander zutun. Warum wird das Update des einen wegen des anderen abgelehnt?

      MfG

      1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        Diese Meldung kommt von npm und npm

        Mag gar nicht wenn ein .git in „Seiner Struktur“ rumliegt.

        Git mach bei jeder Aktion immer ein check von allem. In dem Fall sind das alle Adapter und ihre abhängigen Pakete und so weil es versucht zu optimieren und aufzuräumen.

        Und genau dabei stellt er fest das da was nicht stimmt.

        Direkt in der gut struktur zu entwickeln ist daher sehr schwierig.

        Gesendet vom Handy …

        1 Reply Last reply Reply Quote 0
        • 1
          150d last edited by

          @apollon77:

          Direkt in der gut struktur zu entwickeln ist daher sehr schwierig. `
          Ok, dann spare ich mir das eben. Schade, praktisch ist es ja schon.

          Spaßig ist dabei allerdings, daß es ohne weiteres möglich ist, einen kompletten Adapter zu löschen, auch wenn sich ein Git-Repository darin befindet. Dann ist halt mal eben alles weg, Repo hin oder her. Aber beim bloßen Update eines ganz anderen Adapters kommt ein Fehler und der Prozess bricht ab… finde ich ziemlich inkonsequent, um es vorsichtig auszudrücken.

          Aber jedenfalls besten Dank für die Info.

          MfG

          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            Doch mit git funktioniert ziemlich gut.

            - /opt
                   /iobroker
                        | adapter.serviio   <= From git
                        | node_modules/blabla
            
            

            Dann schreibst du in /opt/iobroker

            npm i iobroker.serviio
            
            

            Und npm macht automatisch symlink zu /opt/iobroker/node_modules/iobroker.serviio => /opt/iobroker/iobroker.serviio

            Damit lässt sich alles entwickeln.

            Voraussetzung:

            • dass noch kein serviio in node_modules drin gibt (nicht symlink).

            • npm >= 5

            Das geht unter Windows und Linux sehr gut.

            1 Reply Last reply Reply Quote 1
            • 1
              150d last edited by

              Das probier' ich, danke!

              1 Reply Last reply Reply Quote 0
              • 1
                150d last edited by

                @Bluefox:

                Doch mit git funktioniert ziemlich gut. `

                Dafür scheint es noch eine weitere Voraussetzung zu geben: Der (neue) Adapter muß auch bereits im npm-repository existieren, lokal genügt nicht. Das ist bei meinem noch nicht der Fall.

                Mir bleibt also doch nichts anderes übrig, als den Adapter weiter "in-place" unter node_modules zu entwickeln und das Unterverzeichnis .git jedesmal wegzuverschieben, wenn irgendetwas anderes installiert/deinstalliert werden soll, wozu npm aufgerufen wird.

                Nebenbei: Der Versuch ging gründlich schief. Funktioniert hat der npm-Aufruf nämlich nicht wie geplant, aber das angelegte Verzeichnis /opt/iobroker/adapter.serviio gelöscht hat er trotzdem. Jetzt darf ich zusehen, wo ich ein Backup meiner letzten Änderungen herbekomme. 😞

                MfG

                1 Reply Last reply Reply Quote 0
                • Dutchman
                  Dutchman Developer Most Active Administrators last edited by

                  Tip, nimm den Adapter creator!

                  Der liefert die alles in richtiger struktur, package Daten ändern und deine x.js einpflegen.

                  Bei weiteren Fragen melden, mache es auch erst seit 2 Monaten ist alles relatief einfach glaub mir.

                  Siehe Resultat discovergy (mein erster) und source analytix (mein 2ter adapter)

                  Sent from my iPhone using Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • frankjoke
                    frankjoke last edited by

                    @Bluefox:

                    Doch mit git funktioniert ziemlich gut.

                    - /opt
                           /iobroker
                                | adapter.serviio   <= From git
                                | node_modules/blabla
                    
                    

                    Dann schreibst du in /opt/iobroker

                    npm i iobroker.serviio
                    
                    

                    Und npm macht automatisch symlink zu /opt/iobroker/node_modules/iobroker.serviio => /opt/iobroker/iobroker.serviio

                    Damit lässt sich alles entwickeln.

                    … `

                    Habe das grad probiert und funktioniert bei mir leider nicht (unter linux)!

                    Ich sehe dass npm einen Link erzeugt hat aber nach````
                    iobroker add xs1

                    instance system.adapter.xs1.0 terminated with code 10 (Cannot find start file of adapter)

                    
                    übrigens, wie kann ich mich als iobroker user mittels su oder im ssh anmelden?
                    
                    Bei jetzigem Install hab ich zwar gelesen dass iobroker einen sodoer eintrag bekommen hat aber ich hab keine Ahnung wie ich als iobroker agieren kann!
                    1 Reply Last reply Reply Quote 0
                    • R
                      rewenode last edited by

                      @fsjoke:

                      npm i iobroker.serviio `
                      Muss da nicht der komplette lokale Pfad angegeben werden?

                      Und aus /opt/iobroker (oder wo die package.json liegt) aufrufen.

                      Jedenfalls tut es dann bei mir.

                      1 Reply Last reply Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer last edited by

                        @fsjoke:

                        übrigens, wie kann ich mich als iobroker user mittels su oder im ssh anmelden?

                        Bei jetzigem Install hab ich zwar gelesen dass iobroker einen sodoer eintrag bekommen hat aber ich hab keine Ahnung wie ich als iobroker agieren kann! `
                        Sollte nicht nötig sein, wofür brauchst du das? Der Eintrag ist dafür da, dass iobroker selbst Befehle mit erhöhten Rechten als dieser User absetzen kann.

                        1 Reply Last reply Reply Quote 0
                        • frankjoke
                          frankjoke last edited by

                          @rewenode,

                          ich bin im Verzeichnis /opt/iobroker und da drinnen ist iobroker.xs1, dann mach ich dort````
                          npm i iobroker.xs1

                          
                          npm mach auch den Link und ich sehe mit````
                          ls node_modules/iobroker.xs1
                          ````auch meine Dateien, darunter xs1.js das gestartet werden soll aber js-contriller findet es nicht :(
                          
                          @AlCalzone,
                          
                          ich möchte Befehle als iobroker-user durchführen!
                          
                          Ich kann zum Beispiel nicht mehr als user pi oder mit sude den iobroker stoppen, zumindest nicht mit````
                          (sudo) iobroker stop
                          ````.
                          
                          Ich krieg den Fehler````
                          iobroker controller daemon is not running
                          ````obwoh iobroker im hintergrund läuft (wurde bei Systemstart gestartet).
                          
                          Früher ist mit sudo immer gegangen, und ich hab auch als user pi alles mit iobroker machen können (nur 2-3 Kommandos brauchten sudo).
                          1 Reply Last reply Reply Quote 0
                          • R
                            rewenode last edited by

                            @fsjoke,

                            Hm, was Anderes mach ich auch nicht :? Wurde der Adapter in die dependencies der package.json eigetragen?

                            1 Reply Last reply Reply Quote 0
                            • AlCalzone
                              AlCalzone Developer last edited by

                              @fsjoke:

                              @AlCalzone,

                              ich möchte Befehle als iobroker-user durchführen!

                              Ich kann zum Beispiel nicht mehr als user pi oder mit sude den iobroker stoppen, zumindest nicht mit````
                              (sudo) iobroker stop

                              
                              Ich krieg den Fehler````
                              iobroker controller daemon is not running
                              ````obwoh iobroker im hintergrund läuft (wurde bei Systemstart gestartet).
                              
                              Früher ist mit sudo immer gegangen, und ich hab auch als user pi alles mit iobroker machen können (nur 2-3 Kommandos brauchten sudo). `  
                              

                              Dazu siehe auch die neueste Version des Installers ==> https://github.com/ioBroker/ioBroker/bl … staller.sh

                              und der umfangreiche PR, der dort hin geführt hat ==> https://github.com/ioBroker/ioBroker/pull/99

                              Einfach nur als User iobroker Befehle absetzen reicht nicht:

                              • Es müssen die richtigen Gruppenzugehörigkeiten gesetzt sein

                              • die ausführbare Datei iobroker im Systemverzeichnis muss mit systemd umgehen können

                              • Wenn von systemd gestartet, darf das im JS-Controller integrierte daemonize nicht verwendet werden

                              • In sudoers.d müssen bestimmte Befehle für passwordless sudo freigeschaltet sein.

                              Wenn du mit dem allerneuesten Installer installierst, sind die ganzen Probleme, die du nennst, Geschichte.

                              Für bestehende Installationen ist ein ähnlichen Skript geplant, dass diese auf den neuesten Stand bringst.

                              AlCalzone created this issue in ioBroker/ioBroker

                              closed Move linux part of the installer completely into shell script #99

                              1 Reply Last reply Reply Quote 0
                              • frankjoke
                                frankjoke last edited by

                                AlCalZone,

                                wie ich sonst wo schon erwähnt habe hab ich den neuen Installer verwendet aber daraif vertraut dass iobroker-Befehle (star,stop,restart) noch wie gewohnt arbeiten!

                                Sorry, aber wenn man nach 9 Monaten ohne ioBroker-HW-Kontakt neue Testsysteme installiert und diese dann ganz anders als die alten funktionieren glaubt man zuerst an einem Problem bei sich selbst 🙂

                                Mein eigenes System ist noch mit alter SW installiert worden und läuft - Gott sei Dank - nach 9 Monaten noch immer wie gewohnt!

                                Will meine (selbst programmierten) Adapter jetzt updaten und bemerke halt dass bei neuen Installationen nichts wie vorher funktioniert! Das reicht von der Installation und iobroker management bis zu dem Fact dass ich die Adapter umbauen muss um Befehle mit 'root'-Rechten ausführen zu können!

                                p.s.: Es wäge gut eine mailing-list für adapter-Programmierer zu erzeugen welche Neuerungen und Änderungen am js-controller/Admin oder für Adapter (wie der neue compact adapter mode) geschickt bekommen. Die emails sollten doch in den repos verfügbar sein?

                                1 Reply Last reply Reply Quote 0
                                • frankjoke
                                  frankjoke last edited by

                                  Ach ja, hab vergessen zu melden warum ich wissen will wie ich einen Process unter iobroker user starten kann:

                                  Wenn ich Adapter debugge hab ich immer sowas aufgerufen:

                                  sudo node --inspect=192.168.178.91:9229 /opt/iobroker/node_modules/iobroker.radar/radar.js --force --logs --nolazy
                                  
                                  

                                  Nun läuft dieser dann als root und nicht als iobroker!

                                  Wie mach ich das für iobroker?

                                  p.s.: Hatte auch den Fall dass der Adapter wie oben gelaufen ist aber nicht in iobroker gestartet ist da einige Dateien die geändert wurden nicht zu iobroker gehörten!

                                  1 Reply Last reply Reply Quote 0
                                  • AlCalzone
                                    AlCalzone Developer last edited by

                                    Wie gesagt, mit dem neuen installer haben wir auf Änderungen in npm reagiert um die immer mehr auftauchenden rechteprobleme in den Griff zu bekommen. Dass dabei nicht alles sofort klappt, sollte klar sein. Mit dem allerneuesten installer (von vor 2-3 Tagen) sollten die von dir angesprochenen Probleme mit iobroker start/stop Geschichte sein.

                                    Der debug Befehl ist natürlich eine legitime Anwendung. Probiere mal

                                    sudo -u iobroker node...
                                    

                                    Gesendet von unterwegs

                                    1 Reply Last reply Reply Quote 1
                                    • AlCalzone
                                      AlCalzone Developer last edited by

                                      Um mit dem neuen installer befehle als root auszuführen, reicht es sudo davor zu schreiben. Um nicht grundsätzlich alles zu erlauben (sonst hätten wir uns das auch sparen können) sammeln wir die nötigen befehle hier: https://github.com/ioBroker/ioBroker/issues/96

                                      Wenn du was vermisst, bitte eintragen

                                      Gesendet von unterwegs

                                      AlCalzone created this issue in ioBroker/ioBroker

                                      closed Which commands should iobroker be allowed to execute as `sudo`? #96

                                      1 Reply Last reply Reply Quote 0
                                      • frankjoke
                                        frankjoke last edited by

                                        @AlCalzone:

                                        sudo -u iobroker node...
                                        ```` `  
                                        

                                        Danke, das funktioniert! Kann jetzt endlich wieder testen und die Adapter auf den neuesten Stand bringen!

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        961
                                        Online

                                        31.6k
                                        Users

                                        79.4k
                                        Topics

                                        1.3m
                                        Posts

                                        7
                                        18
                                        1307
                                        Loading More Posts
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                        The ioBroker Community 2014-2023
                                        logo