Fragen zum Portsystem

[bc]paddy.hm

Well-Known Member
Hi! :D

Ich teste gerade mein 1. FreeBSD-System.

Ich habe mir :
http://www.de.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/book.html#PORTS

durchgelesen und bin zu dem Entschluß gekommen, das ich Ports auf BSD benutzen möchte.

Wenn ich das richtig verstanden habe sind ja Ports NUR Anweisungen um source-Dateien zu installieren.
Das ist doch so richtig oder?

Nun, kann es ja einmal sein, das die source-Dateien die FreeBSD zu den Ports anbietet etwas alt sind und ich die source-Datei von Hand herunterladen und installieren möchte.
Weiß jemand wie das geht?

Wenn z.B. eine neue Apache-Version erscheint,
gibt es unter FreeBSD eine Möglichkeit das mein FreeBSD z.B. via Cronjob über Nacht diese neue Version automatisch installiert?
 
Original geschrieben von [bc]paddy.hm
Hi! :D
Wenn ich das richtig verstanden habe sind ja Ports NUR Anweisungen um source-Dateien zu installieren.
Das ist doch so richtig oder?

Ja.

Nun, kann es ja einmal sein, das die source-Dateien die FreeBSD zu den Ports anbietet etwas alt sind und ich die source-Datei von Hand herunterladen und installieren möchte.
Weiß jemand wie das geht?

