Installation machen Ubuntu. Die bezaubernde Magie von Konfigurieren, Erstellen und Installieren. Ich habe keine Zeit, mich damit herumzuschlagen, ich mache besser noch einmal „make install“, alles ist einfach und klar

Hallo zusammen!

Dies ist eine kurze Anmerkung für Linux-Anfänger darüber, was diese drei wunderbaren Befehle bedeuten und wofür sie benötigt werden. Fangen wir, wie man sagt, von vorne an. Die meisten Programme müssen vor der Verwendung kompiliert werden, das heißt, sie müssen einen Text, den eine Person verstehen kann, in eine Reihe von Einsen und Nullen umwandeln, die ein Computer verstehen kann. Der Prozess gliedert sich in drei Phasen: Konfiguration, Montage und Installation. Details unter dem Schnitt :)

./konfigurieren

Dieser Befehl sucht nach Bibliotheken und Header-Dateien, die für die Kompilierung erforderlich sind (dies gilt für Programme, die teilweise oder vollständig in C/C++ und ähnlichen Sprachen geschrieben sind), sowie zum Festlegen spezieller Parameter oder zum Anschließen spezieller Bibliotheken, falls erforderlich ./konfigurieren wird alles finden, was er braucht, er wird erschaffen Makefiles- Datei, die zum Erstellen des Programms erforderlich ist

Sie können die Konfiguratorparameter mithilfe der Schlüssel und Argumente derselben Schlüssel konfigurieren, zum Beispiel:

./configure --prefix=/opt/my_program

Mit einem Schlüssel --prefix= Sie können ein Verzeichnis angeben, das später als Präfix für Ihr Programm dient (also das Stammverzeichnis). Dies liegt daran, dass es nicht nur in der Linux-Welt eine spezielle Hierarchie des Dateisystems (HFS) gibt, nach der jedes Programm kompiliert und installiert werden muss, um fehlerfrei zu funktionieren.

Es gibt drei Hauptdateisystempräfixe, für die die meisten Programme konfiguriert sind, nämlich:

  • / - Stammverzeichnis des Betriebssystems, sogenanntes ROOT
  • /usr – Verzeichnis, in dem sich Benutzerumgebungsanwendungen befinden
  • /usr/local – ein zusätzliches Verzeichnis für manuell kompilierte Benutzerprogramme, speziell für operationssystem hat sich nicht in eine Müllkippe verwandelt

Wenn Sie eines dieser Verzeichnisse öffnen, sehen Sie eine sehr ähnliche Struktur, zumindest gibt es Ordner: bin usw., include, libs, sbin.

Wenn du läufst ./konfigurieren ohne Schlüssel, dann lautet das Standardpräfix (Verzeichnis, in dem das kompilierte Programm installiert wird). /usr/local Denken Sie daran: Wenn Sie Ihr Programm nicht ausführen können, haben Sie möglicherweise nicht den Pfad dazu WEG.

Außer dem Schlüssel --Präfix Im Konfigurator gibt es in der Regel viele weitere Schlüssel, die Sie alle sehen können, wenn Sie Folgendes ausführen:

./configure --help

machen

Der wichtigste und einfachste Befehl/Programm führt den Anwendungskompilierungsvorgang aus Quellcode. Für deine Arbeit dieses Programm verwendet spezielle Dateien Makefiles, die detailliert den Prozess der Anwendungserstellung mit allen Parametern beschreiben, die wir dem Konfigurator angegeben haben. Das Ergebnis eines erfolgreichen Make-Befehls ist ein kompiliertes Programm im aktuellen Verzeichnis.

make installieren

Dieser Befehl installiert die Anwendung direkt in dem in der Konfigurationsphase angegebenen Verzeichnis; nach Ausführung des Befehls make install können Sie das neu installierte Programm ausführen.

Nachwort

Um nicht drei Befehle nacheinander zu schreiben, können Sie diese in einer Zeile schreiben:

./configure && make && make install

&& - Dies ist der UND-Operator, der aus der Sprache C/C++ stammt. Aus Sicht der Shell bedeutet er jedoch, dass der nächste Befehl nur ausgeführt werden sollte, wenn der vorherige Befehl erfolgreich abgeschlossen wurde. Dies ist sehr praktisch, wenn einer der folgenden Befehle ausgeführt wird: Die Etappe endet mit einem Fehler.

