Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[FreeBSD] Comment créer son propre serveur de packages ?

6 réponses
Avatar
Paul Gaborit
Afin d'éviter la recompilation des ports lors des mises à jour sur
chacune de nos machines en FreeBSD et comme les serveurs publics ne
proposent évidemment pas tous les packages dont nous avons besoin,
j'aimerai créer un serveur de packages local.

Existe-t-il sur Internet des documents expliquant comme procéder (le
handbook FreeBSD explique bien le côté client mais je n'ai rien vu
d'explicite concernant le côté serveur) ? Sinon, quels conseils
pratiques pouvez-vous me donner à ce sujet ?

Merci.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

6 réponses

Avatar
Marwan Burelle
In article , Paul Gaborit wrote:
Afin d'éviter la recompilation des ports lors des mises à jour sur
chacune de nos machines en FreeBSD et comme les serveurs publics ne
proposent évidemment pas tous les packages dont nous avons besoin,
j'aimerai créer un serveur de packages local.

Existe-t-il sur Internet des documents expliquant comme procéder (le
handbook FreeBSD explique bien le côté client mais je n'ai rien vu
d'explicite concernant le côté serveur) ? Sinon, quels conseils
pratiques pouvez-vous me donner à ce sujet ?


Je ne sais pas s'il existe des docs, mais ce n'est pas très difficile.

Il y a en gros 2 méthodes (en partant du principe que vous savez
construire vos packages) :

- partager en nfs le répertoire /usr/ports/packages, surement très
bien pour un réseau local, mais je ne suis pas sûre que ça marche
pour toutes les commandes qui vont chercher des packages ...

- Mettre un ftp quelque part en place, y faire un répertoire
pub/FreeBSD/ports/$arch/packages-$release avec les sous-répertoires
correspondant à ce que l'on trouve sur le ftp de FreeBSD (ou dans
/usr/ports/packages) et fixer les variables PACKAGEROOT ou
PACKAGESITE pour pkg_fetch(1) (voir la man page pour les détails.)
Normalement 'pkg_add -r' et portupgrade devrait être content avec
ces 2 variables.

Une dernière solutions, pourrait être de passer par un ports tree en
nfs, un premier build/install (ou upgrade) via 'portupgrade -W' pour
ne pas nettoyer après l'installe et après utiliser 'portupgrade -Ww'
(toujours pour ne pas nettoyer le répertoire de build ... )

La je n'explique pas tous les détails sur la construction des packages
et la mise en place d'un serveur ftp (annonymous) mais bon, ça devrait
être mieux documenté tout ça ...

--
Burelle Marwan,
Equipe Bases de Donnees - LRI
http://www.cduce.org
( | )

Avatar
Marwan Burelle
In article , Patrick Lamaizière wrote:
Pourquoi ça ne marcherait pas ?


Il me semble que 'pkg_add -r' ne se pose pas la question de ce qui est
dispo dans /usr/ports/packages (j'ai essayé il y a longtemps ... )

Sinon on peut fixer les répertoires avec WRKDIRPREFIX (build), DISTDIR
(distfiles) et PACKAGES dans make.conf. Mais il faut aussi les
paramétrer pour portupgrade dans pkgtools.conf.


Oui ... mais vu que l'on va tout faire avec du nfs autant changer le
moins de variable possibles ;)

Il ne faudrait pas les options de compilations (le make config) qui sont
dans /var/quelquechose ?


Euh, oui, mais non ... lorsqu'un make se finit dans un répertoire il
rajoute un fichier bidon dans work pour dire quel phase est finie et
si on refait make, il ne fait rien si ce fichier est présent (si les
même options sont passées à make.) Je penses (pas testé) qu'il ne doit
pas reposer la question pour tout ce qui est config ...

L'avantage du port tree en NFS c'est aussi d'en avoir qu'un à mettre à
jour.


Effectivement (on peut cumuler la deuxième solution avec cette
avantage ... )

--
Burelle Marwan,
Equipe Bases de Donnees - LRI
http://www.cduce.org
( | )

Avatar
Paul Gaborit
À (at) Tue, 19 Jul 2005 13:02:55 +0000 (UTC),
Marwan Burelle écrivait (wrote):
- Mettre un ftp quelque part en place, y faire un répertoire
pub/FreeBSD/ports/$arch/packages-$release avec les sous-répertoires
correspondant à ce que l'on trouve sur le ftp de FreeBSD (ou dans
/usr/ports/packages) et fixer les variables PACKAGEROOT ou
PACKAGESITE pour pkg_fetch(1) (voir la man page pour les détails.)
Normalement 'pkg_add -r' et portupgrade devrait être content avec
ces 2 variables.