Wie wäre es einen regelmässigen cvsup der Ports zu machen? Dann installierst Du Dir noch "portupgrade" (http://www.onlamp.com/pub/a/bsd/2001/11/29/Big_Scary_Daemons.html)

Wenn Du sourcen ziehst und installieren willst, kannst Du das machen, ist aber nicht so sauber wie die Ports.
Sourcen entpacken, README in den sourcen lesen, meist dann configure, make, make install aufrufen.

Wenn z.B. eine neue Apache-Version erscheint,
gibt es unter FreeBSD eine Möglichkeit das mein FreeBSD z.B. via Cronjob über Nacht diese neue Version automatisch installiert?

Ich frage mich, warum es immer das neuste vom neuen sein muss, ausser es handelt sich um einen security fix....
Du kannst sicher ein script basteln was nen cvsup macht, und dann überprüft ob der Apache neu runtergezogen wurde, und diesen dann autmatisch installiert.
Ich frage mich aber ob dies wirklich sinnvoll ist...
Ich meine nein.
 
Ich frage mich aber ob dies wirklich sinnvoll ist... Ich meine nein.

Dem kann ich mich voll anschließen.
Durch diesen unnötige Update-Wahn werden immense Kosten auf Seiten der Serverbetreiber (sprich auf Kosten der *BSD-Projekte) verursacht.

Neulich habe ich irgendwo in einer Maillingliste oder auf einem Board von 'nem Typen gelesen, der sich alle paar Stunden die komplette Source + Ports von OpenBSD runterzieht. Nötig war es nicht - er fand es einfach nur cool.
*seufz* "Einfache Freuden für einfache Geister" kann ich da nur sagen...

Gruß
RW
 
Board von 'nem Typen gelesen, der sich alle paar Stunden die komplette Source + Ports von OpenBSD runterzieht.
Nein, das ist SCH*** und dabei entstehen wirklich nur Kosten!

Ich frage nach, weil ich ggf. einige BSD-Systeme in der Zukunft aufsetzen muß.
Und ich einen wöchentlichen Cronjob o.ä. aufsetzen wollte,
da ich die Systeme nicht alle von Hand updaten möchte.

Ich habe schoneinmal gehackte Linuxkisten zusammenflicken dürfen, weil Sicherheitspatchen nicht eingespielt wurden.

-> Es ist nicht wirklich eine schöne Aufgabe....
:(
 
Fuer sowas schreibt man sich bei den announce- und security- Listen ein!!! Mit automatischen Updates die Sicherheit erhoehen wollen.... selten so gelacht.

Ausserdem ueberlegt man es sich DREIMAL ob man auf einem Server mal eben Apache 2.0.38 gegen 2.0.39 austauscht. Es heisst nicht umsonst "Never change a running system". Da kann einiges bei schiefgehen...
 
:(

Dann soll ich mich Deiner Meinung nach mich in alle Mailinglisten von allen installierten Ports einschreiben?
Ach, neee ....das ist nicht mein Ding.

Und wenn ich 20 untersch. BSD-Server oder mehr betreuen soll,
soll ich dann alle Ports von Hand nachinstallieren?
:(

Also, http://fou4s.gaugusch.at schafft das auch anders.
Okay, ist für ne (Heul)-SuSE, aber es nimmt einem Arbeit ab.

Ich rede ja nicht von "nur" einem Server....

Bei Sicherheitspatches denke ich nicht 3 Mal nach,
sondern spiele es sofort ein.

-> Aber zu dem Thema gibt es bestimmt mehrere unterschiedliche Meinungen.
Kannst ja Mal ein neuen Thread eröffnen. ;)

-> Außerdem war das Topic ein anderes....
 
Was spricht denn bitte dagegen bei einem System das sowas unterstützt (also z.B. Debian bei dem man einfach Stable folgen könnte) automatisch den Changes zu folgen?
Dabei muss man sich natürlich darauf verlassen können das keine Major-Changes einfliessen sondern wirklich nur Security Updates.

buebo
 
Original geschrieben von [bc]paddy.hm
Dann soll ich mich Deiner Meinung nach mich in alle Mailinglisten von allen installierten Ports einschreiben?
Ach, neee ....das ist nicht mein Ding.

Es würde schonmal ein Anfang sein sich in die securtiy Liste von FreeBSD einzutragen.
Ansonsten sind die einschlägigen Seiten zu besuchen die auf Fehler in Programmen aufmerksam machen.
Dann kannst Du jede Nacht einen cvsup der Ports machen und am nächsten morgen kontrollieren welche Ports erneuert werden sollten. Man sieht schon anhand der veränderten Versionsnummer ob es sich um einen fix handelt und erneutes "release" des Programmes.

Wie ich schon schrieb, installiere Dir "portupgrade", das macht das Leben mit den Ports noch leichter.

Und wenn ich 20 untersch. BSD-Server oder mehr betreuen soll,
soll ich dann alle Ports von Hand nachinstallieren?

Wenn es um Produktivsysteme geht, dann würde ich es bevorzugen dieses selbst in der Hand zu haben, anstatt irgendwann in der Nacht den einen oder anderen Port upzudaten.
Bei postfix gab es mal eine Änderung, bei der musste man nach dem update Hand anlegen, sonst hätte der postfix nicht mehr funktioniert. Wenn ich das nun autmatisiert gemacht hätte, hätte ich mich a) gewundert das der nicht mehr rennt nach dem nächsten Start b) gefragt was ich machen muss, was sich geändert hat c) Die logs des automatischen portupgrades suchen und durchforsten müssen.
Einige Ports verlangen dann auch noch eine Usereingabe, was macht man da?

Rufe doch morgends nach dem automatischen cvsup der Ports "portversion -v" auf. Dann kannst Du sowas sehen:

Code:
[...]
medusa-0.5.1                =  up-to-date with port
minicom-2.00.0              <  needs updating (port has 2.1)
mkcatalog-1.1               =  up-to-date with port
[...]

Und dann explizit einen portupgrade des Ports anwerfen wenn Du meinst das dies nötig ist. Dazu noch schnell bei www.freshports.org vorbei, und die Commit History des Ports ansehen um was es sich denn handelt. Es bugfix, security fix oder nur um ein update auf eine neuere Version.

