• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

synth Unterscheidung der Ports

Mardor

Well-Known Member
Themenstarter #1
Hallo,

wenn ich einen Host mit beispielsweise zwei Jails habe. In einem soll beispielsweise owncloud mit sqlite und beim anderen mysql benutzt werden. Wie kann ich dies mit synth umsetzen.

Wenn ich mit make -C die Abhängigkeit festlege und mit synth das pkg file erstelle dann mit make -C die andere Abhängigkeit für das zweite Jail erstelle, wie kann dies mit synth realisiert werden. Der Name wird sich meiner Meinung nach ja nicht anhand der gewählten Abhängigkeiten verändern.

Gruß Mardor
 

Binfort

Well-Known Member
#2
Vor synth hast du das mit mit portmaster per Jail lösen können, ich denke nicht das dieser spezielle Fall einfach zu lösen ist.

Entweder die Konfig der Pakete bleibt in allen Jails gleich, oder du benutzt poudriere, oder du kompilierst per make im Jail.
 

Mardor

Well-Known Member
Themenstarter #3
Hallo Binfort,

poudriere ist eben vom Aufwand schon ne ganz andere Hausnummer und make ist scheint mir (auch wenn ich es extrem selten benutzt habe (nur zur Installation von portmaster)) auch ziemlich problembehaftet bzgl. fehleranfällig.

Vielleicht war mein beispiel mit Owncloud etwas weit weg von der Praxis, aber ist denn die Anforderung seine Ports je nach Jail nach den eigenen Wünschen zu erstellen so selbsten.

Wie macht Ihr/Du das denn wenn du einen Jail hast ?

Guß Mardor
 

Binfort

Well-Known Member
#4
In meinen Jails laufen größtenteils die selben Anwendungen in gleichen Konfigurationen, ich könnte prima mit synth arbeiten.

Parallel habe ich auf einem Server im Testbetrieb Host und drei Jails nur mit Binärpaketen aufgesetzt. Der Nachteil ist eben, dass ich mit den default Optionen der Pakte leben muss - was für meine Zwecke völlig in Ordnung ist. Der ungeheure Vorteil liegt beim sehr schnellen Installieren bzw. beim Aktualisieren.

Sicherlich, einen Plan B braucht es dennoch. Als vor ein paar Jahren die Binärpakete über Nacht möglicherweise kompromittiert waren, wurde von der Verwendung logischerweise abgeraten.

Für so einen (o.ä.) Fall würde ich zukünftig auf synth setzen. Pakete via poudriere hatte ich mir in ner VM angesehen, mag jeder von halten was er will, mir persönlich ist es zu fett.
 

Mardor

Well-Known Member
Themenstarter #5
Hi,

bei mir läuft eben eine Owncloud, ein Wordpress, ein Dokuwiki, IRC Server, Jump SSH Server etc. etc und jeden eben in einem anderen Jail.
Mit portmaster war es einfach, nämlich einfach per selbstgeschriebenem Script ins Verzeichnis wechseln und portmaster -a durchführen.

Bei synth sieht das anders aus. Alleine schon der Zwang die Pakete auf dem Host zu kompilieren anstatt im Jail selbst. Auch muss der Security Level unter 2 gesetzt werden, da ansonsten die mounts von synth nicht funktionieren. Die Rücksetzung des Security Level bedeutet dann weiter, dass der Host neu gestartet werden muss und dann danach pefs wieder neu gemountet weden muss usw usw usw .... also ein extremer Rattenschwanz.

Und dann eben wird alles extrem unflexibel wenn ich nur eine Version beispielsweise des Apache haben darf/kann.

Gruß Mardor
 

gadean

Well-Known Member
#6
Wenn du verschiedene Repository haben willst, wirst du glaube ich mit synth nicht weit kommen (zumindest habe ich nichts in der Manpage gefunden).

Ich hab erst vor paar Tagen angefangen mit poudriere zu spielen, bisher sieht es extrem simple aus und innerhalb kürzester Zeit erzielt man Erfolge. Damit könntest du zum Beispiel mehrere Repos erstellen (eins das Owncloud mit SQLite hat und das andere mit MySQL / eins für jede Jail / was auch immer) und das jeweilige Repo das gebraucht wird in der Jail bekannt machen.

