
Ich installiere nginx
einen Server und muss ihn verteilen. Der Endbenutzer kann ihn also von jedem beliebigen Verzeichnis aus ausführen. Meine nginx
ausführbare Datei ist mit meinem Pfad, den ich bei der Kompilierung erhalten habe, fest codiert.
Wie macht man das portabel?
BEARBEITEN:
wenn ich Änderungen in dieser nginx
ausführbaren Datei vorgenommen habe, startet sie nicht, sondern wirft Fehler wieSegmentierungsfehler: Core-Dump. Bitte helfen Sie, das Problem zu lösen.
Antwort1
Mir fallen vier Optionen ein: -
- Codieren Sie die Anwendung so, dass sie relative Verzeichnisse verwendet, und geben Sie an, dass sie vom Kopf des Datenverzeichnisbaums aus gestartet werden soll.
- Geben Sie an, dass Umgebungsvariablen zum Definieren der Datenspeicherorte festgelegt werden sollen (Sie können einen relativen Pfad vom
$HOME
Verzeichnis verwenden, wenn Sie keine neuen, expliziten Variablen definieren möchten). - Verwenden Sie eine
.app
oder.config/app
Konfigurationsdatei, um die Speicherorte anzugeben. - Code mit einem festen Verzeichnispfad und Angabe, dass an dieser Stelle ein symbolischer Link erstellt werden soll, der auf die realen Speicherorte verweist.
Was Ihren Segmentierungsfehler betrifft, scheint es, dass Sie eine Fehlerprüfung verpasst haben (z. B. sicherzustellen, dass ein Dateizeiger nicht null ist).