lokales Repo pkg bekannt machen

  • Thread starter Thread starter holgerw
  • Start date Start date
H

holgerw

Guest
Hallo,

ich habe per poudriere Pakete gebaut und möchte - ganz simpel ohne apache, webserver oder ähnliches - daraus ein lokales Repo machen und das dann pkg mitteilen.

Ich habe die gebauten Pakete nach /daten/repo kopiert und dann in diesem Verzeichnis folgenden Befehl abgesetzt:
Code:
pkg repo .

Das ist sauber durch gelaufen.

Aber wie mache ich jetzt dieses lokale Repo pkg bekannt? Sorry, ich suche mir nun schon länger einen Wolf zu ordentlicher Dokumentation und finde kein Beispiel für eine korrekte Syntax in /usr/local/etc/pkg/repos/reponame.conf, um pkg das lokale Repo /daten/repo bekannt zu machen. Ich weiß, dass der Repotyp hier file:// lauten muss, aber wie trage ich das korrekt ein?

Viele Grüße,
Holger

Edit: Durch Herumprobieren habe ich es nun heraus gefunden, hier die Syntax für mein erstes lokales Repo, was noch unsigniert ist:
Code:
localrepo: {
  url: "file:///daten/repo",
  enabled: yes
}
 
Hallo

Ich denke du hast zu wenig Unterordner bei der Url angegeben. Kannst du mal bitte die Ordnerstruktur zeigen? Es muss der Ordner mit dem Inhalt folgender Dateien sein:
lrwxr-xr-x 1 root wheel 16 Sep 24 01:35 .latest@ -> .real_1474673750
drwxr-xr-x 4 root wheel 8 Sep 24 01:35 .real_1474673750/
lrwxr-xr-x 1 root wheel 11 Jul 4 12:03 All@ -> .latest/All
lrwxr-xr-x 1 root wheel 14 Jul 4 12:03 Latest@ -> .latest/Latest
lrwxr-xr-x 1 root wheel 19 Jul 4 12:03 digests.txz@ -> .latest/digests.txz
lrwxr-xr-x 1 root wheel 16 Jul 4 12:03 meta.txz@ -> .latest/meta.txz
lrwxr-xr-x 1 root wheel 23 Jul 4 12:03 packagesite.txz@ -> .latest/packagesite.txz
Gruss
 
Hallo @foxit,

in /daten/repo sind direkt die Pakete, die ich mit poudriere gebaut habe. In dem Ordner habe ich dann ein
Code:
pkg repo.
ausgeführt, die Pakete sind hochgezählt worden, das Repo war dann einsatzbereit und ich habe eine localrepo.conf mit oben angegebenen Inhalt erstellt. Mit pkg kann ich nun aus meinem Repo plasma5 Pakete installieren, seit heute Morgen habe ich zum ersten mal kf5 mit plasma5 unter FreeBSD Laufen, und es läuft Klasse.

Viele Grüße,
Holger
 
Habe ein ähnliches Setup. Was auch cool ist das dann mit nullfs in Jails mounten und dann hat man Pakete für alle Jails. :)
 
dazu kann ich natürlich nichts beitragen und irgendwann habe ich auch entschieden, dass ich poudriere nicht brauche und mich explizit auf die verfügbaren Pakete aus den offenen Quellen stützen will. Das soll sagen: ich weiß gar nicht recht, worüber hier überhaupt geredet wird.
Aber, das trifft auf viele Beiträge zu, die ich dann trotzdem nachverfolgen kann.
Das scheitert hier.

poudriere erstellt Pakete aus den Ports mit den gewünschten Optionen.
Alle erstellten Pakete bilden ein Pkg-Repro.
Nun braucht es irgendwie doch einen Server, der diese Pakete anbietet und Clients, die auf diesen Dienst zugreifen. Oder?

Das wird aus dem Thread nicht klar. Irgendwie funktioniert es scheinbar am Ende, aber ich wüsste mir nun nicht zu helfen, wenn ich wegen eines ähnlichen Problems gesucht und diesen Thread gefunden hätte.
 
@pit234a

Es ist gar nicht so schwierig. poudriere baut die aus den Ports Pakete, je nachdem wie du es konfiguriert hast. Die Pakte sind dann in einem Verzeichnis. Per default ist das /usr/local/poudriere/data/packages/<selbstausgesuchter Name>/.

Woher weiß pkg wo die Pakete sind? Durch ein config file in /usr/local/etc/pkg/repos bzw. /etc/pkg/repos/. Per default steht da sowas drin:

Code:
FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

