Ports Installation

LeoLinux

Well-Known Member
Hi,

ich würde die gerne die Installation von Ports durch ein Script etwas automatisieren.

Normalerweise verwendet man bei Ports-Installationen ja:
Code:
make install clean

Nun, was aber, wenn ein Dialog mit Optionen erscheint? Nach etwas Googlen bin ich auf folgendes gestoßen:
Code:
make CONFIGURE_ARGS+= --enable-finger --enable-fsp --enable-256-colors inatall clean

Genau nach so etwas in der Art habe ich gesucht um dem Bauvorgang von vorneherein die nötigen Optionen mitzugeben, so dass ein folgender Dialog nicht mehr erscheint.
Leider funktioniert dies wohl nicht so wie gewünscht.

Hat mir jemand ne Idee was ich da falsch mache?

Danke
 
Uaargh!

Wenn du Glück hast, bewirkt das gar nichts. Den Rest will ich mir gar nicht vorstellen.

Was du da hast ist wahrscheinlich ein Workaround, der spezifisch für eine bestimmte Version eines bestimmten Ports gedacht war.

Fang' besser mal ganz von vorne mit ports(7) an. Dann nimmst du dir ein Werkzeug wie portmaster oder pkg_upgrade vor.
 
Moin!

make CONFIGURE_ARGS+= --enable-finger --enable-fsp --enable-256-colors inatall clean

Wenn das tatsächlich so da steht, möchtest Du wahrscheinlich aus dem 'inatall' ein 'install' machen.

Was anderes weiss ich jetzt nicht.

Viele Grüße
swaf
 
@Kamikaze: Wieso?? Ich verstehe nicht ganz. Der ganze Sinn und Zweck der Sche ist, dass ich ein Script habe, welches mir jede Menge Ports installieren soll ... ich möchte aber nicht davorsitzen und jedes Mal die ganzen Optionen wieder von Hand einhacken ... Das muss doch auch irgendwie schöner zu lösen sein ... was geht mit der /etc/make.conf?

@swafskari: funktioniert dennoch nicht ... der Dialog erscheint dennoch und erwartet interaktion UND Option wurde nicht berücksichtigt ... ;/
 
@SolarCatcher: Danke, daran habe ich bereits auch schon mein Glück versucht. Leider auch ohne Erfolg ...

So sah meine /etc/make.conf aus:

Code:
CONFIGURE_ARGS= --without-ruby \
                --without-guile \
                --without-lua \
                --without-perl \
                --enable-fastmem \
                --without-idn \
                --enable-html-highlight \
                --enable-exmode \
                --enable-smb \
                --enable-fsp \
                --enable-ftp \
                --enable-nntp \
                --enable-bittorrent \
                --enable-gopher \
                --enable-finger \
                --enable-cgi \
                --enable-xbel \
                --enable-256-colors \
                --enable-88-colors \
                --disable-sm-scripting \
                --without-spidermonkey \

und dann bin ich wieder zurück in den Port:

Code:
cd /usr/ports/www/elinks
make install clean