Tatsächlich kann make install auch einen Build ausführen, da die Installationsaufgabe von der gesamten Aufgabe abhängt (dh die Anwendung direkt erstellt). Dies bedeutet, dass der Make-Schritt übersprungen werden kann und nur zwei Befehle ausgeführt werden können, wenn Sie sie schreiben in einer Zeile:

./configure && make install

Viel Erfolg! Und danke fürs Lesen!

Unterm Strich kann dieser Befehl in der Form „make install“ oder „sudo make install“ in modernen Distributionen nicht verwendet werden.

Aber die Autoren der Programme schreiben in den Installationshandbüchern, dass man diesen Befehl verwenden muss, könnte man sagen. Ja, sie schreiben. Das bedeutet aber nur, dass sie nicht wissen, welche Distribution Sie haben oder ob es überhaupt eine Distribution ist. Vielleicht sind Sie einer Sekte beigetreten und haben beim Lesen von LFS geraucht und haben sich nun entschieden, ihre Kreation für Ihr chthonisches System zu kompilieren. Und make install ist universell, wenn auch oft der falsche Weg Tu es.

Lyrischer Exkurs

Wie Sie wissen, muss die meiste Software für den normalen Betrieb nicht nur kompiliert, sondern auch korrekt auf dem System installiert werden. Programme erwarten, dass sie die benötigten Dateien an bestimmten Orten finden, und diese Orte sind auf den meisten *nix-Systemen zur Kompilierungszeit fest in den Code einprogrammiert. Abgesehen von diesem Aspekt besteht der Hauptunterschied zwischen dem Installationsprozess unter Linux/Freebsd/was auch immer und dem unter Windows und MacOS darin, dass das Programm nicht einfach eine Reihe von Dateien in einem separaten Verzeichnis in „Programme“ oder „/Anwendungen“ ablegt, sondern „verbreitet“. verteilt sich im gesamten Dateisystem. Bibliotheken gehen zu lib, ausführbare Dateien zu bin, Konfigurationen zu etc, verschiedene Arten von Daten zu var und so weiter. Wenn Sie es plötzlich aktualisieren müssen, muss das alles zuerst irgendwie bereinigt werden, denn... verwenden neue Version Dateireste der alten Datei können zu völlig unvorhersehbaren Folgen führen, oft nicht gut. Die Wahrscheinlichkeit dieses Ereignisses ist nicht so hoch, aber benötigen Sie es auf einem Produktionsserver?

Na und?

Wenn Sie also die Installation direkt über make install durchgeführt haben, ist es höchstwahrscheinlich normal, die Software zu entfernen oder zu aktualisieren Du kannst nicht. Darüber hinaus ist es höchstwahrscheinlich möglich, eine neue Version über die alte zu installieren überschreibt Ihre Änderungen in den Konfigurationen. make install macht genau das, was man ihm sagt: Es installiert Dateien an den richtigen Stellen und ignoriert dabei die Tatsache, dass dort bereits etwas vorhanden ist. Nach diesem Vorgang ist es absolut unmöglich, Informationen darüber, was wo platziert wurde, in verdaulicher Form zu erhalten. Manchmal unterstützt das Makefile natürlich die Deinstallationsaktion, aber das kommt nicht so häufig vor und es ist keine Tatsache, dass es richtig funktioniert. Darüber hinaus ist das Speichern des entpackten Quellbaums und der Build-Regeln für die Deinstallation irgendwie seltsam.

Wie man kämpft?

Da Pakete in Distributionen manchmal aktualisiert werden, haben sie zur Lösung dieses Problems so etwas wie einen Paketmanager entwickelt. Bei der Verwendung läuft die Installation etwa so ab:
  1. Es wird ein auf eine bestimmte Weise gebildetes Archiv entnommen
  2. Daraus werden Informationen darüber extrahiert, um was es sich handelt, um welche Version es sich handelt, wovon es abhängt, womit es in Konflikt steht, ob zum Installieren/Deinstallieren/Konfigurieren die Ausführung von Skripts erforderlich ist usw.
  3. Direkte Installationsschritte werden ausgeführt
  4. Alle Daten darüber, wo und was geliefert wurde, werden zur Paketmanager-Datenbank hinzugefügt.

