Fragen zum Portsystem

Den Portstree sharen ist generell eine gute Idee, unter der Voraussetzung, dass man die Arbeitsverzeichnisse lokal hält. Dies läßt sich, wie marzl bereits schrieb, in der make.conf konfigurieren (allerdings heißt es nicht WORKDIR sondern WRKDIR!):

Code:
# WRKDIRPREFIX  - The place to root the temporary working directory
#                                 hierarchy.
#                                 Default: none
# WRKDIR                - A temporary working directory that gets *clobbered* on clean
#                                 Default: ${WRKDIRPREFIX}${.CURDIR}/work

Setzt man WRKDIRPREFIX=/tmp in der make.conf wird beispielsweise kdelibs3 in /tmp/usr/ports/x11/kdelibs3/work compiliert.

Auf diese Weise könnte man beispielsweise auf allen Maschinen den Portstree sogar read-only mounten. Welche Architektur die Maschinen haben (sparc, i386, etc) ist dabei völlig egal, da sich der Portstree bei den unterschiedlichen Architekturen nicht unterscheidet.
 
Jetzt haben zwar schon drei hier gepostet, was man beim sharen der ports-Trees beachten muss, aber trotzdem will ich meinen Senf auch noch dazu geben.
Ich mache es auch und es funktioniert prächtig und dank automounter geht das alles elektrisch.

Gruß c.
 
markus schrieb:
Welche Architektur die Maschinen haben (sparc, i386, etc) ist dabei völlig egal, da sich der Portstree bei den unterschiedlichen Architekturen nicht unterscheidet.
Außer der gute alte INDEX, welcher sich auch zwischen den einzelnen Versionen unterscheidet, aber wer braucht schon den INDEX :)
 