C'est la solution que je pense adopter car elle a l'avantage de
minimiser le paramètrage côté client. Je ne pensais pas que c'était
aussi simple...

La je n'explique pas tous les détails sur la construction des packages
et la mise en place d'un serveur ftp (annonymous) mais bon, ça devrait
être mieux documenté tout ça ...


Pour ça, effectivement je me débrouillerai tout seul : la doc est
suffisament explicite ;-)

Merci.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
sinese
Paul Gaborit wrote:
Existe-t-il sur Internet des documents expliquant comme procéder (le
handbook FreeBSD explique bien le côté client mais je n'ai rien vu
d'explicite concernant le côté serveur) ? Sinon, quels conseils
pratiques pouvez-vous me donner à ce sujet ?


Sur http://open-projects.univ-mlv.fr y a une doc expliquant comment
faire. Le serveur cvsup est sur un openBSD et non un FreeBSD. Pour un
FreeBSD il suffit d'installer le package cvsup-mirror et suivre les
instructions.

Le principe sur open-projects est:
- A minuit une machine (FreeBSD) se synchronise avec le cvsup de freebsd.
- A 8h je recompile les packages dont j'ai besoin (j'evite de le faire
en automatique avec ces histoires de UPDATING qui demande de faire des
trucs bizarre par moment).
- A 20h le serveur "officiel" (serveur ftp et cvsup) se synchronise avec
le serveur qui a servi a compiler.

Pour les clients un simple portupgrade -PPRrua suffit a mettre a jour le
systeme.

La seul contrainte est que tout les ports a compiler doivent etre
installer sur la machine de compilation avec ce mode (pkg_create semble
ne travailler que sur des ports installes). De meme, il est necessaire
de recreer les packages de tout les ports dependant d'un port mis a
jour, sinon on a un probleme de dependance lors du pkg_add de
l'installation.

La generation de package est faite grace au script qui se trouve
http://www.olympe.hn.org/repository/create_all_pkg.sh
La variable PKGDIR est a changer dans le script.

Y a surment d'autres moyens de faire un serveur de package mais je n'ai
pas specialement le temps de regarder plus en avant.

--
sinese

Avatar
Paul Gaborit
À (at) Thu, 21 Jul 2005 11:26:36 +0200,
sinese <"[my_nick]"@olympe.hn.org> écrivait (wrote):
Paul Gaborit wrote:
Existe-t-il sur Internet des documents expliquant comme procéder (le
handbook FreeBSD explique bien le côté client mais je n'ai rien vu
d'explicite concernant le côté serveur) ? Sinon, quels conseils
pratiques pouvez-vous me donner à ce sujet ?


Sur http://open-projects.univ-mlv.fr y a une doc expliquant comment
faire.
[...]


Ok. Je vais jeter un oeil. Merci pour cette doc...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>


Avatar
Paul Gaborit
À (at) Tue, 19 Jul 2005 13:02:55 +0000 (UTC),
Marwan Burelle écrivait (wrote):
- Mettre un ftp quelque part en place, y faire un répertoire
pub/FreeBSD/ports/$arch/packages-$release avec les sous-répertoires
correspondant à ce que l'on trouve sur le ftp de FreeBSD (ou dans
/usr/ports/packages)[...]


Juste une petite question sur ce point...

Sur les serveurs ftp de FreeBSD, en plus du contenu de
/usr/ports/packages, il y a un fichier INDEX. À quoi sert-il ? Est-ce
celui qui est dans /usr/ports que je dois recopier ? Pourquoi ne
s'appelle-t-il pas INDEX-5 alors que je suis en 5-stable ? Sinon,
comment le construit-on ?

J'ai fait un test depuis une machine cliente et elle ne semble pas se
servir du fichier INDEX présent sur le serveur ftp ... mais je précies
qu'elle a un arbre de ports à jour avec un fichier INDEX-5 à jour
(grâce à portindex).

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>