In diesem Fall können Sie beim Aktualisieren problemlos unnötige Dinge entfernen und gleichzeitig sehen, ob sich die als Konfiguration markierten Dateien im System geändert haben, und fragen, was zu tun ist, wenn ihr Inhalt in der neuen Version anders ist. Darüber hinaus erlaubt Ihnen der Paketmanager nicht, die Dateien eines Pakets bei der Installation eines anderen zu überschreiben. Im Allgemeinen kann es viele nützliche Dinge bewirken.

Wenn Sie aus Unwissenheit/Faulheit make install aus den Anweisungen kopiert und eingefügt haben, dann Es erscheinen Dateien auf dem System, von denen der Paketmanager nichts weiß. Mit allem, was es bedeutet, wenn Ihnen das, was zuvor aufgeführt wurde, nicht ausreicht.

Was zu tun ist?

Sie können den Quellbaum natürlich so konfigurieren, dass alles irgendwo in /opt/mycoolapp/ installiert ist, und ihn dann bei Bedarf manuell löschen, aber hier können viele unangenehme Dinge ans Licht kommen, angefangen damit, dass die Das Programm erwartet, dass es Ihre Bibliotheken laden kann, und der Lader weiß nichts über das Verzeichnis, in dem sie sich befinden. Dies endet damit, dass der Programmautor dies erwarten kann, wenn er beispielsweise eine Datei beispielsweise in $prefix/share ablegt /xsessions/, dann wird der Display-Manager es übernehmen. Ganz zu schweigen von den Pfaden für pkgconfig und so weiter.

Sie müssen das Paket also abholen.

Ich habe keine Zeit, mich damit herumzuschlagen, ich mache besser noch einmal „make install“, alles ist einfach und klar!

Beruhige dich. Er ist an unsere Beine gefesselt. Alles ist nicht so beängstigend und kompliziert, wie es auf den ersten Blick scheint.
checkinstall
Wenn dieses wunderbare Dienstprogramm anstelle von make install gestartet wird, stellt es mehrere Fragen und erstellt und installiert anschließend das Paket. Das ist alles, wenn Sie aktualisieren, werden Sie keine Probleme damit haben, alten Müll zu beseitigen.
Erstellen Sie das Deb-Paket manuell
Wenn Sie nicht geneigt sind, einer solchen Automatisierung zu vertrauen (was manchmal immer noch zu Problemen führt) oder ein paar Änderungen vornehmen möchten, aber immer noch zu faul sind, sich mit dem normalen Prozess der Paketerstellung auseinanderzusetzen, können Sie das Paket manuell zusammenstellen. Ich stelle eine Möglichkeit vor, es für Debian-basierte Systeme zu erstellen, da ich mit ihnen am besten vertraut bin. Es ist ideologisch nicht korrekt, aber die Ausgabe ist ein völlig korrektes Paket ohne die Verwendung zusätzlicher Entitäten. Dies geschieht wie folgt.
Zuerst stellen wir die Software mit den Parametern --prefix=/usr und --exec-prefix=/usr zusammen, die für configure oder autogen.sh vorab angegeben wurden.
Als nächstes installieren wir es in einem temporären Verzeichnis. Wir schreiben:

Fakeroot make install DESTDIR=`pwd`/tempinstall
Danach erhalten wir den gesamten Dateisatz im neu erstellten Verzeichnis. Wir befinden uns jetzt übrigens in einer Fakeroot-Umgebung, d. h. Sie können den Eigentümer und die Zugriffsrechte von Dateien ohne Einschränkungen ändern, bleiben aber physisch Eigentümer des Systems. Die Software innerhalb der Fakeroot-Sitzung erhält geänderte Informationen, wodurch Dateien mit den richtigen Rechten archiviert werden können.
Als nächstes erstellen Sie ein DEBIAN-Verzeichnis im „Paketstamm“ und fügen eine Liste aller Dateien, die in /etc abgelegt werden sollen, in DEBIAN/conffiles ein:

Cd tempinstall mkdir DEBIAN finden etc | sed "s/^/\//" > DEBIAN/conffiles
Anschließend erstellen wir eine DEBIAN/control-Datei mit folgendem Inhalt:

Bei Bedarf können Sie dort auch preinst-, postinst-, prerm- und postrm-Skripte erstellen.

