Redsleeve Linux Betriebssystem 7.1 mit Python 3.4 für den Raspberry PI 2

Da Pidora noch nicht so recht den Pi 2 verfügbar ist, alternativ http://www.redsleeve.org/ installiert.

Für die Installation sieh auch die Original Anleitung unter https://wiki.redsleeve.org/index.php/Install_Rasperry_Pi

Anmerkungen:

Root Filesystem vergrößern

yum install e2fsprogs
 
# Partition löschen und neue Partition mit einen Block höher als die alte Partition anlegen
 
fdisk /dev/mmcblk0
 
p
 
        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880     1945599      911360   83  Linux
 
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 is deleted
 
Command (m for help): n
 
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2
 
First sector (2048-124735487, default 2048): 122880
Last sector, +sectors or +size{K,M,G} (122880-124735487, default 124735487):
 
Command (m for help): w
The partition table has been altered!
#----
 
reboot
 
#---
 
resize2fs /dev/mmcblk0p2
 
#---
df -h

Update

Die Mirror Einträgen in der yum Konfiguration zeigen leider nicht auf ein existierenden Mirror File nach der Basis Installation des Images.

Auf folgende Repositories URL's angepasst:

Python 3

Python 3.4 steht als Packet (09.2015) noch nicht zur Verfügung.

Daher muss das von den Sourcen aufgebaut und installiert werden.

Vorbereitungen

Code bereitstellen und notwendige Libraries + gcc installieren:

#libs
yum install libffi bluez gdb valgrind gcc expat-devel
yum install zlib-devel bzip2-devel
 
mkdir /srv/python3
 
cd /srv/python3
 
wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
 
tar xfv Python-3.4.3.tar.xz
 
cd Python-3.4.3

Python 3 übersetzen

 
export CXX="/usr/bin/g++"
 
 
./configure
 
#bzw mit entsprechenden Parametern
 
./configure --prefix=/usr       \
            --enable-shared     \
            --with-system-expat \
            --with-system-ffi   \
            --with-ensurepip    \
            LDFLAGS="-Wl,-rpath /usr/lib"
 
#Übersetzen
make
 
#Installieren
make install
 
 
#Rechte anpassen
chmod -v 755 /usr/lib/libpython3.4m.so
chmod -v 755 /usr/lib/libpython3.so

Alternatives für Python einrichten

Unter Linux sollten die verschienden Varianten einer Software mit „alternatives“ umgeschaltet werden.

ls -la /usr/bin/python*
 
alternatives --list
 
alternatives --install /usr/bin/python python /usr/bin/python2.7 1
 
alternatives --install /usr/bin/python python /usr/bin/python3.4 2
 
#überpürfen
alternatives --display python
python - status is auto.
 link currently points to /usr/bin/python3.4
/usr/bin/python2.7 - priority 1
/usr/bin/python3.4 - priority 2
 
Current 'best' version is /usr/bin/python3.4.
 
 
#umschalten
alternatives --config python
 
#test
python --version

Packete nachinstallieren

pip
  1. Download des Scripts „get-pip.py“ von https://pip.pypa.io/en/latest/installing.html#install-pip
  2. Script „get-pip.py“ zum Beispiel nach ~/ kopieren
  3. Script mit „python get-pip.py“ aufrufen

Problem:

[root@localhost ~]# python get-pip.py
Traceback (most recent call last):
  File "get-pip.py", line 17759, in <module>
    main()
  File "get-pip.py", line 162, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip
zipimport.ZipImportError: can't decompress data; zlib not available

Zlib wurde beim obigen Bulid nicht sauber mit integriert, liegt wohl daran das die Libraries nicht dort liegen wo sie sollten ….

Bin am suchen …. , erster Test mit weiteren Paramter „LDFLAGS=“-Wl,-rpath /usr/lib„“ sieht vorerst noch gut aus, übersetzt mal was.

Prüfen wie Python übersetzt wurde:

python -c "import sysconfig; print( sysconfig.get_config_var('CONFIG_ARGS') )"
'--prefix=/usr' '--enable-shared' '--with-system-expat' '--with-system-ffi' '--with-ensurepip' 'LDFLAGS=-Wl,-rpath /usr/lib'

Nächster Fehler:

 python get-pip.py
 
...
File "/tmp/tmpu65xb4ai/pip.zip/pip/_vendor/distlib/compat.py", line 66, in <module>
ImportError: cannot import name 'HTTPSHandler'

Hier fehlt wohl auch noch die SSL Unterstützung beim Übersetzen …..

Quellen