Aber am Ende läuft es bei allem aufs selbe hinaus, die Pakete werden aus den Quellen gebaut, genauso wie wenn du in www/apache gehst und dort make aufrufst (nur in einer sauberen Umgebung und das Ergebnis wird in ein Lokales Repo geworfen).

Edit:DigitalOcean hat da eine relativ gut zu verstehende "Anleitung" zu poudriere, wobei ich den Schritt mit dem Signing ausgelassen habe und keinen Webserver aufgesetzt habe: How To Set Up a Poudriere Build System to Create Packages for your FreeBSD Servers
Dazu noch aus dem Handbuch 10.5. Poudriere und 4.6. Building Packages with Poudriere als zusätzliche Informationsquelle.

Und meine quick&dirty Notizen (ich benutz dort zfs, die Pfade müssen angepasst werden):
Code:
portsnap fetch update
cd /usr/ports/ports-mgmt/poudriere && make config && make install clean
ee /usr/local/etc/poudriere.conf
cp /etc/make.conf /usr/local/etc/poudriere.d/
ee /usr/local/etc/poudriere.d/portlist
mkdir -p /usr/local/etc/pkg/repos
printf "FreeBSD: {\n  enabled: no\n}\n" >> /usr/local/etc/pkg/repos/FreeBSD.conf
printf "poudriere: {\n  enabled: yes,\n  url: "\"file:///poudriere/data/packages/<jail_name>-<ports_tree_name>\""\n}\n" >> /usr/local/etc/pkg/repos/poudriere.conf
pkg update

# create build jail
# poudriere jail -c -j <jail_name> -v <version>
poudriere jail -c -j 11_1-RELEASE_amd64 -v 11.1-RELEASE -a amd64

# creates a ports tree
# poudriere ports -c
poudriere ports -c [-p <ports_tree_name>]

# list build jails
poudriere jail -l

# update build jail
poudriere jail -u -j <jail_name>

# list ports trees
poudriere ports -l

# update ports tree
poudriere ports -u [-p <ports_tree_name>]

# pruning no longer needed distfiles
poudriere distclean [-p <ports_tree_name>] [-y]

# check new or changed options
poudriere options -j <jail_name> [-p <ports_tree_name>] -f /usr/local/etc/poudriere.d/portlist

# check all options
poudriere options -c -j <jail_name> [-p <ports_tree_name>] -f /usr/local/etc/poudriere.d/portlist

# build ports
poudriere bulk -j <jail_name> [-p <ports_tree_name>] -f /usr/local/etc/poudriere.d/portlist

# Webserver interface and package repo
server {
    listen 80 default;
    server_name server_domain_or_IP;
    root /usr/local/share/poudriere/html;

    location /data {
        alias /poudriere/data/logs/bulk;
        autoindex on;
    }

    location /packages {
        root /poudriere/data;
        autoindex on;
    }
}
 

Mardor

Well-Known Member
Themenstarter #7
Hallo Gadean,

wie sieht es denn mit poudriere genau aus. Wie gut ist den poudriere mit dem Handling von Abhängigkeiten ?
Die Benutzung von purem make meide ich aktuell, weil ich immer wieder von Problemen von Abhängigkeiten höre.

Gruß Mardor
 

gadean

Well-Known Member
#8
Ich versteh nicht welche Probleme du mit Abhänigkeiten hast, entweder der Port funktioniert oder nicht, da spielt es keine Rolle ob du synth, poudriere oder von Hand arbeitest und wenn der Port "funktioniert" aber du ihn nicht auf deinem System bauen kannst, liegt es doch an der Umgebung in der du ihn bauen willst.

Der elementare Unterschied zwischen synth/poudiere und von Hand arbeiten (make) ist nur das du bei synth/poudiere eine saubere, absolut leere Umgebung hast in der die Pakete gebaut werden, alles andere ist doch "gleich"?

Oder liege ich falsch? Kann auch sein, wie gesagt, ich beschäftige mich auch erst seit kurzem damit, hab zuvor die Ports immer von Hand gebaut und aktualisiert.
 