Das war's, wir führen dpkg -b tempinstall aus und die Ausgabe ist tempinstall.deb, das Sie mit dpkg -i korrekt installieren, aktualisieren oder entfernen können.

Der „richtige“ Prozess der vorläufigen Erstellung eines Quellcodepakets geht über den Rahmen dieses Hinweises hinaus und wird daher nicht beschrieben, ist für Ihre Zwecke jedoch normalerweise nicht erforderlich.

Abschluss

Wie Sie sehen, gibt es hier absolut nichts Kompliziertes, aber die Befolgung dieser Schritte erspart Ihnen in Zukunft eine Vielzahl von Problemen.

Oft sind die benötigten Pakete nur im Quellcode zu finden; dieser Artikel beschreibt eine Methode zum Installieren eines Pakets aus dem Quellcode.

Auspacken

Programme werden normalerweise in gepackten Archiven verteilt, das sind Dateien mit den Erweiterungen

.tar.gz (manchmal .tgz) .tar.bz2

Sie müssen den Unterschied zwischen einem Archivierer und einem Packer verstehen.

Das Programm dient der Archivierung von Verzeichnissen und Dateien Teer; Das Ergebnis seiner Arbeit ist eine Datei mit der Erweiterung .Teer. Grob gesagt handelt es sich hierbei um eine Kopie Dateisystem- Verzeichnisse und Dateien mit ihren Attributen und Zugriffsrechten, zusammengefasst in einer Datei.

Diese Datei ist etwas größer als die Gesamtgröße der archivierten Dateien. Deshalb (oder vielleicht auch aus einem anderen Grund) verwenden sie Packer – Programme, mit denen Sie die Dateigröße reduzieren können, ohne Daten zu verlieren.

Programm Teer kann auspacken, also kein Anruf nötig gunzip, oder Sie sagen es einfach dem Programm Teer dass die Datei zunächst entpackt werden muss. Zum Beispiel der Befehl

tar -xvf< some_app_name>.tar.gz

wird sofort entpackt und entpackt. Unterschied zwischen Dateien und Erweiterungen

.tar.gz

.tar.bz2

nur, dass unterschiedliche Packer verwendet wurden, das Programm Teer bestimmt die Komprimierungsmethode automatisch und es sind in diesem Fall keine zusätzlichen Optionen erforderlich.

Nach dem Entpacken müssen Sie in das resultierende Verzeichnis gehen; alle unten beschriebenen Befehle werden im Verzeichnis mit dem Quellcode des Pakets ausgeführt.

CD< имя_пакета>*

Erstellen des Pakets

Um Programme in GNU/Linux zu erstellen, verwenden Sie (meistens) das Programm machen, das Anweisungen ausführt Makefile, aber da es viele GNU/Linux-Distributionen gibt und diese alle unterschiedlich sind, müssen Sie zum Erstellen des Programms für jede Distribution separat die Pfade angeben, in denen sich die Bibliotheken und Header-Dateien befinden. Programmierer können nicht jede Distribution studieren und für jede separat erstellen Makefile. Deshalb haben sie Konfiguratoren entwickelt, die das System „studieren“ und entsprechend den gewonnenen Erkenntnissen erstellen Makefile. Aber sie hörten nicht beim Konfigurator auf und entwickelten Konfiguratoren über Konfiguratoren ... da hörten sie auf

Zum Erstellen benötigen wir Compiler: Sie werden in den Paketabhängigkeiten angegeben Build-essentiell, es reicht also aus, es mit allen Abhängigkeiten zu installieren. Immernoch gebraucht Autoconf Und Automarke.

Um also etwas aus dem Quellcode zu erstellen, müssen Sie zunächst einen Konfigurator erstellen. Wie der Konfigurator erstellt wird, ist in der Datei configure.in beschrieben. Um den Konfigurator zu erstellen, müssen Sie ihn ausführen

./ Bootstrap ./ autogen.sh

Wenn im Archiv keine derartigen Skripte vorhanden sind, können Sie die folgenden Befehle nacheinander ausführen:

aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wall

Alle diese Befehle verwenden die Datei configure.in. Nach der Ausführung dieser Befehle wird eine Datei erstellt konfigurieren. Danach müssen Sie den Konfigurator ausführen, um das Vorhandensein aller Abhängigkeiten zu überprüfen, zusätzliche Build-Optionen zu installieren (falls möglich) und das Installationsergebnis anzuzeigen (optional – möglicherweise nicht vorhanden).

