Folosirea Software Collections in RHEL/CentOS 7

Banuiesc ca majoritatea celor care urmaresc acest blog au fost sau sunt cursanti ai Crystal Mind Academy, astfel fiind familiarizati cu distributiile Linux  Debian, Mint sau Ubuntu. In cele ce urmeaza doresc sa va prezint modul in care puteti sa configurati corect un mediu de dezvoltare in Red Hat Enterprise Linux (RHEL) sau CentOS. Aceste doua distributii sunt un standard in mediul Enterprise si au o cota de piata destul de mare.

Daca ati cautat vreodata sa va angajati in mediul Enterprise, cu siguranta ati intalnit cerinte care solicitau cunoasterea distributiilor RHEL sau CentOS, sau chiar existenta certificarilor de firma de tipul RHCSA (Red Hat Certified System Administrator) sau RHCE (Red Hat Certified Engineer). Aceste doua certificari de firma sunt cele mai renumite din domeniu, iar cei care detin astfel de certificari se presupune ca sunt familiarizati cu mediul Linux specific Enterprise. Totodata, Red Hat este singura cea mai mare companie care comercializeaza Linux, dar care contribuie in egala masura la dezvoltarea multor proiecte Open Source. Dintre acestea, pe scurt, amintesc de cateva proiecte initiate si sustinute de catre Red Hat, precum: Wayland, systemd, Ansible, cockpit, KVM, fwupd, firewalld… [1]

Totodata, daca ati auzit de RHEL/CentOS, banuiesc ca ati ajuns sa cititi o multime de articole care prezentau aceste distributii ca avand versiuni foarte vechi ale pachetelor instalate. Este adevarat. De exemplu, RHEL 7 si CentOS 7 au fost lansate in anul 2014, avand astfel versiuni ale pachetelor inca de atunci, fara a fi upgradate la versiuni mai noi.

Chiar daca pachetele din RHEL/CentOS au versiuni mai vechi, acestea primesc constant patch-uri de la versiunile mai noi. Fiti convinsi de faptul ca folosind oricare dintre aceste distributii de Linux, nu veti fi expusi niciunor brese de securitate din pachetele vechi instalate. La fel, este valabil si pentru versiunea de Kernel utilizata. Aceasta este versiunea 3.10, care insa a primit constant update-uri si patch-uri de la versiunile de Kernel mai noi.

Exista o singura explicatie pentru pastrarea unor pachete atat de vechi pentru o perioada atat de lunga (RHEL 7 si CentOS 7 beneficiaza de suport pentru o perioada de 10 ani – pana in 2024) – stabilitatea si securitatea care trebuie sa caracterizeze un mediu Enterprise.

 

Ce sunt Software Collections?

RHEL si CentOS, desi sunt un standard in domeniul serverelor, au si variante de workstation, fiind folosite in mediul Enterprise pentru dezvoltarea de aplicatii specifice. Versiunile vechi ale pachetelor, insa, au dat batai de cap multor dezvoltatori, care erau nevoiti sa foloseasca repozitoare neoficiale, care puteau sa puna stabilitatea si securitatea sistemelor in pericol.

Astfel, in urma cu 5 ani, Red Hat a lansat proiectul intitulat "Software Collections" pentru distributiile RHEL, CentOS, Fedora si Scientific Linux. Acest proiect are ca scop ajutarea dezvoltatorilor prin facilitarea unui sistem care le permite sa instaleze versiuni noi ale pachetelor folosite, fara a periclita integritatea sistemului sau versiunile instalate standard. Totodata, Red Hat a lansat si programul "Red Hat Developer", care chiar saptamana trecuta, in perioada Red Hat Summit din San Francisco, a sarbatorit existenta a peste 1 milion de dezvoltatori inregistrati in acest program.[2] Programul "Red Hat Developer" este gratuit, iar prin inregistrare, poti descarca gratuit o serie de materiale si articole, inclusiv distributia de Linux RHEL. Insa, nu este nevoie sa o folositi neaparat, puteti folosi si CentOS in egala masura, avand aceleasi beneficii.

