programm distribution - installationsroutine ?
-
hallo!
hab ein kleines programm geschrieben, das ich zum download anbieten möchte.sollte das eine installationsroutine haben? wie macht man sowas? oder is egal.
-
Unter Linux sind Installationsroutinen in dem Sinne eher unüblich. Stell den Code einfach als .tar.gz online und sorg dafür, dass man es mit ./configure && make && sudo make install installieren kann :). Wenn du dir noch ein bisschen mehr Mühe machen willst, dann biete noch fertige Pakete an (.deb, .rpm).
-
und wenn du keinen source code rausgeben willst pack das binary in den tarball und mach ein README dazu wo drinsteht welche libraries in welchen versionen auf dem system vorhanden sein müssen (oder bau es statisch).
-
./configure && make && sudo make install
ein gutes makefile reicht auch. die autotools sind oft recht nervig.
-
rpm?
ist jetzt nicht apt populär?
-
ganz schön viel aufwand, das ist nur eine von mindestens drei seiten:
http://gd.tuwien.ac.at/opsys/linux/dlhp/HOWTO-test/DE-RPM-HOWTO-7.htmloojeeee
-
rpm? schrieb:
rpm?
ist jetzt nicht apt populär?Darum schrieb rüdiger ja auch "(.deb, .rpm)".
eyjou: Wenn das Programm nur klein ist und Du keine Autotools brauchst, dann mach einfach ein Makefile und dokumentiere die Abhängigkeiten zumindest gut; Hauptsache, man braucht nicht mehr als "make" zum kompilieren. Wenn das dann ein paar Leute verwenden, kannst Du immernoch ein vernünftiges Setup basteln (Distropakete und Source-Tarballs inklusive).
-
eyjou schrieb:
ganz schön viel aufwand, das ist nur eine von mindestens drei seiten:
http://gd.tuwien.ac.at/opsys/linux/dlhp/HOWTO-test/DE-RPM-HOWTO-7.htmloojeeee
Laß das mit RPM lieber bleiben, sowas ist viel zu distributionsspezifisch. Ein, sagen wir mal, auf Fedora gebautes RPM-Paket muß auf SuSE noch lange nicht funktionieren, von Debian-basierten Systemen mal ganz zu schweigen. Sowas macht nur Sinn, wenn du Zeit und Lust hast, für alle größeren Distributionen eigene Pakete zu bauen, und diese natürlich jeweils auch entsprechend zu testen.
Die "richtigen" Lösungen wurden oben schon genannt. Wenn du das Programm mit Code auslieferst, dann laß es einfach von den Nutzern selbst bauen. Ob das mit Autotools, SCons oder einfach nur Make passiert, ist letztlich egal.
Oder eben du bietest einen Tarball mit Binaries an, der einfach nur in ein Verzeichnis entpackt werden muß.
-
ja, das programm ist relativ klein. sind da 10 *.c und 10 *.h dateien, zusammen ca. 40 kb, kommen mit den standard bibliotheken aus.
die idee mit dem makefile und den binaries werde ich mal weiter verfolgen. wo lässt man make die fertige binary erstellen, im aktuellen verzeichnis des benutzers oder gibt es da standard-vorgaben?
-
eyjou schrieb:
wo lässt man make die fertige binary erstellen, im aktuellen verzeichnis des benutzers oder gibt es da standard-vorgaben?
Das kommt drauf an, was in dem Makefile steht ;). Meistest ist das aber einfach das Verzeichnis, aus dem Make aufgerufen wurde (und in dem auch der Code liegt).
Installiert wird dann mit einem eigenen Install-Target in dem Makefile. Nur mal als Beispiel, wie sowas in etwa aussehen kann:
PREFIX = /usr/local CFLAGS = -W -Wall -O2 LIBS = -lwasauchimmer OBJS = foo.o bar.o baz.o BIN = meinprogramm all: $(BIN) $(BIN): $(OBJS) gcc -o $(BIN) $(OBJS) $(LIBS) %.o: %.c gcc -c -o $@ $(CFLAGS) $*.c clean: rm -f $(BIN) $(OBJS) install: $(BIN) /usr/bin/install -m 755 $(BIN) $(PREFIX)/bin
Einfach nur "make" baut das Binary, "make install" installiert es nach /usr/local/bin (was der Standard-Pfad sein sollte). Mit "make PREFIX=/usr install" könnte der Nutzer es stattdessen nach /usr/bin installieren.
-
aah, super, das gucke ich mir mal genauer an.
danke!