Ansonsten, haben die 20 Server alle das gleiche an Programmen installiert?
Du kannst dann natürlich auch eine BSD Box nehmen die die Ports verwaltet, und das Ports-Dir auf die anderen via NFS mounten (Sicherheit...).
Dann reicht es dort einen cvsup zu machen, das entlastet Dein Netz und die Server von FreeBSD, wenn nur ein Server einen cvsup macht, anstatt derer 20.
Du kannst dann auch die neuen Ports, oder die die Du uopdaten willst auf diesem Server dann als package bauen, und den anderen Serverm via NFS zur Verfügung stellen, dann brauchst Du nicht den ports tree auf alle via NFS zu mounten.
Und kannst so die packages auf den anderen 20 Boxen installieren, was dann schneller geht als jedesmal die Dinger auf jeder Box zu kompilieren, und auch Ressourcenschonender ist.
 
Ich hab auch noch mal eine Frage zu den Ports.
Nicht so allgemeiner Natur wie von meinem Vorgänger, eher spezieller. ;)

Also ich hab KDE installiert und hab mal GKrell (oder wie das heißt) installiert. Wollte mir das mal anschauen wie das so ist und was man da so ablesen kann, ob das sinnvoll ist.

Naja auf jeden Fall kamen dann beim Aufrufen von pkgdb -F die Frage das ne Abhängigkeit zwischen zwei installierten Ports nicht stimmte. Also ein Port benötigt einen anderen. Der war aber scheinbar nicht installiert. Ich glaub kdehier (oder so) heißt der.
Auf jeden Fall hab ich dann (leider ohne vorher zu überlegen ;) ) das Angebot die Abhängigkeit auf einen anderen Port zu "linken" angenommen. Nun geht aber bspw. Gkrellm gar nicht. Deswegen geh ich mal davon aus, dass die Abhängigkeit falsch war.

Meine Frage ist nun:
Kann ich die Abhängigkeit quasi "reparieren"? Also bspw. den Port installieren und dann explizit sagen, dass Port xyz den neu installierten Port kdehier benötigt? Oder ist das etwas kompliziert und es ist leichter ich installier den Port einfach neu?

Hoffe die Fragen sind jetzt nicht zu durcheinander. :)

Gruß

Ps.:
Ach ja, so nebenbei: frohe Weihnachten (für alle die Weihnachten feiern :D
 
Gut ich schau mal ins Wiki.

Aber mal eine andere Frage die ich bis jetzt noch nirgendwo beantwortet gesehen hab.

Theoretisch angenommen ich hab BSD ger. frisch installiert und hab noch keinen Browser bzw. keine grafische Oberfläche zur Verfügung.

Nun will ich bspw. KDE als Package installieren nicht aus den Ports.
Nun weiß ich aber nicht wie dsa Package genau heißt, kann aber auch nicht nachschauen da ich ja keinen Browser zur Verfügung hab (sicher man könnte jetzt links aus den ports installieren und damit schauen oder so), aber mal angenommen man hat das nicht oder weiß dsa nicht. ;)

Gibt es eine Möglichkeit nachzuschauen bspw. was für packages für das Programm mit dem String "kde" im Namen?
Also das er mir dsa bspw. auflistet und ich nicht erst danach suchen muss? Das war nämlich bis jetzt immer mein Problem, dass ich die Namen von den Packages nicht wusste und deswegen hab ich dann immer einfach aus den Ports installiert. Dauert zwar länger aber ging immer ganz gut. :)
 
@ Trash:
Im OpenBSD-Forum hat jemand ein Script gepostet, das das kann. Wenn du die Ports installiert hast, dann kanst du auch einfach die Ports nach dem gewünschten Programm durchsuchen. Willst du beispielsweise das Programm "portupgrade" installieren, so findest du das im Portstree in /usr/ports/sysutils/portupgrade. Das Paket dazu heißt dann schlicht "portupgrade" wie der Verzeichnisname des Ports. Generell heissen die Pakete immer so wie das Verzeichnis des entsprechenden Ports.

Wenn du mit Scripts umgehen kannst schau dir mal den Thread "nützliche Scripte" oder so im OpenBSD-Forum hier an.

Gruß, matze
 
Hmm Danke!

Aber wenn ich bspw. kde als Paket installiere, heißt dann das Paket auch wie der Port kde3 und nicht kde-3.3.3 oder so!?