./ konfigurieren

Der Konfigurator erstellt auf Basis der gewonnenen Erkenntnisse und der Datei ein Makefile makefile.am. Sie können dem Konfigurator die in den Programmquellen bereitgestellten Optionen übergeben, mit denen Sie bestimmte Programmfunktionen aktivieren/deaktivieren können; normalerweise können Sie diese mit dem Befehl herausfinden

./ configure --help

Es gibt auch eine Reihe von Standardoptionen, wie z

Präfix=

Gibt an, welches Verzeichnis für die Installation verwendet werden soll. Normalerweise für Ubuntu

--prefix =/ usr --prefix =/ usr/ local

OHNE Schrägstrich am Ende! Jetzt können Sie mit dem Befehl den Prozess der Programmerstellung selbst starten

machen

Zum Erstellen reichen normale Benutzerrechte aus. Das Ende des Builds kann als der Moment betrachtet werden, in dem die Befehle in der Konsole nicht mehr „zufällig“ ausgeführt werden und es kein Wort gibt Fehler. Jetzt ist alles kompiliert und bereit zur Installation.

Installation

Der Aufwand für eine korrekte Installation wird sich in Zukunft mehr als lohnen, wenn die installierte Software entfernt oder aktualisiert wird.

Korrekte Installation (Option Nr. 1)

Installation mit dem Dienstprogramm checkinstall. Installieren:

sudo apt-get install checkinstall

Nachteil dieser Methode: checkinstall versteht nicht alle Quellen, da der Programmautor spezielle Installationsskripte schreiben kann und checkinstall werde sie nicht verstehen.

Um ein Deb-Paket zu erstellen und zu installieren, müssen Sie es ausführen

sudo checkinstall

Richtige Installation (Option Nr. 2)

Erstellen Sie schnell manuell ein Deb-Paket.

Der Hauptunterschied zur vorherigen Methode besteht darin, dass Sie in diesem Fall das Paket manuell erstellen und alle vorgenommenen Änderungen verfolgen. Diese Methode eignet sich auch für Sie, wenn die Quellen die Erstellung des Pakets nicht unterstützen checkinstall.

    Wir installieren in einem temporären Verzeichnis, wo wir den gesamten Satz installierter Dateien erhalten:

fakeroot make install DESTDIR=`pwd`/tempinstall

    Erstellen wir ein DEBIAN-Verzeichnis im „Paketstamm“ und fügen wir eine Liste aller Dateien, die in /etc abgelegt werden sollen, in DEBIAN/conffiles ein:

cd tempinstall mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/conffiles

    Anschließend erstellen wir eine DEBIAN/control-Datei mit folgendem Inhalt:

Paket: Paketname Version: 1.2.3 Architektur: amd64/i386/armel/all Betreuer: Sie können Ihren Namen eingeben, Sie können ihn verschrotten, aber wenn Sie ihn leer lassen, wird dpkg schwören. Hängt davon ab: Hier können Sie eine Liste von Paketen eingeben durch Kommata abgetrennt. Priorität: optional Beschreibung: Sie müssen außerdem etwas eingeben, damit es keine Warnungen gibt

    Bei Bedarf können Sie dort auch preinst-, postinst-, prerm- und postrm-Skripte erstellen.

    Wir erstellen ein Deb-Paket, für das wir Folgendes ausführen:

dpkg -b tempinstall

    Die Ausgabe ist tempinstall.deb, die wir installieren

sudo dpkg -i tempinstall.deb

Installation (Option Nr. 3)

Falsche Installation

Der Nachteil dieser Methode besteht darin, dass Sie das Paket höchstwahrscheinlich nicht normal entfernen oder aktualisieren können, wenn Sie es direkt über make install installieren. Darüber hinaus wird die Installation einer neuen Version über die alte höchstwahrscheinlich Ihre Änderungen in den Konfigurationen überschreiben. make install macht genau das, was man ihm sagt: Es installiert Dateien an den richtigen Stellen und ignoriert dabei die Tatsache, dass dort bereits etwas vorhanden ist. Nach diesem Vorgang ist es absolut unmöglich, Informationen darüber, was wo platziert wurde, in verdaulicher Form zu erhalten. Manchmal unterstützt das Makefile natürlich die Deinstallationsaktion, aber das kommt nicht so häufig vor und es ist keine Tatsache, dass es richtig funktioniert. Darüber hinaus müssen Sie den entpackten Quellbaum speichern und Regeln für die Deinstallation erstellen.