Binfort

Well-Known Member
#9
Die angesprochene leere Umgebung gibt es imho nur bei poudriere.

Synth nutzt die Umgebung des Hosts zum kompilieren, aber es installiert nichts was nicht benötigt wird. Ich versuche nach Möglichkeit so wenig wie möglich im Host zu installieren, somit ist die Umgebung recht "sauber".

Poudriere dagegen baut in eigenen Jails, einfach gesagt machst du ein Profil Konfig A und eins Konfig B, poudriere baut dann in separaten Jails und stellt separate Repos bereit.
 

Mardor

Well-Known Member
Themenstarter #10
Der elementare Unterschied zwischen synth/poudiere und von Hand arbeiten (make) ist nur das du bei synth/poudiere eine saubere, absolut leere Umgebung hast in der die Pakete gebaut werden, alles andere ist doch "gleich"?
Vielen Dank für deinen Hinweis.
Von der Vergangenheit weis ich, dass portmaster ja auch aus der Source kompiliert. Meine Meinung war, dass der Unterschied zwischen make und portmaster in der besseren Auflösung der Abhängigkeit liegt.

Was wäre dann sonst der Unterschied ?

Gruß Mardor
 

Mardor

Well-Known Member
Themenstarter #11
Edit:DigitalOcean hat da eine relativ gut zu verstehende "Anleitung" zu poudriere, wobei ich den Schritt mit dem Signing ausgelassen habe und keinen Webserver aufgesetzt habe: How To Set Up a Poudriere Build System to Create Packages for your FreeBSD Servers
Dazu noch aus dem Handbuch 10.5. Poudriere und 4.6. Building Packages with Poudriere als zusätzliche Informationsquelle.
Die Anleitung hatte ich auch gefunden. Gut zu wissen, dass das Signing weggelassen werden kann, das hat mich nämlich abgeschreckt.

Gruß Mardor
 

Binfort

Well-Known Member
#12
... dass der Unterschied zwischen make und portmaster in der besseren Auflösung der Abhängigkeit liegt.
Was wäre dann sonst der Unterschied?
Make baut dir die Abhängigkeiten des einen Ports in dem es angeworfen wird automatisch mit. Wenn im späteren Verlauf des Builds eine Abhängigkeit Konfigurationsoptionen anbietet, bleibt der Build solange stehen bis diese beantwortet werden. Dies kann man umgehen indem im Port ein make config-recursive vor dem eigentlichen make kommt. Dennoch konnte es passieren dass der Build mittendrin stockte weil irgendeine kleine Fitzeloption abgefragt wurde...

Portmaster erledigte dies eigentlich recht zuverlässig und automatisch vor dem Build. Zudem konnte portmaster alle Ports des Systems in einem Rutsch bearbeiten. Klar, es blieb mal stehen wenn irgendwo ein Paket/Port erst deinstalliert werden musste, um es dann zu aktualisieren... aber in den letzten Jahren habe ich das Tool ziemlich gerne benutzt.
 

holgerw

Well-Known Member
#13
Hallo Gadean,

wie sieht es denn mit poudriere genau aus. Wie gut ist den poudriere mit dem Handling von Abhängigkeiten ?
Die Benutzung von purem make meide ich aktuell, weil ich immer wieder von Problemen von Abhängigkeiten höre.

Gruß Mardor
Hallo,

ich bin zwar eher Amateur in Sachen poudriere, aber das baut mir ein komplettes Repo mit plasma5, da wird alles an notwendigen Abhängigkeiten mit gebaut.
 
#14
Von der Vergangenheit weis ich, dass portmaster ja auch aus der Source kompiliert. Meine Meinung war, dass der Unterschied zwischen make und portmaster in der besseren Auflösung der Abhängigkeit liegt.
Solche Annahmen habe ich hier schon öfters gesehen, sie sind falsch.
Portmaster/Portupgrade macht auch nix anderes als make aufzurufen, eben wie man es per Hand machen würde. Es gibt nur einen offiziellen Weg, einen Port zu bauen und installieren und der geht über make - alle anderen Tools sind Wrapper außen drum.