Da hast du diese pkg+http URL. Die kannst du abändern (bzw. was man eigentlich macht ist ein File mit enabled: false und ein zweites File mit deinem eigenen Repo. Das kann lokal sein, indem du file:// als Protokoll verwendest oder woanders, indem du das Verzeichnis einfach mit nginx, apache oder einem anderen HTTP-Server hostest.

Im lokalen Fall sieht das auf einem Server, den ich betreibe so aus (beachte das file:// was bedeutet, dass das lokal Dateisystem und kein Server verwendet wird):

Code:
local: {
  url: "file:///usr/local/poudriere/data/packages/10amd64-default/",
  enabled: yes
}

Das local ist der Repo-Name. Kann irgendwie heißen.

Kleine Anmerkung noch, wenn man das wirklich machen will:

FreeBSD installiert dieses Config-File nach /etc, bevorzugt aber das in /usr/local/etc. Der Hintergedanke ist, dass das in /etc Default ist und man dieses Setting ändern will, dann macht man das nur in /usr/local, dann braucht man bei einem Update oder wenn man es zurückstellen will nichts viel machen. Das steht aber auch im Kommentar in dem File, welches ich lesen würde, wenn man das machen will. :)

Es gibt auch im pkg.conf(5) man page einen Abschnitt Repository Configuration, der gut ist. Da steht übrigens auch drin, was alles möglich ist:

any of the URL schemes supported by libfetch(3) can be used, including: http://, https://, ftp://, or file://. In addition a ssh:// URL scheme is also supported.

EDIT: Falls Interesse besteht kann ich ein Tutorial schreiben, wie man lokale und remote Repos macht und verwendet und wie man so Sachen, wie nullfs-mounts für jails macht.
 
Last edited:
Hallo @Athaba,

Es gibt auch im pkg.conf(5) man page einen Abschnitt Repository Configuration, der gut ist. Da steht übrigens auch drin, was alles möglich ist:

Ja, das habe ich gelesen und dann durch Probieren heraus gefunden, dass man schreiben muss:
file:///pfad-zum-repo
Was Typen wie http u.s.w. angeht, habe ich ein Beispiel, hat man doch nach der Basisinstallation eine entsprechende FreeBSD.conf in etc/pkg, aber ein Beispiel für ein lokales Repo in der Manpage ... man hätte ja ein Beispiel geben können, muss man natürlich nicht.:)

EDIT: Falls Interesse besteht kann ich ein Tutorial schreiben, wie man lokale und remote Repos macht und verwendet und wie man so Sachen, wie nullfs-mounts für jails macht.
Immer diese rhetorischen Fragen :D an so etwas besteht - zumindest was mich betrifft - ein sehr großes Interesse. Über proudiere möchte in im Kapitel "Fortgeschrittene Themen" meines Buches ausführlich schreiben und würde selbstverständlich dann auf Dein Tutorial verlinken und es mit ein beziehen - je mehr ich mich auf Tutorials und Howtos von langjährigen BSD-Kennern und -Profis beziehen kann, desto besser finde ich das.

Viele Grüße,
Holger
 
Nun braucht es irgendwie doch einen Server, der diese Pakete anbietet und Clients, die auf diesen Dienst zugreifen. Oder?
Hallo @pit234a,

nein, bei mir reicht ein lokales Repo auf einer Maschine, was per nfs dann den Clients zur Verfügung gestellt wird, ich habe daher auch auf eine Signierung der Pakete beim Bau mit poudriere verzichtet.

Hmmm, da fällt mir aber ein: Was, wenn Leute gerne Pakete für plasma5 und kf5 hätten, aber selbst nicht zum Bauen kommen? Dann könnte man doch diese Arbeit anderen Nutzerinnen und Nutzern zur Verfügung stellen - und dann gehört natürlich ein Signieren dazu.
Nun betreibe ich im WWW keinen Server, hätte das Geld auch nicht dafür und für zu Hause ist mir das zu aufwendig, einen Server dem WWW zur Verfügung zu stellen und auf Sicherheit hin zu konfigurieren.
Man müsste jemanden mit Webserver finden, der ordentlich gebauten KDE5-Kram bei sich unterbringen würde und ihn dann WWW-weit zur Verfügung stellen könnte.

Viele Grüße,
Holger
 
dazu kann ich natürlich nichts beitragen und irgendwann habe ich auch entschieden, dass ich poudriere nicht brauche und mich explizit auf die verfügbaren Pakete aus den offenen Quellen stützen will. Das soll sagen: ich weiß gar nicht recht, worüber hier überhaupt geredet wird.
Aber, das trifft auf viele Beiträge zu, die ich dann trotzdem nachverfolgen kann.
Das scheitert hier.
Was für ein Antwort auf die Frage :rolleyes:
 
Eine kleine Empfehlung gegen Kopfschmerzen: deaktivier das FreeBSD Repo, und installier nur noch von deinem poudriere Repo -- pkg kann ja vieles, aber multi-repo ist nicht so doll.

Also es wird Dir z.b. konsole-16.x durch konsole-4.x ersetzen wollen etc wenn Du pech hast...


Für plasma5 Binärpakete hat swills@ überigens schon ein repo eingerichtet auf:
http://meatwad.mouf.net/rubick/poudriere/packages/110-amd64-area51/


mfg Tobias
 
Hallo Tobias,

danke für Deine zusätzlichen Hinweise. Mein eigenes Repo bauen möchte ich schon mit poudriere, wobei die Verlockung natürlich groß ist, das Repo von @swills zu benutzen, um mal rasch einen umfangreicheren Eindruck von plasma5 zu bekommen.

Viele Grüße,
Holger
 
Nachtrag: Wie ist es dann aber, wenn ich fertige Pakete nehmen möchte, also @swills area51 Repo, aber dann auch libreoffice, audacity easytag u.s.f. installieren möchte? Multi-Repo soll ich ja vermeiden.
 
Da hast Du natürlich recht -- er baut da im Grunde nur alles was in branches/plasma5 liegt und deren Dependencies -- und libreoffice&co bleiben dann aussen vor. Es ist also eher hilfreich um einfach mal "ich hab 10min und will kurz kucken ob plasma5 läuft" zu machen.

Für mehr ist man dann wohl mit einem eigenen Repo wirklich besser bedient :)


mfg Tobias
 
Back
Top