Steve` schrieb:
...
Ich wüßte auch nicht, wo ein Problem entstehen könnte, wenn zwei gleichzeitig die gleiche Datei saugen. Diesbezüglich bitte ich um Erläuterungen.
...
Das Problem hatte ich mal, da hat erst der eine "portupgrade -RNO xxx" ein grosses Source-File eines Ports aus den Abhängigkeiten gesaugt und als er schon fast fertig war hat der andere "portupgrade -RNO yyy", der die gleiche Abhängigkeit auflösen wollte und feststellen musste das die Quersumme nicht stimmt ebenfalls mit dem Download begonnen und dabei den fast fertigen Download des ersten zu nichte gemacht.


@markus
Ja, "WRKDIRPREFIX=/tmp" ist ne klasse Idee! Hätte ich früher wissen sollen!!! :D
 
Dazu hätte ich auch mal eine Frage:
Ich habe mir FreeBSD installiert und finde es soweit relativ problemlos mit pkg_add Programme zu installieren.

Wenn ich mir dann aber z.B. bei freshports.org ein Programm, z.B. exim raussuche steht dort exim Version 4.60. Wenn ich dann den pkg_add Befehl aufführe bekomme ich aber nur exim Version 4.52, weil nur diese Version mit "pkg_add -r exim" via ftp herunterzuladen ist.

Wie komme ich dann aber mit pkg_add an die aktuelle version 4.60? Bei freshports wird sie aufgelistet, auf ftp.freebsd.org ist sie aber nicht zu finden.

Ich bin gerade etwas ratlos und hoffe mir kann jemand einen Tipp geben ...
 
Xmasman schrieb:
Dazu hätte ich auch mal eine Frage:
Ich habe mir FreeBSD installiert und finde es soweit relativ problemlos mit pkg_add Programme zu installieren.

Wenn ich mir dann aber z.B. bei freshports.org ein Programm, z.B. exim raussuche steht dort exim Version 4.60. Wenn ich dann den pkg_add Befehl aufführe bekomme ich aber nur exim Version 4.52, weil nur diese Version mit "pkg_add -r exim" via ftp herunterzuladen ist.

Wie komme ich dann aber mit pkg_add an die aktuelle version 4.60? Bei freshports wird sie aufgelistet, auf ftp.freebsd.org ist sie aber nicht zu finden.

Ich bin gerade etwas ratlos und hoffe mir kann jemand einen Tipp geben ...
Am besten machst Du das mit dem Ports-Tree!

Ich gehe mal davon aus, das Du den bei der Installation mit installiert hast (ist in jedem Fall Ratsam!). Als erstes aktualisierst Du den mal. Dazu nimmst Du am sinnvollsten unter FreeBSD "cvsup" (unter NetBSD bevorzuge ich cvs):
pkg_add -r cvsup-without-gui

Ist das installiert, dann die Konfigurationsdatei erstellen:
vi /root/cvsupfiles_ports.txt
#*default host=cvsup.FreeBSD.org
#*default host=cvsup.uk.FreeBSD.org
*default host=cvsup.de.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs
*default tag=.
*default delete use-rel-suffix
*default compress
ports-all

So, jetzt kannst Du Dir Deinen Ports-Tree aktuallisieren:
cvsup -g /root/cvsupfiles_ports.txt

Wenn das durch ist kannst Du Dir die neueste Version von "exim" installieren, die auf FreeBSD getestet wurde. Dazu würde ich Dir aber dringend ans Herz legen, verwende "portupgrade", damit auch die Abhängigkeiten bei Updates und Installationen berücksichtigt werden!!!! Sonst kannst Du Dir böse Effekte einhandeln!
Dazu installierst Du erstmal "portupgrade":
cd /usr/ports/sysutils/portupgrade/ && make install clean

Sollte das aus irgendeinem Grund nicht funktionieren (glaube ich aber nicht) dann mach es mit "pkg_add -r portupgrade".

So, jetzt bist Du bereit!

Als erstes musst Du die PKG-Database erstellen/fixen:
pkgdb -F
Werden hier irgendwelche PKG's benötigt, die nicht installiert sind, installiere sie. Starte anschliessend pkgdb neu. Sollte "pkgdb -F" ohne Rückfragen durchlaufen, ist meist alles OK. Jetzt kannst Du "portupgrade" in vollem Umfang einsetzen.
Als erstes willst Du Dein "exim" installieren:
portupgrade -RNO mail/exim

Du kannst aber auch einen anderen Exim-Port verwenden, z.B.:
mail/exim-ldap2
mail/exim-mysql
mail/exim-postgresql
mail/exim-sqlite


Willst Du mal ein PKG (z.B. Exim) updaten, kannst Du entweder genau den gleichen Aufruf Portupgrade-Aufruf starten (mache ich so, ist ein Versionsnummernunabhängiger Aufruf) oder Du verwendest den richtigen PKG-Namen:
portupgrade -RNO exim-4.52

Willst Du einmal ALLE PKG's updaten, dann geht das für einen TESTDURCHLAUF so:
portupgrade -RNOan

Und für den Ernstfall so:
portupgrade -RNOa


Ich hoffe das hilft Dir und Überfordert Dich nicht gleich... :D
 
Vielen Dank für die ausführliche Antwort. Ich hoffe mal nicht, dass mich das überfordern wird. Ich habe gerade noch einen uralten Server unter Mac OS X laufen, auf dem ich die ganze Serversoftware alle mal selbst kompiliert und eingerichtet hatte. Ging auch, war nur recht aufwändig. Ich werde es nach Deiner Anleitung ausprobieren und dann berichten.

Wenn ich das also richtig verstehe, dann bekomme ich die bei freshports gelistete Version nur, wenn ich die Programme via Ports installiere (ich glaube ich habe irgendwo gelesen, das ich in einer options o.ä. Datei noch Optionen zum Kompilieren mitgeben kann, die ich sonst via "./configure --irgendwas" festlege? Wenn ich nur make oder make install eingebe wird daraus ja das Standard-Build werden nehme ich mal an.
Für exim wollte ich gerne die exiscan Optionen benutzen zusammen mit mysql.

Die pkgs sind also immer etwas hinterher, auch wenn bei freshports der pkg_add Befehl mit angegeben wird? Darum also freshPORTS ;-)
z.B. "pkg_add -r apache22" funktionierte dann auch nicht, weil es das pkg auf ftp.freebsd.org gar nicht gab.
 
Xmasman schrieb:
Vielen Dank für die ausführliche Antwort. Ich hoffe mal nicht, dass mich das überfordern wird. Ich habe gerade noch einen uralten Server unter Mac OS X laufen, auf dem ich die ganze Serversoftware alle mal selbst kompiliert und eingerichtet hatte. Ging auch, war nur recht aufwändig. Ich werde es nach Deiner Anleitung ausprobieren und dann berichten.
:)


Xmasman schrieb:
Wenn ich das also richtig verstehe, dann bekomme ich die bei freshports gelistete Version nur, wenn ich die Programme via Ports installiere (ich glaube ich habe irgendwo gelesen, das ich in einer options o.ä. Datei noch Optionen zum Kompilieren mitgeben kann, die ich sonst via "./configure --irgendwas" festlege? Wenn ich nur make oder make install eingebe wird daraus ja das Standard-Build werden nehme ich mal an.
Für exim wollte ich gerne die exiscan Optionen benutzen zusammen mit mysql.
Du kannst für ein einfaches "make BATCH=yes install clean"
die globalen Parameter in der "/etc/make.conf" eingeben. Ich habe in meiner nur folgendes selber eingetragen:
LOCALIZED_LANG=de
WRKDIRPREFIX=/var/tmp

Wenn man "WRKDIRPREFIX" hier mitdefiniert, dann muss man nicht immer "make clean" machen, sondern kann (in diesem Fall) mit einem einfachen "rm -fr /var/tmp/usr/ports" alle Kompilate los werden und den Plattenplatz wieder frei geben.

Weiterhin ist es sinnfoll spezielle Parameter für die einzelnen Ports hier zu definieren, diese Datei wird aber nur von "portupgrade" gelesen!
z.B. (hab meine komplette mal angehängt):
vi /usr/local/etc/pkgtools.conf
...
MAKE_ARGS = {
'audio/arts' => 'WITH_ESD=yes',
'emulators/bochs' => 'WITH_BOCHS_GUI_TERM=yes WITH_BOCHS_VESA=yes WITH_NE200
0=yes WITH_SOUND=yes',
'german/openoffice*' => 'LANG=de_DE.ISO8859-15 USE_LANG=de_DE.ISO8859-15 WIT
HOUT_JAVA=yes WITHOUT_MOZILLA=yes WITH_TTF_BYTECODE_ENABLED=yes',
'editors/openoffice*' => 'LANG=de_DE.ISO8859-15 USE_LANG=de_DE.ISO8859-15 WI
THOUT_JAVA=yes WITHOUT_MOZILLA=yes WITH_TTF_BYTECODE_ENABLED=yes',
'print/ghostscript-gnu-nox11' => 'A4=yes',
'print/ghostscript-gnu' => 'A4=yes',
'textproc/ispell' => 'ISPELL_DENEU=yes',
'textproc/aspell' => 'ASPELL_DE=yes',
'mail/akpop3d' => 'WITH_SSL=yes',
'mail/dbmail' => 'WITH_POSTGRESQL=yes',
'mail/evolution' => 'WITH_PILOT=yes WITH_SPAMASSASSIN=yes',
'multimedia/libfame' => 'SSE=yes MMX=yes',
'multimedia/mplayer' => [
'WITH_LANG=de',
'WITH_DVD_DEVICE=/dev/cd0',
'WITH_CDROM_DEVICE=/dev/cd0',
'WITH_DVD=yes',
'WITH_LIBDVDNAV=yes',
'WITH_REALPLAYER=yes',
'WITH_XVID=yes',
'WITH_FREETYPE=yes',
'WITH_LIBDVDREAD=yes',
'WITHOUT_RUNTIME_CPUDETECTION=yes',
],
}
...


Xmasman schrieb:
Die pkgs sind also immer etwas hinterher, auch wenn bei freshports der pkg_add Befehl mit angegeben wird? Darum also freshPORTS ;-)
z.B. "pkg_add -r apache22" funktionierte dann auch nicht, weil es das pkg auf ftp.freebsd.org gar nicht gab.
Ja, die werden nur in speziellen Zyklen compiliert und dann werden auch nicht alle compiliert (nur die "wichtigsten"). Ich kompilier mir deshalb alles selber. Und selbst die Ports sind nicht immer auf dem absolut neuesten Stand, den der Port-Maintainer muss das ja machen und der hat sicher auch nicht immer lange Weile... aber im grossen und ganzen ist das System mit den Ports eine recht gelungene und runde Sache, wenn man immer die Ports-Tools verwendet. Man muss auch bedenken, dass der Ports-Tree immer "Stable" ist, es gibt nur bei NetBSD eine "Release"-Version des Ports-Tree (dort heisst es aber "pkgsrc"), so das man auch mal damit rechnen muss, das ein Port sich für eine gewisse Zeit nicht kompilieren lässt (im Moment ist das z.B.: "/usr/ports/ftp/IglooFTP/"). Aber meistens gehen die nach ein paar Tagen auch wieder.
 

Anhänge

  • pkgtools.conf.txt
    16 KB · Aufrufe: 304
Wenn Du mal nicht weisst welche Parameter akzeptiert werden, kannst Du sie auch auslesen. Wenn man es "sauber" machen will, muss man den speziellen Befehl für den entsprechenden Port kennen... ist mir zu umständlich.
Ich mache es immer so:
cd /usr/ports/mail/exim
cat Makefile | fgrep defined
.if defined(WITH_SA_EXIM)
.if !defined(EXIMON_ONLY)
.if defined(PKGNAMESUFFIX)
.if !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX} != ${suffix}
.if defined(WITH_EXIMON)
.if defined(WITH_EXIMON)
.if !defined(EXIMON_ONLY)
.if defined(NOPORTDOCS) && !defined(EXIMON_ONLY)
.if defined(EXIMON_ONLY)
.elif defined(WITHOUT_SUID)
# If WITH_EXIMON is defined, the eximon monitor, which requires X,
# If WITH_SA_EXIM is defined, exim will be built with the SA-Exim
# The default setting is defined by this setting:
# The following options may be defined to turn off support for various
.if defined(WITH_WISHLIST)
.if defined(WITH_FIXED_NEVER_USERS)
.if defined(WITH_EXIMON)
.if !defined(WITHOUT_TLS)
.if !defined(WITHOUT_PERL)
.if defined(WITH_TCP_WRAPPERS)
.if !defined(WITHOUT_ICONV)
.if defined(WITH_LDAP) || defined(LDAP_LIB_TYPE) \
|| defined(WITH_OPENLDAP1) || defined(WITH_OPENLDAP2) \
|| defined(WITH_OPENLDAP20) || defined(WITH_OPENLDAP21)
BROKEN= "deprecated LDAP option defined, use WITH_OPENLDAP or WITH_OPENLDAP_VER"
.if defined(WITH_OPENLDAP_VER) && ${WITH_OPENLDAP_VER:L} != "auto"
.if defined(WITH_OPENLDAP)
.if defined(DB_LIB_VERSION)
.if defined(WITH_MYSQL_VER) && ${WITH_MYSQL_VER:L} != "auto"
.if defined(WITH_MYSQL)
.if defined(WITH_SASLAUTHD)
.if defined(WITH_PWCHECK)
.if !defined(WITHOUT_PAM)
.if !defined(WITHOUT_AUTH_CRAM_MD5)
.if !defined(WITHOUT_AUTH_PLAINTEXT)
.if !defined(WITHOUT_AUTH_SPA)
.if defined(WITH_AUTH_SASL)
.if defined(WITH_AUTH_RADIUS)
.if defined(WITH_PGSQL)
.if !defined(WITH_PGSQL) && !defined(WITH_MYSQL) && !defined(LDAP_LIB_TYPE) && \
.if !defined(WITHOUT_DNSDB)
.if !defined(WITHOUT_MAILDIR)
.if !defined(WITHOUT_MAILSTORE)
.if !defined(WITHOUT_MBX)
.if !defined(WITHOUT_CDB)
.if !defined(WITHOUT_DSEARCH)
.if defined(WITHOUT_LSEARCH)
.if !defined(WITHOUT_NIS)
.if !defined(WITHOUT_PASSWD)
.if defined(WITH_SQLITE)
.if !defined(WITHOUT_LMTP)
.if defined(WITHOUT_ALT_CONFIG_PREFIX)
...

in den Klammern stehen dann die akzeptierten Parameter.
der Port "mail/exim-mysql" bekommt schon von Hause aus eine Handvoll Parameter mit, bezieht sich aber auf den "Originalport" (mail/exim), deshalb ist das "Makefile" auch fast leer. Trotzdem kannst Du ihm weitere Parameter übergeben.


P.S.: Nur so nebenbei, ohne das ich Dich beeinflussen will... Ich mag MySQL überhaupt nicht da in dieser DB alles geopfert wird um Geschwindigkeit raus zu holen. Und ANSI-Konform will sie auch nicht unbedingt sein. Das stört mich beides gewaltig, denn Wenn man Datenbanken verwendet braucht man Sicherheit an erster Stelle und Geschwindigkeit an zweiter Stelle. Zudem ist es sehr bequem wenn die Befehle ANSI-Konform sein dürfen um sein Wissen auch wo anders einsetzen zu können bzw. nicht neu lernen zu müssen oder sich auf "Extrawürste" einstellen zu müssen. Ich verwende deshalb "PostgreSQL", die DB ist zudem ab einer Grösse von 100000 Einträgen auch noch schneller als MySQL!

Aber das nur mal so nebenbei...
 
Zuletzt bearbeitet:
AndreasMeyer schrieb:

Ganz großes Kino. Das funktionert ja schon mal alles ganz gut. Mal sehen ob ich das Portsystem bei Exim noch mal in Anspruch nehmen muss ...
Vielen Dank noch einmal an alle :-)

Habe gerade mal eine Menge Pakete hinzugefügt. Habe jetzt gerade ein Problem mit courier-imap ...
 
Zurück
Oben