Zur Installation müssen Sie Folgendes tun

sudo make install

Um ein mit dieser Methode installiertes Paket zu entfernen, müssen Sie es im Stammverzeichnis der Programmquellen ausführen (wo Sie make install ausgeführt haben).

sudo make deinstallieren

Fehler

Oftmals meldet der Konfigurator in der Konfigurationsphase, dass eine bestimmte Bibliothek fehlt. Der gemeldete Bibliotheksname stimmt nicht immer mit dem Paketnamen in Ubuntu überein. Aus eigener Erfahrung kann ich Ihnen raten, Synaptic nach dem erforderlichen Paket zu durchsuchen, mit Ausnahme des lib-Präfixes. Wenn Sie mehrere Pakete finden, die sich durch das Präfix -dev im Namen unterscheiden, müssen Sie das Paket -dev installieren (normalerweise). beinhaltet auch ein Nicht-Entwicklungspaket). Sie können auch mit http://packages.ubuntu.com/ suchen, indem Sie den Bibliotheksnamen in die Suche nach Paketinhalten eingeben. Wenn Sie dev und non-dev finden, benötigen Sie beide. Na ja, oder suchen Sie einfach bei Google.

Erforderliche Software

Pakete mit mm am Ende der Beschreibung sind Pakete für C++-Programme. Liste für BMPX, aber für fast jedes GTK2/Gnome-Programm geeignet. Wenn Sie es also nicht zusammenbauen können, schauen Sie sich diese Liste an und vergleichen Sie sie mit dem, was Sie installiert haben.

Kompilieren:Laufzeit:
Xlibx11-devlibx11-6
GlibMMlibglibmm-2.4-devlibglibmm-2.4-1c2a
GTK+libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
GTKMMlibgtkmm-2.4-devlibgtkmm-2.4-1c2a
Lichtunglibglade2-devlibglade2-0
GladeMMlibglademm-2.4-devlibglademm-2.4-1c2a
XMLlibxml2-devlibxml2
XML++libxml++2.6-devlibxml++2.6c2a
DBuslibdbus-1-dev,libdbus-glib-1-devlibdbus-1-2,libdbus-glib-1-2
Alsalibasound2-devlibasound2
HALlibhal-dev,libhal-storage-devlibhal1,libhal-storage1
Gaminlibgamin-devlibgamin0
Neonlibneon25-devlibneon25
TagLiblibtagc0-devlibtagc0
Startup-Benachrichtigunglibstartup-notification0-devlibstartup-notification0
Schublibboost-dev,libboost-filesystem-devlibboost-filesystem1.33.1
MusicBrainzlibmusicbrainz4-devlibmusicbrainz4c2a
GStreamerlibgstreamer0.10-dev,libgstreamer-plugins-base0.10-devlibgstreamer0.10-0,libgstreamer-plugins-base0.10-0

Terminal und Befehle

Sind Sie schon oft auf die Tatsache gestoßen, dass die für Ihre Architektur erforderliche Version einer Anwendung einfach nicht in der Ubuntu-Distribution verfügbar ist, dieses Programm jedoch auf der Website der Entwickler in Form von Quellcode im .tar.gz-Archiv verfügbar ist? Ich denke, viele Leute kennen diese Situation, aber nicht jeder suchte weiterhin nach Möglichkeiten, dieses Problem zu lösen, sondern suchte einfach nach einem anderen Analogon der Anwendung oder einer etwas älteren Version und arbeitete weiter.