lief aber dennoch wie immer .. ;( keine Veränderung ...
 
Bin mir nicht sicher aber ich könnte mir vorstellen dass
Code:
env BATCH=YES make install clean
funktioniert, wenn du es unbeding per script machen möchtest.

lg
Florian
 
@Florian: Klasse, jetzt fängt er wenigstens schon einmal direkt an zu bauen, ohne erst noch einen Options-Dialog zu zeigen. Doch leider scheint er die angegebenen Optionen nicht mit reinzukompilieren, denn mein Test nach dem Kompilieren mit "make config" zeigte mir, dass die eLinks Configuration noch immer unangerührt ist ... un normalerweise lässt es die mit reinkompilierten Optionen angekreuzt für eventuelle Upgrades/Reinstalls ...

Muss ich das:
Code:
env BATCH=YES make install clean
vielleicht nicht irgendwie auf dei /etc/make.conf aufmerksam machen?
 
Zuletzt bearbeitet:
@LeoLinux:
Ne, so eine Syntax findest Du in dem verlinkten Wiki-Artikel nicht.

Statt sowas wie
Code:
--enable-ipv6
schreibst Du
Code:
WITH_IPV6 = yes

Üblicherweise wird auch nur geprüft, ob eine Variable gesetzt ist. Das heißt i.d.R. sollte da nie stehen WITH_IRGENDWAS=no. Wenn es eine negative Variante gibt, lautet die üblicherweise WITHOUT_IRGENDWAS=yes, z.B. in Deinem Fall
Code:
WITHOUT_PERL=yes

Hoffe, das hilft. Ansonsten: Lies Dir noch einmal die Wiki-Seite von oben bis unten durch. Vielleicht wird es dann klarer.

Viel Glück
SolarCatcher
 
Auch da scheint ihm noch irgendwas nciht zu passen .. ;(


Code:
server [/usr/ports/www/elinks]$ cat /etc/make.conf 
CONFIGURE_ARGS= WITHOUT_FTP = yes \
                WITH_SMB = yes

server [/usr/ports/www/elinks]$ make -V CONFIGURE_ARGS
WITHOUT_FTP = yes  WITH_SMB = yes --without-ruby --without-guile --without-lua --without-perl --enable-fastmem --without-idn --enable-html-highlight --enable-exmode --disable-smb --disable-fsp --enable-ftp --disable-nntp --disable-bittorrent --disable-gopher --disable-finger --disable-cgi --disable-xbel --enable-256-colors --enable-88-colors --disable-sm-scripting --without-spidermonkey --prefix=/usr/local ${_LATE_CONFIGURE_ARGS}

server [/usr/ports/www/elinks]$ make config

                                           ┌────────────────────────────────────────────────────────────────────┐
                                           │                    Options for elinks 0.11.7                       │  
                                           │ ┌────────────────────────────────────────────────────────────────┐ │  
                                           │ │ [X] 88COLORS      Enable 88 color support                      │ │  
                                           │ │ [X] 256COLORS     Enable 256 color support                     │ │  
                                           │ │ [ ] SPIDERMONKEY  Enable ECMAScript support (via SpiderMonkey) │ │  
                                           │ │ [ ] XBELMARKS     Enable XBEL bookmarks (via expat)            │ │  
                                           │ │ [ ] LOCAL_CGI     Enable local CGI support                     │ │  
                                           │ │ [ ] FINGER        Enable finger protocol support               │ │  
                                           │ │ [ ] GOPHER        Enable gopher protocol support               │ │  
                                           │ │ [ ] BITTORRENT    Enable BitTorrent protocol support           │ │  
                                           │ │ [ ] NNTP          Enable NNTP (News) protocol support          │ │  
                                           │ │ [X] FTP           Enable FTP protocol support                  │ │  
                                           │ │ [ ] FSP           Enable FSP protocol support (via fsplib)     │ │  
                                           │ │ [ ] SMB           Enable SMB protocol support (via smbclient)  │ │  
                                           │ │ [X] EXMODE        Enable exmode (CLI) support                  │ │  
                                           │ │ [X] HIGHLIGHT     Enable HTML highlighting using DOM engine    │ │  
                                           │ │ [ ] IDN           Enable international domain name support     │ │  
                                           ├─└─────v(+)───────────────────────────────────────────────────────┘─┤  
                                           │                       [  OK  ]       Cancel                        │  
                                           └────────────────────────────────────────────────────────────────────┘
 
@Florian88: Naja ... ;/ ... bei genauerem Hinschauen wird klar, dass er WITH_SMB = yes als auch --disable-smb in der einen Zeile hat ... ich könnte auch XZY in die make.conf schrieben und er würde es mit auflisten ..... ;(

Ich habe den Wiki - Eintrag weiter studiert - steige aber einfach nicht dahinter ....
 
Vermutlich, weil Du auf Deiner eigenen Syntax bestehst. Versuch es doch mal so wie exakt hier vorgeschlagen:
Code:
.if ${.CURDIR:M*/ports/*} && !${.CURDIR:M*/work/*}

WITHOUT_FTP = yes
WITH_SMB = yes

.endif

und lass die "CONFIGURE_ARGS" einfach weg.

Dann sollte es klappen.
 
Finger weg von CONFIGURE_ARGS!

GEFÄHRLICH

Geht's noch deutlicher?

Und CONFIGURE_ARGS hat auch nichts damit zu tun irgendetwas automatisch zu konfigurieren.

portmaster liefert dir die Konfigurationsdialoge alle auf einmal, danach kannst du das dann in Ruhe laufen lassen.
 
Ich hätte aber gerne GAR KEINE Dialoge mehr, denn ich möchte die Optionen alle aus einem Script einspielen.

Was bedeuted eigentlich dieses: env BATCH=YES make install clean ??
 
Ok, das war schon mal sehr hlfreich. Nun, wie gehe ich dann jetzt vor um meine in der make.conf eingetragenen Optionen auf das Kompilieren anzuwenden? Und das ohne, dass ein Dialog auftaucht? Denn, wie ich das gerade feststelle überschreibt mir das BATCH=YES meine in der make.conf eingetragenen/abgeänderten Optionen ... ?!
 
Denn, wie ich das gerade feststelle überschreibt mir das BATCH=YES meine in der make.conf eingetragenen/abgeänderten Optionen ... ?!
Mit was überschreibt "BATCH=YES" deine in der make.conf eingetragenen/abgeänderten Optionen? Was für Optionen hast Du in der make.conf eingetragen? Ist die make.conf der richtige Ort für deine Optionen?
 
Wenn ich dir die Fragen alle beantworten könnte würde ich hier keine mehr stellen ;)

Also, ich teste das ganze gerade mit dem Apachen 2.2.13 aus den Ports.

Hier mein Vorgehen:

1. cd /usr/ports/www/apache22/ && make deinstall && make clean && make rmconfig

2. cat /etc/make.conf
Code:
######################
# Apache22 - OPTIONS #
######################
.if${.CURDIR:M*/ports/www/apache22}
WITHOUT_IPV6=   yes
WITH_SUEXEC=    yes
WITH_CGID=      yes
.endif

3. env BATCH=YES make install clean ;

4. Mit dem Befehl "httpd -V" lasse ich mir anzeigen was sich verändert hat.
Code:
Server version: Apache/2.2.13 (FreeBSD)
Server built:   Feb 23 2010 07:23:33
Server's Module Magic Number: 20051115:23
Server loaded:  APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr/local"
 -D SUEXEC_BIN="/usr/local/bin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="/var/run/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="/var/log/httpd-error.log"
 -D AP_TYPES_CONFIG_FILE="etc/apache22/mime.types"
 -D SERVER_CONFIG_FILE="etc/apache22/httpd.conf"

^^ Hier sehe ich z.B., dass das without IPv6 hingehauen hat, denn letztes Mal wurde das auch ncoh mit aufgelistet. Doch das mit dem CGID und SUEXEC will einfach nciht hinhauen - Es scheint als ob alles außer IPv6 ignoriert wird ... ;(
 
Vielleicht solltest Du die Optionen an eine andere Stelle schreiben. Versuch mal:
Code:
cd /usr/ports/www/apache22
make config
 
??? make config öffnet mir doch nur wieder den Options-Dialog?! Ich verstehe nciht worauf du hinaus willst? Ich möchte doch komplett weg von dem Dialog und hin zur Automatisierung - WITHOUT_INTERACTIVITY=yes ;)
 
[...] Ich möchte doch komplett weg von dem Dialog und hin zur Automatisierung - WITHOUT_INTERACTIVITY=yes ;)
Was ist der Unterschied zwischen der einmaligen Eingabe der Optionen im Dialog und dem einmaligen Bearbeiten der make.conf?
Sind zusätzliche Optionen als in der "Makefile.options" durch den maintainer festgelegt, möglich? Siehe hier: klick. Wenn ja, wie macht man das?
 
Die Sache ist einfach die, dass ich ein Script habe das mir VIEL Software installiert ... darunter auch PHP, Apache MailServer etc. ... Fakt ist einfach, dass ich nciht da sitzen möchte um auf Dialoge zu warten .... zudem kann ich mir und möchte ich mir nicht merken müssen, was ich bei PHP jetzt alles für Extensions aktivieren uss damit wieder alles läuft. Ich möchte das alles bereits im Script haben und dann bei einer Installation nur noch auf mein Script zurückgreifen .. starten ... abwarten ... und freuen.
Mein Ziel ist es also von der Dialogbox wegzukommen - Was ich soweit auch schon beinahe geschaft habe .... ich teste gerade noch ....
 
.... Wenn wir schon mal von Makefile.options sprechen .... könnte ich da im Prinzip nicht awk oder sed verwenden um das entpsrechend zu manipulieren und dann make install clean?
 
Zurück
Oben