Plugin python zawiesza domoticz – błędy memalloc() – instalacja pythona i domoticza ze źródeł

Ostatnio próbowałem wgrać plugin do Domoticz napisany w pythonie do obsługi enigma2. Pomimo najnowszej wersji miałem problemy z każdą wtyczką pythona. Objaw był taki, że po aktywacji wtyczki domoticz przestawał odpowiadać na dedykowanym porcie, w logu nie było nic ciekawego, poza błędami alokacji pamięci dla pythona.

Rozwiązaniem jest zbudowanie Domoticza ze źródeł z flagą  -DUSE_OPENSSL_STATIC=”NO” -DCMAKE_BUILD_TYPE=Beta .

Jeżeli tak jak większość użytkowników budujesz okazyjnie na swoim raspberry, koniecznie musisz włączyć plik SWAP w malince.

Zaczynamy.

aktywacja pliku swap:

$ cd /

$ sudo dd if=/dev/zero of=swapfile bs=1M count=3000

$ sudo mkswap swapfile

$ sudo swapon swapfile

$sudo echo '/swapfile none swap sw 0 0′ > /etc/fstab

 

Przejdźmy teraz do instalacji domoticz ze źródeł:

Zatrzymaj domoticza:

systemctl stop domoticz

Zmień nazwę obecnego katalogu np. w taki sposób

mv /home/domoticz /home/domoticz.old

 

Zainstaluj niezbędne narzędzia do kompilacji

sudo apt-get install cmake make gcc g++ libssl-dev git libcurl4-gnutls-dev libusb-dev python3-dev zlib1g-dev

Usuń starą bibliotekę boost

sudo apt-get remove libboost-dev libboost-thread-dev libboost-system-dev libboost-atomic-dev libboost-regex-dev
sudo apt-get remove libboost-date-time1.55-dev libboost-date-time1.55.0 libboost-atomic1.55.0 libboost-regex1.55.0 libboost-iostreams1.55.1
sudo apt-get remove libboost-iostreams1.55.0 libboost-iostreams1.55.0 libboost-iostreams1.55.0
sudo apt-get remove libboost-serialization1.55-dev libboost-serialization1.55.0 libboost-system1.55-dev
sudo apt-get remove libboost-system1.55.0 libboost-thread1.55-dev libboost-thread1.55.0 libboost1.55-dev
sudo apt-get autoremove

Zainstaluj nowszą wersję Boost (przejdź na roota komendą sudo -s)

cd /opt
mkdir boost
cd boost
wget https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.gz
tar xfz boost_1_68_0.tar.gz
cd boost_1_68_0/
./bootstrap.sh
./b2 stage threading=multi link=static –with-thread –with-system
sudo ./b2 install threading=multi link=static –with-thread –with-system
cd ../../
rm -Rf boost/

Pobieramy Domoticza ze źródeł:

git clone https://github.com/domoticz/domoticz.git dev-domoticz

Wchodzimy w katalog i kompilujemy z opcją ssl static:

cd dev-domoticz

cmake -DUSE_OPENSSL_STATIC=”NO” -DCMAKE_BUILD_TYPE=Beta CMakeLists.txt

make

 

Uwaga ! procedura zajmuje ok 30-60 min na Raspberry PI 2

Skopiuj nowy katalog ze skompilowanym domoticzem do katalogu gdzie miałeś go poprzednio np.:

cd /opt/dev-domoticz /home/domoticz

Skopiuj wtyczki, skrypty i szablony oraz bazę danych:

cp /opt/dev-domoticz/plugins /home/domoticz/plugins

cp /opt/dev-domoticz/scripts /home/domoticz/scripts

cp /opt/dev-domoticz/www /home/domoticz/www

cp /opt/dev-domoticz/domoticz.db /home/domoticz/domoticz.db

I uruchamiamy domoticz komendą :

systemctl start domoticz

Facebook - komentarze