Muss ich also nur im Portstree schauen wie der Port heißt, dann mach ich ein pkg_fetch und dann hab ich das schon?
Wirklich so einfach? :)

Danke!
 
Hi!

Danke noch mal an Andreas, das mit den freshports.org ist ne gute Idee! :)

Ich hab ne andere Frage.
Oder besser gesagt ein kleines Problem und bin mir nun unsicher wie ich vorgehen muss.
Ich wollte das flashplugin für den Firefox installieren.
Nun hatte ich entdeckt, dass es da das flash7 für linux in den Ports gibt (linux-flashplugin7). Bin hin, habs installiert. Da sagt er mir aber es sei schon installiert.
Ich hab dann pkgdb -F ausgeführt und da kamen dann die Abhängigkeiten.

Problem dabei ist nun, dass er immer auf Abhängigkeiten hinweist, ich aber nicht weiß was ich da genau machen soll.

Ich poste mal ein bißchen was er da so fragt. Bspw. direkt am Anfang kommt dies:

Code:
root@thrash# pkgdb -F
--->  Checking the package registry database
[Updating the pkgdb <format:bdb1_btree> in /var/db/pkg ...- 244 packages found (-0 +1) . done]
Stale dependency: linux-flashplugin-7.0r25_1 -> linux-fontconfig-2.1_2 (x11-fonts/linux-fontconfig):
INDEX-5.bz2                                     0% of  603INDEX-5.bz2                                     1% of  603INDEX-5.bz2                                    11% of  603INDEX-5.bz2                                    32% of  603INDEX-5.bz2                                    43% of  603INDEX-5.bz2                                    53% of  603INDEX-5.bz2                                    64% of  603INDEX-5.bz2                                    74% of  603INDEX-5.bz2                                    90% of  603INDEX-5.bz2                                   100% of  603kB   72 kBps
done
[Updating the portsdb <format:bdb1_btree> in /usr/ports ... - 12204 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.. ..... done]
linux-flashplugin-7.0r25_1 (score:43%) ? ([y]es/[n]o/[a]ll) [no]

Woher bekomm e ich nun raus wie ich diese Abhängigkeit auflöse? Also was ich dem da als Abhängigkeit übergeben muss?
Wenn ich mit portversion -R linux-fontconfig aufrufe sagt er mir, dass der Port nicht installiert ist. Also kann der Port schon mal schlecht vom flashplugin benötigt werden oder?

Bzw. hier mal eine allgemeine Verständnisfrage.
Heißt das "port a -> port b" das Port a, den Port b benötigt. Oder umgedreht, dass Port a den Port b benötigt?

Irgendwie kapier ich das nicht?
Oder steh ich ger. nur aufm Schlauch? Son Problem hatte ich irgendwann schon mal.

Ich hab auch das flashplugin vorhin schon mal deinstalliert gehabt, dann läuft das <code>pkgdb -F</code> ordentlich durch, aber sobald ich den Port wieder installiere will er irgendeine Abhängigkeit auflösen von einem Port der nicht installiert ist.
Vorhin wars mal rpm gewesen. :)

Wenn ich jetzt einfach irgendeinen Port auswähle bzw. bei dem "linux-fontconfig" (obwohl nicht installiert) einfach "yes" drücke, kanns mir doch passieren, dass ein Port (in diesem Fall das Flashplugin?) nicht mehr gescheit funzt oder?

Wie macht ihr das denn wenn euch sowas passiert? Port neu installieren? Den Port der Probleme bei den Abhängigkeiten macht upgraden oder nen reinstall ... !?

Danke
Gruß
 
Also ich mach' das so:

1. Den Port nach dem Pfeil (in diesem Fall linux-fontconfig-2.1_2) in einem neuem xterm installieren.

2. Dependency unverändert lassen.

3. Bei der nächsten Stale Dependency das gleiche.

4. Zum Schluß pkgdb -F nochmal durchlaufen lassen.

Inspiriert durch http://www.bsdforen.de/showthread.php?t=9042 (2. Post)