In paralel cu acest proiect, Fedora, care este un proiect sustinut si sponsorizat de catre Red Hat, a lansat odata cu versiunea 28 a distributiei de Linux, proiectul "Modularity" care este asemanator cu "Software Collections" lansat in urma cu 5 ani.[3]  Despre Modularity va voi spune doar ca pune la dispozitia dezvoltatorilor o serie de repozitoare modulabile, in sensul in care pot sa instaleze prin intermediul acestora, versiuni mai noi ale pachetelor de care au nevoie. Diferenta dintre Modularity si Software Collections este ca, in cazul primului, un pachet mai nou va putea fi instalat alaturi de pachetul deja existent fara insa a afecta stabilitatea sistemului – insa utilizatorul va decide care dintre aceste pachete va putea fi utilizat de catre sistem, nu vor putea fi folosite simultan toate; in cazul celui de-al doilea, pot fi instalate simultan pachete de versiuni diferite pe acelasi sistem, fara a afecta pachetul standard cu care a venit distributia – iar pachetele instalate pot fi utilizate simultan. Posibil ca in viitor, in versiunea 8 a RHEL/CentOS sa putem sa avem si pachetul Modularity alaturi de Software Collections.

 

Instalarea unui mediu de dezvoltare in CentOS 7 folosind Software Collections

Voi folosi ca exemplu CentOS 7, care este compatibil 100% cu RHEL 7 si este gratuit. Pentru a va ajuta in configurarea unui astfel de mediu, pentru cei care poate doriti sa folositi CentOS 7 ca baza a proiectelor voastre viitoare, voi oferi cateva exemple concrete de configurare pentru Python 3.x PHP si Ruby, iar intr-un nou articol voi prezenta in detaliu modul de instalare LAMP din Software Collections.

 

Instalarea Software Collections in CentOS 7

Pentru a putea folosi pachetele noi din Software Collections, trebuie initial sa instalam unele dependinte. Pentru inceput, rulati urmatoarele comenzi:

sudo yum install scl-utils scl-utils-build
sudo yum install centos-release-scl

Inainte de a cauta anumite pachete, va voi afisa mai jos ultimele versiuni pe care le contine Software Collections la data scrierii acestui articol [4]:

– Python 3.6
– Node.js 8
– PHP 7.1
– Perl 5.26
– Ruby 2.4
– Ruby on Rails 5
– MariaDB 10.2
– MongoDB 3.6
– MySQL 5.7
– PostgreSQL 10
– Apache 2.4
– nginx 1.12
– git 2.9
– Eclipse IDE 4.7

 

Cautarea pachetelor in Software Collections

Pentru a cauta pachetele pe care doriti sa le folositi, utilizati comanda:

sudo yum search rh- | less

sau

sudo yum search sclo- | less

De regula, pachetele folosite in Software Collections au denumirea de forma: rh-nume-pachet.arhitectura sau sclo-nume-pachet.arhitectura.

 

Instalarea pachetelor Python 3.x

In CentOS 7 veti gasi preinstalat doar Python versiunea 2.7.5 (in CentOS 7.5.1804 lansat pe 11 Mai 2018).

Rulati comanda:

python --version

pentru a va asigura ca aveti versiunea de mai sus instalata. Nu incercati sa dezinstalati pachetul Python 2.x, deoarece veti ajunge in imposibilitatea de a rula multe dintre programele distributiei. Inclusiv managerul de pachete "yum" este realizat in Python 2.

In continuare, pentru a folosi Python 3.x va trebui sa instalati pachetele din Software Collections.

O cautare cu comanda

sudo yum search rh-python3

va va afisa o lista relativ lunga care va contine pachete specifice Python 3.4, 3.5 si 3.6. Acum, dupa nevoie, puteti sa instalati oricare pachet doriti. Voi exemplifica in continuare cu pachetele pentru Python 3.6. Instalati pachetele cu comanda:

sudo yum install rh-python36.x86_64 rh-python36-python.x86_64 rh-python36-python-pip.noarch rh-python36-python-setuptools.noarch rh-python36-python-tools.x86_64 rh-python36-python-virtualenv.noarch

 

Activarea pachetelor Python 3.x

Odata instalate noile pachete ale versiunii Python 3.6, acestea nu sunt activate automat. Pentru a le activa, folositi comanda:

scl enable rh-python36 bash

Odata activate, puteti folosi comanda python3 –version pentru a va asigura ca aveti instalata versiunea dorita.

Pentru a scapa de necesitatea de a activa de fiecare data pachetele noi, puteti sa editati fisierul .bashrc din home directory-ul utilizatorului, pentru a asigura activarea automata la pornirea sistemului. Pentru asta, adaugati urmatoarea linie in fisierul .bashrc:

source scl_source enable rh-python36

 

