Sursa: Office of Research Computing
Avem multe pachete software open source și comerciale instalate pe sistemele noastre, care sunt disponibile tuturor utilizatorilor. Cu toate acestea, utilizatorilor li se permite să descarce și să instaleze pachete software mici în propriul director principal, software util de obicei doar lor personal.Există o serie de pași necesari pentru instalarea software-ului.
- Localizați și descărcați codul sursă (care este de obicei comprimat)
- Despachetați codul sursă
- Compilează codul
- Instalați executabilul rezultat
- Setați căile către directorul de instalare
Dintre etapele de mai sus, probabil cea mai dificilă este etapa de compilare.
Compilarea codului sursă
Tot codul de nivel înalt trebuie convertit într-o formă pe care computerul o înțelege. De exemplu, codul sursă din limbajul C este convertit într-un limbaj de nivel inferior numit limbaj de asamblare. Codul din limbajul de asamblare realizat în etapa anterioară este apoi convertit în cod obiect, care constă din fragmente de cod pe care computerul le înțelege direct. Etapa finală în compilarea unui program implică legarea tuturor fragmentelor de cod obiect într-un singur program executabil.
Efectuarea manuală a tuturor acestor pași este complicată și depășește capacitatea utilizatorului obișnuit. O serie de utilități și instrumente au fost dezvoltate pentru programatori și utilizatori finali pentru a simplifica acești pași.
make și fișierul Makefile
Comanda makepermite programatorilor să gestioneze compilarea programelor mari sau a grupurilor de programe. Ajută la dezvoltarea programelor mari prin urmărirea porțiunilor întregului program care au fost modificate, compilând doar acele părți ale programului care s-au modificat de la ultima compilare.
Programul makeîși obține setul de reguli de compilare dintr-un fișier text numit Makefile , care se află în același director ca și fișierele sursă. Acesta conține informații despre cum se compilează software-ul, de exemplu, nivelul de optimizare, dacă se includ informații de depanare în executabil. De asemenea, conține informații despre unde se instalează fișierele binare compilate (executabile), paginile de manual, fișierele de date, fișierele bibliotecii dependente, fișierele de configurare etc.
Unele pachete necesită editarea manuală a fișierului Makefile pentru a seta directorul final de instalare și orice alți parametri. Cu toate acestea, multe pachete sunt distribuite acum cu utilitarul GNU configure.
configurați
Cu mulți ani în urmă, pe măsură ce variantele UNIX și Linux au crescut, a devenit mai greu să se scrie programe care să poată rula pe toate variantele. Dezvoltatorii nu aveau adesea acces la fiecare sistem, iar caracteristicile unor sisteme se schimbau de la o versiune la alta. Sistemul GNU de configurare și construire simplifică construirea programelor distribuite ca și cod sursă. Toate programele sunt construite folosind un proces simplu, standardizat, în doi pași. Constructorul de programe nu trebuie să instaleze niciun instrument special pentru a construi programul.
Scriptul configureshell încearcă să ghicească valorile corecte pentru diverse variabile dependente de sistem utilizate în timpul compilării. Folosește aceste valori pentru a crea un Makefile în fiecare director al pachetului.
Cea mai simplă metodă de compilare a unui pachet este:
cdîn directorul care conține codul sursă al pachetului.- Tastați
./configurepentru a configura pachetul pentru sistemul dvs. - Tastați
makepentru a compila pachetul. - Tastați
make installpentru a instala programele și orice fișiere de date și documentație. - Opțional, tastați
make cleanpentru a elimina fișierele binare ale programului și fișierele obiect din directorul codului sursă
Utilitarul de configurare acceptă o gamă largă de opțiuni. De obicei, puteți utiliza --helpopțiunea pentru a obține o listă de opțiuni interesante pentru un anumit script de configurare.
Singurele opțiuni generice pe care probabil le veți utiliza sunt opțiunile --prefix și --exec-prefix . Aceste opțiuni sunt folosite pentru a specifica directoarele de instalare.
Directorul numit de --prefix opțiune va conține fișiere independente de mașină, cum ar fi documentația, datele și fișierele de configurare.
Directorul numit de --exec-prefix opțiune (care este în mod normal un subdirector al directorului --prefix) va conține fișiere dependente de mașină, cum ar fi executabilele.
7.1 Descărcarea codului sursă
Pentru acest exemplu, vom descărca un software gratuit care convertește între diferite unități de măsură.
Mai întâi creați un director de descărcare și accesați acel director folosind comanda cd:
$ cd download
Acum folosiți wgetcomanda pentru a descărca fișierul. wgetComanda descarcă un fișier dintr-o locație la distanță (cum ar fi internetul).
7.2 Extragerea codului sursă
Acum, să vedem ce am descărcat:
După cum puteți vedea, numele fișierului se termină în tar.gz. Partea „tar” a fișierului înseamnă că acest fișier conține un grup de fișiere, iar partea „gz” înseamnă că este comprimat folosind formatul gzip.
Folosind tarcomanda, putem extrage toate fișierele comprimate:
Din nou, listați conținutul directorului de descărcare , apoi accesați subdirectorul units-1.87 .
7.3 Configurarea și crearea fișierului Makefile
Primul lucru de făcut este să citiți cu atenție fișierele text README și INSTALL (folosiți lesscomanda). Acestea conțin informații importante despre cum se compilează și se rulează software-ul.
Pachetul units folosește sistemul GNU configure pentru a compila codul sursă. Va trebui să specificăm directorul de instalare, deoarece implicit va fi zona principală a sistemului, în care nu aveți voie să scrieți. În schimb, vom instala software-ul într-un director din directorul dvs. home.
Notă: Variabila $HOME este un exemplu de variabilă de mediu. Valoarea lui $HOME este calea către directorul principal. Trebuie doar să tastați$ echo $HOME
pentru a afișa conținutul acestei variabile.
Dacă comanda configure a rulat corect, va fi creat un fișier Makefile cu toate opțiunile necesare. Asigurați-vă că configure nu a generat erori. Puteți vizualiza fișierul Makefile dacă doriți (folosind less comanda), dar nu editați conținutul acestuia.
7.4 Construirea pachetului
Acum puteți continua și construi pachetul rulând make comanda.
După un minut sau două (în funcție de viteza computerului), fișierele executabile vor fi create. Dacă nu vedeți nicio eroare pe ecran, atunci cel mai probabil software-ul s-a compilat corect. Dacă totul este în regulă, acum puteți instala pachetul.
Aceasta va instala fișierele în directorul ~/units187 pe care l-ați specificat cu ./configure.
7.5 Rularea software-ului
Acum sunteți gata să rulați software-ul (presupunând că totul a funcționat).
Dacă listați conținutul directorului units, veți vedea o serie de subdirectoare.
| bin | Executabilele binare |
| share |
Pentru a rula programul, treceți în directorul bin și tastați
De exemplu, convertiți 6 picioare în metri.
You want: metres
* 1,8288
Dacă primești răspunsul 1.8288, felicitări, a funcționat.
Pentru a vedea între ce unități poate face conversia, vizualizați fișierul de date din directorul partajat (lista este destul de cuprinzătoare).
Pentru a citi documentația completă, accesați directorul info (este un subdirector al directorului share ) și tastați
7.6 Eliminarea codului inutil
Când se dezvoltă un software, este util ca programatorul să includă informații de depanare în executabilul rezultat. În acest fel, dacă apar probleme la rularea executabilului, programatorul poate încărca executabilul într-un pachet software de depanare și poate identifica orice erori software.
Acest lucru este util pentru programator, dar inutil pentru utilizator. Putem presupune că pachetul, odată finalizat și disponibil pentru descărcare, a fost deja testat și depanat. Cu toate acestea, când am compilat software-ul de mai sus, informațiile de depanare au fost încă compilate în executabilul final. Deoarece este puțin probabil să avem nevoie de aceste informații de depanare, le putem elimina din executabilul final. Unul dintre avantajele acestui lucru este un executabil mult mai mic, care ar trebui să ruleze puțin mai rapid.
Ceea ce vom face este să analizăm dimensiunea fișierului binar înainte și după. Mai întâi, treceți în directorul bin din directorul de instalare al unităților.
$ ls -l
După cum puteți vedea, fișierul are o dimensiune de ~100 kbytes. Puteți obține mai multe informații despre tipul fișierului utilizând filecomanda.
units: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped
Pentru a elimina toate informațiile de depanare și numerotare a liniilor din fișierul binar, utilizați stripcomanda
$ ls -l
După cum puteți vedea, fișierul are acum ~40 kbytes - o treime din dimensiunea sa originală. Două treimi din fișierul binar erau cod de depanare!!!
Verificați din nou informațiile despre fișier.
units: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), stripped
Sugestie: Puteți utiliza comanda make pentru a instala copii predefinite ale tuturor fișierelor binare atunci când instalați pachetul. În loc să tastați make install, tastați pur și simplu make install-strip
Rezumat
./configure --prefix=/path/to/install/directory | Configurează software-ul care va fi instalat în /calea/către/directorul/de/instalare |
make | Compilează codul sursă și trebuie rulat într-un director care conține un Makefile |
make install | Instalați software-ul în prefixul specificat cu ./configure |
strip executable | Eliminați simbolurile inutile din executabil |
make install-strip | Eliminați simbolurile inutile din fișierele binare și instalați software-ul în prefixul specificat cu ./configure |
wget URL | Descărcați fișierul de la URL |
tar -zxvf filename.tar.gz | Extrage fișiere dintr-o arhivă de fișiere .tar.gz |

Comentarii
Trimiteți un comentariu