Ich möchte sofort ein paar Worte für Linux-Neulinge hinzufügen: Bevor Sie irgendetwas aus diesem Artikel tun, studieren Sie gründlich das Terminal und die Befehle, die für die Arbeit damit verwendet werden, lesen Sie Mana oder Materialien im Internet.

  • Für Anwendungs-Builds Wir benötigen natürlich Entwicklertools, in unserem Fall einen Compiler und andere Begleitprogramme; die Hauptarbeit wird natürlich das Make-Dienstprogramm erledigen, und Befehlszeile(das Terminal) wird wie unsere Küche sein, in der wir sein werden vorbereiten/zusammenbauen/installieren unsere Anwendung aus der Quelle. Unter Linux ist das Terminal standardmäßig verfügbar. Zu Ihrer Bequemlichkeit können Sie natürlich jedes andere, funktionalere Terminal installieren, das Sie gewohnt sind. Ich verwende zum Beispiel Guake. Es gibt viele Möglichkeiten im Vergleich zum Standard-Terminal, wo es verfügbar ist Einfach zu konfigurierende Kopier- und Einfügebefehle oder beliebigen Text mit STRG+C, STRG+V und vielem mehr, was die Arbeit mit der Konsole komfortabler macht.
  • 1. Wenn Sie Anwendungen aus dem Quellcode erstellen, müssen Sie natürlich mit dem Herunterladen der Anwendung im tar.gz- oder tar.bz2-Archiv beginnen. In meinem Fall ist dies beispielsweise die Anwendung Gimp 2.9.2, in unserem Fall jedoch die Das Archiv liegt nicht im tar.gz-Format und nicht im tar.bz2-Format vor. Das macht keinen Unterschied. Laden Sie es anschließend herunter Rechtsklick Maus durch das Archiv - Hier entpacken.

Dies ist wahrscheinlich die erste Phase. Was machen wir als nächstes? Und dann starten wir das Terminal und gehen zu unserem entpackten Ordner mit Dateien:

CD /home/linux/Downloads/gimp-2.9.2/ ls

  • 2. Bevor Sie mit der Vorbereitung des Quellcodes für die Assemblierung beginnen, empfehle ich Ihnen, zunächst die INSTALL-Datei zu öffnen und sich mit ihr vertraut zu machen. Sie finden darin viele nützliche Informationen Diese Datei beschreibt, wie man die Anwendung installiert, welche Befehle ausgeführt werden müssen und vieles mehr. Jetzt rate ich Ihnen, ein zusätzliches Paket namens auto-apt zu installieren, das Ihnen viele Routinearbeiten abnimmt.
sudo apt-get install auto-apt

Was bedeutet es für mich, viele Routinearbeiten zu erledigen, fragen Sie sich, wenn Führen Sie die Konfiguration der Anwendungsquelle aus mit dem Präfix dieses Pakets, zum Beispiel in der Form:

Auto-apt -y run ./configure

Natürlich können Sie die Konfiguration auch ohne die Hilfe dieses Pakets durchführen und einfach den Befehl ausführen:

./konfigurieren

Wenn Sie die Konfiguration mit dem Präfix -auto-apt -y run durchführen, dann Vorbereiten von Quellen für die Montage erfolgt automatisch, das heißt, dieser Befehl kann automatisch alles für Sie herunterladen und installieren notwendigen Dateien und Bibliotheken und wird alles zufriedenstellen Abhängigkeiten was erforderlich sein wird.

  • 3. Wann echte Arbeit Nicht alles ist so glatt, vielleicht wird in einem Fall alles gut gehen und Phase der Vorbereitung des Quellcodes für die Assemblierung Es wird ohne Fehler verlaufen, aber in anderen Fällen, und das sind wahrscheinlich die meisten, werden Sie auf Fehler verschiedener Art stoßen, zum Beispiel, wenn von dem einen oder anderen Paket nicht genug für die weitere Vorbereitung des Quellcodes vorhanden ist. In den meisten Fällen wird der Name des fehlenden Pakets geschrieben.

Wir versuchen das fehlende Paket mit dem Befehl zu installieren:

Sudo apt-get install Paketname

Für den Fall, dass beim Ausführen des obigen Befehls ein Paket nicht erkannt wird, hilft mir sehr oft die folgende Kombination: Wir suchen nach Paketen, die uns im Cache fehlen:

Apt-Cache-Suche Paketname

  • Nachdem Sie diesen Befehl ausgeführt haben, finden Sie möglicherweise ein geeignetes Paket. Es kommt häufig vor, dass Sie kein geeignetes Paket finden, aber Sie können eine exakte Kopie des Pakets finden, aber mit Dev-Präfix das heißt, ein Paket wie Paketname-Entwickler und Sie können es verwenden, um Abhängigkeiten zu erfüllen.
  • 4. Nach erfolgreichem Abschluss der Konfiguration der Quellen für den Build empfiehlt es sich, das Paket zu installieren checkinstall Dies erleichtert die Zusammenstellung eines Anwendungspakets für Ihre Distribution.