CMIIW & HTH
 
[Thrash] schrieb:
Theoretisch angenommen ich hab BSD ger. frisch installiert und hab noch keinen Browser bzw. keine grafische Oberfläche zur Verfügung.

Es gibt Browser wie lynx oder links, für die keine graphische Benutzeroberfläche vorhanden sein muss. Sie laufen auch im Terminalmodus ab.

[Thrash] schrieb:
Gibt es eine Möglichkeit nachzuschauen bspw. was für packages für das Programm mit dem String "kde" im Namen?
Also das er mir dsa bspw. auflistet und ich nicht erst danach suchen muss? Das war nämlich bis jetzt immer mein Problem, dass ich die Namen von den Packages nicht wusste und deswegen hab ich dann immer einfach aus den Ports installiert. Dauert zwar länger aber ging immer ganz gut. :)

Das Internet bietet WWW nicht als einzigen Dienst an. Man kann auch sich auch alle relevanten Daten (ports, packages) per FTP holen. Auf einem FTP-Server könnte man dann einfach ls *kde* abfragen. Nur wird dies nicht weiterhelfen, da gerade die KDE-Packages auf vielen anderen Paketen aufbauen, die nicht unbedingt kde im Dateinamen tragen. Aber das erfährt man dann bei nach missglücktem pkg_add.

Viele Grüße

Rainer
 
nur zur Info / geht in Zukunft dann vielleicht besser...

hartmut schrieb:
Also ich mach' das so:

1. Den Port nach dem Pfeil (in diesem Fall linux-fontconfig-2.1_2) in einem neuem xterm installieren.

2. Dependency unverändert lassen.

3. Bei der nächsten Stale Dependency das gleiche.

4. Zum Schluß pkgdb -F nochmal durchlaufen lassen.

Inspiriert durch http://www.bsdforen.de/showthread.php?t=9042 (2. Post)

CMIIW & HTH

Um solche Probleme zu minimieren und das updaten zu vereinfachen, gibt es den Port "sysutils/portupgrade". Dann wird die PKG-DB automatisch aktuell gehalten (aber manchmal muss man auch hier Hand anlegen, aber selten).

Wenn der installiert ist, installiert man neue Programme/Ports z.B. so:

portupgrade -RNO www/firefox

dabei werden alle älteren + abhängigen Packages (rekursiv) gleich upgedatet.


Oder wenn man alle Packages updaten will:

portupgrade -RNOak

mit dem "k" wird er bei einem Fehler einfach mit dem nächsten weiter machen. Zum Schluss bekommt man einen Report, da steht dann welche installiert wurden und welche nicht (auch warum nicht).


Tipp:
Ich habe oft das Problem, das er ein "p5-..."-Package installieren will, das aber schon installiert ist.
Das liegt dann daran, das er beim Abhängigkeit prüfen oft nicht nur die PKG-DB verwendet, sondern nach einzelnen Dateien sucht (meistens bei den "p5-..."-Packages) und wenn er die nict findet will er das Package installieren (nicht updaten, denn ist ja aktuell installiert).
In soeinem Fall hat man zwei Möglichkeiten bevor man weiter machen kann.
z.B.:
1. cd /usr/ports/devel/p5-Cache-Cache && make install FORCE_PKG_REGISTER=yes
2. portupgrade -NOf devel/p5-Cache-Cache
 
Hallo,

trotz portupgrade und seinen Möglichkeiten ist der Tipp von Hartmut meiner Meinung nach sehr gut!

Mache ich auch so,
falls ich mal so eine Meldung bei pkgdb -F habe.
Hatte mir ziemlich zu Anfang mal meine Paketdatenbank prima zerschossen,
(Kombination: Schusseligkeit, Unwissen, und eine kaputte Festplatte gemountet,
dann noch auf die gloreiche Idee gekommen, unter /var mal "richtig aufzuräumen")

da hatte ich dann reichlich Gelegenheit zu üben. :ugly:

Das manuelle nachinstallieren von Abhängigkeiten mag zwar mühsam sein,
aber man kriegt einiges wieder damit hin.
Mein damals schwer durcheinander gebrachtes System läuft heute immer noch
(und zwar 1A), ich schreibe damit gerade diese Zeilen. :D


Gruß, Fusselbär
 
hallo leute

noch eine kurze frage zu dem thema: wenn ich die ports mit nfs sharen will und verschiedene plattformen fahre (sparc64, i386) muss ich da was beachten, bzw. geht das überhaupt nicht?
 
Die Ports via nfs sharen soll sowieso nicht so der Knaller sein. Hier hats oft funktioniert, manchmal hackt es aber irgendwie am Filelocking. Hier würde mich mal interessieren, ob es einen richtigen "Königsweg" dafür gibt?!
 
Steve` schrieb:
Die Ports via nfs sharen soll sowieso nicht so der Knaller sein. Hier hats oft funktioniert, manchmal hackt es aber irgendwie am Filelocking. Hier würde mich mal interessieren, ob es einen richtigen "Königsweg" dafür gibt?!
Also den Ports-Tree zu sharen ist meiner Meinung nach voll daneben! Das ist ja auch logisch, da man in ein und dem selben Ports-Tree nicht an zwei Stellen gleichzeitig compilieren sollte, weil man nicht garantieren kann (zumindest sehr schnell den Überblick dabei verliert) das beide compilier-Aufgaben nicht doch durch Abhängigkeiten im gleichen Verzeichnis compilieren wollen (und dann vielleicht noch mit unterschiedlichen Parametern).
In der Praxis geht sowas fast immer gegen den Baum und dann muss man alles cleanen und beide Ports nacheinander compilieren.
Wenn der Ports-Tree geshared wird, kann man selten kontrollieren, welche Maschine wann was compiliert, deshalb sollte der Ports-Tree nie geshared werden. Jede Maschine braucht seinen eigenen Ports-Tree.

Allerdings habe ich selbst auch schon mit dem Gedanken gespielt den Speicherplatzbedarf von mehrfach vorhandenen Dateien (Ports-Tree's), durch zusammenlegen, zu reduzieren und bin zu dem Schluss gekommen, das man unter bestimmten Umständen "/usr/ports/distfiles/" sharen kann. Man muss nur aufpassen, das nicht zwei Maschinen zur selben Zeit die gleiche Datei saugen! Dann geht das wenigstens. Um auch hierbei die Anzahl der geshareden Dateien zu minimieren, sollten alle Maschinen, die auf dies NFS-Verzeichnis zugreifen, über die gleiche Ports-Tree-Version verfühgen. Sonst werden die gleichen Quellen unter Umständen in verschiedenen Versionen benötigt.
 
Wenn der Ports-Tree geshared wird, kann man selten kontrollieren, welche Maschine wann was compiliert, deshalb sollte der Ports-Tree nie geshared werden. Jede Maschine braucht seinen eigenen Ports-Tree.
den ports tree sharen ist nicht unbedingt eine schlechte idee. es müssen nur eine kleinigkeiten beachtet werden damit nix durcheinander kommt:
den WORKDIR in der /etc/make.conf auf z.B. WORKDIR =/tmp setzten damit die eigentliche kompiliererei nicht im portstree stattfinden.
dies ist z.B. in höchstem maße auf jailsystemen sinnvoll.
 
Workdir nach /tmp kann Probleme geben, da /tmp für einige Ports oft unterdimensioniert ist. Distfiles kann man nach einer Erfahrung uneingeschränkt sharen, ich tu das nicht nur innerhalb der BSDs, sondern zum Testen auch mit sourcebasierten Linuxdistributionen. 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. Des weiteren kann es keine Komplikationen geben, solange ich der einzige bin, der in meinem geshareten Portstree baut. Ich kann für mich alleine sehr wohl garantieren, dass sich nichts in die Quere kommt, spare bei 5 Maschinen dem FreeBSD-Projekt aber vier unnötige Syncs.
 
Zurück
Oben