Es ist also identisch, wenn ich etwas mit portmaster installiere oder einfach ins Portverzeichnis gehe und dort make install clean aufrufe.

Rob
 

SolarCatcher

Well-Known Member
#15
Wenn du verschiedene Repository haben willst, wirst du glaube ich mit synth nicht weit kommen (zumindest habe ich nichts in der Manpage gefunden).
Doch, das sollte recht einfach zu bewerkstelligen sein. Du kannst in Synth nämlich verschiedene Profile anlegen. Du könntest Dir also zwei unterschiedliche Profile anlegen, mit mindestens unterschiedlichen "Packages directory" und "Port options directory". Gestartet wird standardsmäßig ein "default" Profile, das Du festlegen kannst. Weiter unten in der Man Page wird aber erklärt, wie über eine Umgebungsvariable schon vor dem Start von Synth das zu verwendende Profil festlegen kannst. Damit könntest Du in einem winzigen Skript für beide Jails unterschiedliche Repos mit unterschiedlichen Optionen bauen. Nicht ausprobiert, aber ich bin da sehr sicher, weil ich die unterschiedlichen Profile auch schon verwendet habe.
 

SolarCatcher

Well-Known Member
#17
Bravo @KobRheTilla , endlich redet mal jemand Klartext. Manchmal habe ich den Eindruck, das einfache Dinge unötigerweise kompliziert werden, warum auch immer.
Nur um sicher zu stellen, dass das hier keiner falsch versteht: Portmaster, Synth und Poudriere bieten z.T. eine ganze Menge zusätzlicher Features. Für das Bauen (inkl. dem Berücksichtigen aller Abhängigkeiten) mag das am Ende keinen Unterschied machen, aber es gibt schon gute Gründe, warum sich hier verschiedene Menschen recht viel Mühe damit gemacht haben, solche Tools zu entwickeln. Und warum so viele von uns diese und nicht einfach Make verwenden.
 

ralli

BSD Fanboy
#18
Nur um sicher zu stellen, dass das hier keiner falsch versteht: Portmaster, Synth und Poudriere bieten z.T. eine ganze Menge zusätzlicher Features. Für das Bauen (inkl. dem Berücksichtigen aller Abhängigkeiten) mag das am Ende keinen Unterschied machen, aber es gibt schon gute Gründe, warum sich hier verschiedene Menschen recht viel Mühe damit gemacht haben, solche Tools zu entwickeln. Und warum so viele von uns diese und nicht einfach Make verwenden.
Das verstehe und respektiere ich. Ich will um Gottes willen keinen Flameware entfachen, sondern einfach nur verstehen. Sind diese zusätzlichen Optionen grundsätzlich wichtig für alles oder nur für wenige Spezialfälle? Ich frage deshalb, weil ich mich ja jetzt etwas tiefer in diese Materie einarbeiten will.
 

Binfort

Well-Known Member
#20
Scheint als driften wir langsam ins OT...

Zurück zum Thema, @SolarCatcher zeigt doch die Lösung:
Doch, das sollte recht einfach zu bewerkstelligen sein. Du kannst in Synth nämlich verschiedene Profile anlegen. Du könntest Dir also zwei unterschiedliche Profile anlegen, mit mindestens unterschiedlichen "Packages directory" und "Port options directory". Gestartet wird standardsmäßig ein "default" Profile, das Du festlegen kannst. Weiter unten in der Man Page wird aber erklärt, wie über eine Umgebungsvariable schon vor dem Start von Synth das zu verwendende Profil festlegen kannst. Damit könntest Du in einem winzigen Skript für beide Jails unterschiedliche Repos mit unterschiedlichen Optionen bauen. Nicht ausprobiert, aber ich bin da sehr sicher, weil ich die unterschiedlichen Profile auch schon verwendet habe.
FreeBSD kommt hier primär auf Servern zum Einsatz, für mich ist das normal. Ein Host - mehrere Jails. Wenn zwischen den Jails die Konfig der Ports abweicht, ich aber auf kompilierte Ports statt binärer Pakete angewiesen bin, dann ist das für mich die Lösung - besser, die Alternative zu poudriere.

Was sagt der TE?