Instalare si activare pachete Ruby 2.4

Nu stiu daca vreunul dintre voi foloseste Ruby pentru a dezvolta anumite aplicatii, insa eu am nevoie de el pentru a rula Jekyll, un generator static de pagini web, pe care il foloesc pentru a genera blog-ul personal www.openlark.com. Pentru aceasta, am nevoie de pachete Ruby mai noi decat cele pe care CentOS 7 le are in repozitoarele standard.

Pentru instalare, folositi comanda:

sudo yum install rh-ruby24.x86_64 rh-ruby24-ruby.x86_64 rh-ruby24-ruby-devel.x86_64 rh-ruby24-rubygem-bundler.noarch rh-ruby24-rubygems.noarch

Pentru activare folositi comanda:

scl enable rh-ruby24 bash

Pentru activare automata introduceti linia urmatoare in .bashrc:

source scl_source enable rh-ruby24

 

Instalare si activare PHP 7 din Software Collections

Vom instala versiunea PHP 7.1, folosind urmatoarea comanda:

sudo yum install rh-php71 rh-php71-php rh-php71-php-dba rh-php71-php-gd rh-php71-php-fpm rh-php71-php-json rh-php71-php-mbstring rh-php71-php-pdo rh-php71-php-mysqlnd

Pentru a activa noile pachete, in cazul serviciilor de genul Apache, MariaDB sau PHP, putem folosi comenzile:

sudo systemctl enable rh-php71-php

Totodata, putem adauga urmatoarea linie in .bashrc:

source scl_source enable rh-php71

 

Instalarea aplicatiilor IDE folosind Software Collections si Flathub

Ca dezvoltatori de aplicatii, cu siguranta aveti un editor sau IDE preferat.

In CentOS 7 veti gasi, in repozitoarele standard, un numar redus de aplicatii specifice. Pentru a creste acest numar, puteti folosi atat Software Collections cat si Flathub, noul hub care permite instalarea de aplicatii in format Flatpak.

Pentru a instala Flatpak, folositi comanda:

sudo yum install flatpak

Iar pentru a activa repozitorul cu aplicatii, Flathub, folositi comanda:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Pentru a vedea aplicatiile din Flathub, puteti sa mergeti direct in Application Installer / Software Center in GNOME (mediul grafic default din CentOS 7), iar la Development Tools veti vedea o serie de aplicatii precum:

– Atom
– PyCharm (Community Edition)
– Android Studio
– Code::Blocks IDE
– Geany IDE
– Kdevelop4
– Qt Creator

Insa, nu veti avea Eclipse IDE la dispozitie, decat daca il instalati din Software Collections. Daca folositi Eclipse, puteti sa il instalati folosind comanda:

sudo yum install rh-eclipse46.x86_64 rh-eclipse46-eclipse-cdt.x86_64 rh-eclipse46-eclipse-linuxtools.noarch rh-eclipse46-eclipse-linuxtools-docker.noarch rh-eclipse46-eclipse-linuxtools-vagrant.noarch rh-eclipse46-eclipse-pydev.x86_64 rh-eclipse64-eclipse-rpm-editor.noarch rh-eclipse46-eclipse-tm-terminal.noarch rh-eclipse64-eclipse-webtools-javaee.noarch rh-eclipse46-eclipse-webtools-servertools.noarch


Concluzii

Iata ca, in cativa pasi relativ scurti, v-am aratat cum puteti sa va actualizati versiunile pachetelor pentru Python, Ruby sau Apache, PHP si MariaDB. Nu este deloc complicat, iar pentru cei care doresc sa invete mai mult despre Linux, sfatul meu este sa incerce si CentOS sau Fedora, chiar daca pana acum poate au folosit doar distributii bazate pe Debian sau Ubuntu. Astfel, veti avea o imagine clara a modului in care functioneaza fiecare distributie si a diferentelor (minime) care exista intre ele.

Nu incerc sa va convertesc la Red Hat, desi nu ar fi un lucru rau daca ati face-o, insa va asigur ca merita sa cunoasteti si acest mediu, care este un standard in Enterprise.

 

Referinte:

[1] Sursa: https://community.redhat.com/software/
[2] Sursa: https://developers.redhat.com/blog/2018/05/09/helping-organizations-develop-hybrid-world/
[3] Sursa: https://fedoramagazine.org/modularity-fedora-28-server-edition/
[4] Sursa: https://developers.redhat.com/products/softwarecollections/overview/