Open Nea74 opened 9 years ago
Sehr gute Frage, dafür hab ich genau den Schwenk zu pip hin mit der setup.py erledigt um das zu gewährleisten.
Update / Upgrade:
sudo pip install --upgrade doorpi
Installation von Version 2.4.0.8 (obwohl eine andere aktueller wäre): Hinweis: alle Versionen anzeigen mit: https://pypi.python.org/simple/doorpi/
sudo pip install doorpi == 2.4.0.8
Re-Installation
sudo pip uninstall --yes doorpi &&
sudo pip install doorpi
Als Ergänzung noch der User-Guide für pip: https://pip.pypa.io/en/stable/user_guide/
Nun zu Deiner Frage nach dem Web-Oberfläche-Button: Ich weiß nicht, ob es eine gute Idee ist, DoorPi im laufenden Betrieb einfach zu aktualisieren. Ich könnte anzeigen lassen, dass es eine neue Version gibt (ggf. mit Changelog). Dafür könnte man am einfachsten die JSON-Schnittstelle von PyPi nutzen: https://pypi.python.org/pypi/DoorPi/json
Etwas weiter ausgeholt zu dem Thema Release-Strategie: 1.) Ich habe für das Projekt DoorPi und dessen Repository eine Integration von Travis-CI eingerichtet. Das bedeutet, dass dort alle commit einzeln getestet werden und das Ergebnis als Button in der README.rst angezeigt wird (das ist der Button mit "build: passing"). Ergebnisse sind hier einsehbar: https://travis-ci.org/motom001/DoorPi
2.) Der Master-Branch ist nun ein geschützter Branch. Das bedeutet, es dürfen nur noch Pull-Request aus anderen Branches dort rein und nicht mehr direkt editiert werden. Außerdem dürfen nur noch Pull-Requests rein, die den Travic-CI Test bestanden haben.
3.) Außerdem habe ich seit den letzten zwei Versionen die Release-Strategie umgestellt. Der Master-Branch wird ab jetzt immer syncron laufen mit den Paketen von PyPi. Sobald Travis-CI erkennt, dass der Master-Branch aktualisiert wurde, wird automatisch das PyPi Paket mit allen wichtigen Dateien gepackt und auf PyPi in meinem Namen hochgeladen. Sieht man hier ab dieser Zeile: https://travis-ci.org/motom001/DoorPi/builds/81915959#L1449 Cooles Extra ist, dass die Abhängigkeiten von DoorPi jetzt schon in der PyPi Übersicht ganz unten angezeigt werden. Das hatte ich beim manuellen Upload nicht hinbekommen.
Für mich klingt das nach einem FAQ-Beitrag - oder?
Hi Thomas, sehr komfortabel umgesetzt! Finde ich Klasse! Eine Anzeige der neuen Version im Web reicht völlig finde ich!
Viele Grüße, Max
Gut gelöst.
So viel zur Theorie - findet sich jemand, der das mal testet :)
Hi Thomas, kann ich gerne machen, aber erst heute Abend...
[Nachtrag, es ist Abend...] Beim Upgrade bekomme ich leider (nach längerem warten):
OSError: [Errno 2] No such file or directory: '/usr/local/lib/python2.7/dist-packages/setuptools-18.2-py2.7.egg'
und zwischendrin ein paar Deprecation-Warnings:
DEPRECATION: Uninstalling a distutils installed project (lockfile) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
Setzen einer Version sieht leider noch übler aus (auch 2.4.0.8):
Exception:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/basecomma nd.py", line 211, in main
status = self.run(options, args)
File "/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/commands/ install.py", line 282, in run
wheel_cache
File "/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/basecomma nd.py", line 272, in populate_requirement_set
wheel_cache=wheel_cache
File "/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/req/req_i nstall.py", line 213, in from_line
wheel_cache=wheel_cache, constraint=constraint)
File "/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/req/req_i nstall.py", line 67, in __init__
req = pkg_resources.Requirement.parse(req)
File "/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/_vendor/p kg_resources/__init__.py", line 2980, in parse
reqs = list(parse_requirements(s))
File "/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/_vendor/p kg_resources/__init__.py", line 2911, in parse_requirements
raise RequirementParseError("Missing distribution spec", line)
RequirementParseError: Missing distribution spec ==
Ein erneuter Upgrade endet so:
`Installing collected packages: linphone4raspberry, setuptools
Found existing installation: linphone4raspberry 3.8.5-431-g4dd7ab6
Uninstalling linphone4raspberry-3.8.5-431-g4dd7ab6:
Successfully uninstalled linphone4raspberry-3.8.5-431-g4dd7ab6
Found existing installation: setuptools 0.6rc11
DEPRECATION: Uninstalling a distutils installed project (setuptools) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
Uninstalling setuptools-0.6rc11:
Successfully uninstalled setuptools-0.6rc11
Successfully installed linphone4raspberry-3.8.5-431-g4dd7ab6 setuptools-18.3.2
liefert dann aber beim Stoppen des Daemons diesen Fehler:
[....] Stopping VoIP Door-Intercomstation with Raspberry Pi: DoorPiTraceback (most recent call last):
File "/usr/local/bin/doorpi_cli", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2707, in <module>
working_set.require(__requires__)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 686, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 584, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: linphone4raspberry
failed!
...scheint aber grundsätzlich wieder zu laufen. Hilft dir das weiter. Mir sagt es gerade nichts... Sorry!
Die De-Installation klappt super (aber wer braucht die schon...):
$ sudo pip uninstall --yes doorpi
Uninstalling DoorPi-2.4.1.2:
Successfully uninstalled DoorPi-2.4.1.2
Genauso klappt die Installation einwandfrei:
$ sudo pip install doorpi
Collecting doorpi
Using cached DoorPi-2.4.1.2-py2-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): python-daemon in /usr/local/lib/python2.7/dist-packages (from doorpi)
Requirement already satisfied (use --upgrade to upgrade): watchdog>=0.8.3 in /usr/local/lib/python2.7/dist-packages/watchdog-0.8.3-py2.7.egg (from doorpi)
Requirement already satisfied (use --upgrade to upgrade): pifacedigitalio>=3.0.5 in /usr/local/lib/python2.7/dist-packages/pifacedigitalio-3.0.5-py2.7.egg (from doorpi)
Requirement already satisfied (use --upgrade to upgrade): RPi.GPIO>=0.5.11 in /usr/lib/python2.7/dist-packages (from doorpi)
Requirement already satisfied (use --upgrade to upgrade): linphone4raspberry in /usr/local/lib/python2.7/dist-packages (from doorpi)
Requirement already satisfied (use --upgrade to upgrade): pyserial>=2.7 in /usr/local/lib/python2.7/dist-packages/pyserial-2.7-py2.7.egg (from doorpi)
Requirement already satisfied (use --upgrade to upgrade): requests>=2.7.0 in /usr/local/lib/python2.7/dist-packages/requests-2.7.0-py2.7.egg (from doorpi)
Requirement already satisfied (use --upgrade to upgrade): docutils in /usr/local/lib/python2.7/dist-packages (from python-daemon->doorpi)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/local/lib/python2.7/dist-packages (from python-daemon->doorpi)
Requirement already satisfied (use --upgrade to upgrade): lockfile>=0.10 in /usr/local/lib/python2.7/dist-packages (from python-daemon->doorpi)
Requirement already satisfied (use --upgrade to upgrade): PyYAML>=3.10 in /usr/local/lib/python2.7/dist-packages (from watchdog>=0.8.3->doorpi)
Requirement already satisfied (use --upgrade to upgrade): argh>=0.24.1 in /usr/local/lib/python2.7/dist-packages/argh-0.26.1-py2.7.egg (from watchdog>=0.8.3->doorpi)
Requirement already satisfied (use --upgrade to upgrade): pathtools>=0.1.1 in /usr/local/lib/python2.7/dist-packages/pathtools-0.1.2-py2.7.egg (from watchdog>=0.8.3->doorpi)
Installing collected packages: doorpi
Successfully installed doorpi-2.4.1.2
Das gefällt mir sehr gut Thomas, hast du echt super hinbekommen...!!! :+1::+1::+1::+1:
Viele Grüße, Max
Guten Morgen, da ja hier momentan doch sehr schnell neue Versionen von DoorPi erscheinen sollte man sich überlegen ob man in der Weboberfäche und/oder als Komandozeile ein Upgrade/Downgrade von DoorPi durchführen kann. Downgrade aus dem Grund da manche Änderungen nicht gleich auf anhieb klappen bei den Benutzern diese aber schon produktiv im Einsatz haben. Gruß Nea