sudo apt-get install checkinstall

Installieren Sie das Paket, dann können Sie den Befehl ausführen:

Checkinstall -D

  • Attribut -D erstellt ein Deb-Paket, Attribut -R erstellt ein RPM-Paket, das in den Distributionen von Fedora, RHEL, ASP Linux, ALT Linux, Mandriva, openSUSE verwendet wird, außerdem gibt es ein zusätzliches Attribut -S Dadurch wird ein in Slackware verwendetes Paket erstellt.

In meinem Fall verwende ich Ubuntu und habe den Befehl mit ausgeführt Attribut -D, dann werden wir die Anwendung in ein fertiges Deb-Format-Paket zusammenstellen, wir benötigen zum Beispiel einige klärende Daten, wie zum Beispiel das Hinzufügen einer Beschreibung zum Paket, da Sie es zusammenstellen und dementsprechend die Beschreibung völlig sauber ist und Sie werden gewissermaßen aufgefordert, kurz zu erläutern, um welche Art von Anwendung es sich wofür handelt. In meinem Fall werden, wie ich überprüft habe, auch die folgenden Felder automatisch ausgefüllt:

1 – Zusammenfassung: [ EOF ] 2 – Name: [ gimp ] 3 – Version: [ 2.9.2 ] 4 – Veröffentlichung: [ 1 ] 5 – Lizenz: [ GPL ] 6 – Gruppe: [ checkinstall ] 7 – Architektur: [ i386 ] 8 – Quellort: [ gimp-2.9.2 ] 9 – Alternativer Quellort: 10 – Erfordert: 11 – Bietet: [ gimp ] 12 – Konflikte: 13 – Ersetzungen:

  • Wie Sie sehen, wird vor dem Build überprüft, ob die Konfiguration erfolgreich abgeschlossen wurde, ob es nicht erfüllte Abhängigkeiten oder andere Konflikte gibt; wenn alles in Ordnung ist, wird das Paket ohne Probleme erstellt.

Ich habe es zuvor installiert, ohne das Paket zu erstellen, und die folgenden Befehle ausgeführt:

Make make install

Wenn Sie löschen möchten installierte Anwendung, sollten Sie den folgenden Befehl ausführen:

Führen Sie eine Deinstallation durch

Der obige Befehl löscht automatisch diejenigen, die sich auf die von Ihnen installierte Anwendung beziehen, und wirkt sich nicht auf Dritte aus. Es wird empfohlen, keine Verzeichnisse zu durchsuchen und die Anwendung aus demselben Anwendungsverzeichnis auszuführen, in dem Sie gearbeitet haben, d. h. die Konfiguration vorbereitet haben , usw.

Obwohl alles ohne Fehler verlief, hat der gesamte Vorgang sehr lange gedauert, etwa 20 Minuten, bis ich Gimp aus dem Quellcode installiert habe, ich habe es geschafft, Kaffee zu kochen und auch den Installationsvorgang zu beobachten, aufgrund der Tatsache, dass alles sehr lange dauert dass es viele davon gibt verschiedene Ordner Verteilen Sie die Quelldateien der Anwendung. Jede Datei hat ihren eigenen Zweck und muss sich in einem bestimmten Verzeichnis befinden. Nach der Ausführung von make install werden also Tausende von Quelldateien in den erforderlichen Verzeichnissen installiert.

So funktioniert die Installation einer Anwendung aus dem Quellcode. Ja, auf den ersten Blick ist nicht alles so einfach. Ich habe nicht gesagt, dass es einfach sein würde, aber wenn Sie es versuchen, entwickelt es Ihr Denken und Ihre Lösungswege sehr gut eine gegebene Situation, die sogar sehr gut ist.

Das ist wahrscheinlich alles. Wenn Sie Fragen zu dem oben genannten Material haben oder bei der Installation Fehler festgestellt haben, fragen Sie in den Kommentaren zum Material nach. Wir werden gemeinsam nach einer Lösung suchen.