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

les Paquetages et FreeBSD

61 réponses
Avatar
footix
Bonjour,

Utilisateur de Linux depuis plusieurs années je découvre petit à petit
le monde FreeBSD. Je voudrais tout d'abord saluer le travail fait autour
du handbook qui est assez exceptionnel.
Cela dit, je suis un peu perdu dans gestion des paquets sous ce système.
Je constate qu'il existe plusieurs dépots binaires sur le serveur FTP:

packages-5-stable
packages-6-stable
packages-6.2-release
packages-7-current
packages-8-current

D'après ce j'ai compris, reprenez moi si je me trompe, le suffixe
"-stable" indique que les paquets on été construit avec un version
"-stable" du système. Même chose pour "-release" et "-current".

Ce que j'ignore pour le moment c'est la fréquence à laquelle ces
paquetages sont mis à jour. (Je suppose que "-release" ne bouge jamais,
même pas pour des correctifs touchant à la sécurité du système).

Voici ce que j'envisage de faire pour la première installation du
système. Installer FreeBSD à partir du CD sans installer aucun package.
Installation des "gros" paquets genre Xorg, firefox, etc via le dépot
"packages-6-stable" du FTP. Mis à jour régulière via les ports avec
portmanager. Ma démarche est-elle correcte ?

Merci pour vos précieux conseils
--
Footix

10 réponses

Avatar
talon
Marc Espie wrote:

non, non. Je viens de regarder dans votre repository, vous avez toujours
un port qui s'appelle kdelibs3, et un autre qui s'appelle kdelibs3-nocups...
et il y en a bien sur d'autres. Le mecanisme `MASTERDIR' multiplie le
nombre de ports de maniere assez artificielle.


Je ne conteste pas cet exemple, mais si tu regardes, tu verras que c'est
extrêmement rare. Dans les paquets Open, je vois
lighttpd-1.4.16-ldap-mysql.tgz, lighttpd-1.4.16-ldap.tgz,
lighttpd-1.4.16-mysql.tgz, lighttpd-1.4.16.tgz donc vous faites bien
la même chose en cas de besoin. Dans la plupart des cas - la quasi
totalité - les variantes sont obtenues en changeant une variable et sans
créér un port nouveau. Par contre cette technique est utilisée
intensivement par Debian, et explique probablement l'inflation de leurs
ports.



Tu peux toujours pr?senter ?a comme tu veux, mais 5000 c'est pitoyable ?
l'heure actuelle.


Ca ne veut rien dire. Tu n'avances pas le moindre argument concret, comme
des exemples d'appli qui n'y sont pas.


Par exemple, une appli que je trouve utile k9copy (un clone de
dvdshrink), je ne le trouve pas dans la liste des paquets de Open 4.2,
je ne vois pas non plus sbcl, cmucl, django, ... mais de tels exemples
seront toujours anecdotiques, tandis que le rapport 17000/5000 n'est pas
anecdotique, il est massif.
J'ai regardé ici:
http://www.openbsd.org/4.2_packages/i386.html
Pour ce qui est de Java je ne sais pas ce qu'il en est, et donc pour les
dépendances de Java.


Et je ne serais pas ?tonn? que le core OS rende le
port de nombreux logiciels modernes tr?s probl?matique pour des raisons
de non support d'appels syst?mes r?cemment introduit sous Linux.


Vas-y, donne des exemples...


Tout ce qui est multithreadé par exemple.

Suivre le rythme pour le `plaisir' de suivre le rythme ne sert a rien.


Ca sert à rester dans la course au lieu d'être l'OS utilisé
exclusivement par ses développeurs ...

A cote de ca, je te rappelle quand meme que les buts d'OpenBSD, ce
n'est pas de dominer le monde, mais d'avoir un systeme sans souci,


Oui, j'ai déjà vu ça, quand on a eu besoin de faire marcher une Sun
Ultra 10 sous BSD, on a commencé avec le système qui marche partout
NetBSD, sauf que le clavier n'allait pas, X ne démarrait pas, etc. etc.
et on a fini avec OpenBSD, qui au moins marchait, sauf que la moitié des
applications importantes, Firefox, etc. déconnaient tant et plus.

avec les applis dont NOUS avons besoin (nous = la communaute OpenBSD).
Si des gens se pointent avec des besoins specifiques, et demandent
certaines applis, il est fort probable qu'on les aidera, et qu'on portera
les applis en question...



Tu crois sincèrement que les gens vont faire l'effort de demander des
applis et d'attendre qu'elles arrivent quand ils trouvent ailleurs des
choses où tout fonctionne, avec des performances sans commune mesure,
et avec moins de risque de se trouver dans un cul de sac? Tu vis
chez Mickey, toi.

--

Michel TALON


Avatar
espie
In article <fjeb0q$jds$,
Michel Talon wrote:
Par exemple, une appli que je trouve utile k9copy (un clone de
dvdshrink), je ne le trouve pas dans la liste des paquets de Open 4.2,
je ne vois pas non plus sbcl, cmucl, django, ... mais de tels exemples
seront toujours anecdotiques, tandis que le rapport 17000/5000 n'est pas
anecdotique, il est massif.


Le probleme pour *cl, c'est que ces applis reposent sur la possibilite
de mmap()er un fichier a une adresse donnee, ce qui n'est pas garanti
par POSIX, et qu'on ne fait plus (tout est mappe a une adresse aleatoire,
pour empecher certains problemes de securite). Note que windows possede
maintenant la meme fonctionnalite: tot ou tard, ces applis apprendront a
fonctionner avec ce modele, j'espere.

Pour ce qui est de k9copy: les applis qui manipulent CD et DVD niveau
`couche basse' demandent de toutes facons un GROS travail de portage,
puisque pratiquement rien n'est standardise, que ce soit sous
linux/openbsd/freebsd ou net... je sais assez bien ca pour m'en etre
coltine quelques-unes.



J'ai regardé ici:
http://www.openbsd.org/4.2_packages/i386.html
Pour ce qui est de Java je ne sais pas ce qu'il en est, et donc pour les
dépendances de Java.


Pour ce qui est de java, on est pour l'instant toujours coinces par la
licence de sun en ce qui concerne la redistribution de packages binaires.

Ca va changer lorsqu'il y aura suffisamment du toolkit `libere' pour pouvoir
en faire un package fonctionnel...

mais on a des ports de jdk 1.3 -> 1.7... c'est entre autres utilise par
openoffice, netbeans, et eclipse, de memoire...


Tout ce qui est multithreadé par exemple.


Pas de probleme lie aux appels systemes, en l'occurrence. D'autres problemes
lies au modele sous-jacent...

Tu crois sincèrement que les gens vont faire l'effort de demander des
applis et d'attendre qu'elles arrivent quand ils trouvent ailleurs des
choses où tout fonctionne, avec des performances sans commune mesure,
et avec moins de risque de se trouver dans un cul de sac? Tu vis
chez Mickey, toi.


Les gens sont cons, c'est bien connu.

Certaines personnes ont fait le pari de passer sous Open, et s'en portent
plutot bien. Y compris vis-a-vis d'applis dont elles avaient besoin et
qu'on leur a porte...

Evidemment, ca demande pas mal d'investissement personnel: il faut etre
pret a demander des trucs, et a donner du feedback aux gens qui les portent.
Ca rend la communaute plutot plaisante...

Avatar
talon
Marc Espie wrote:

Pour ce qui est de java, on est pour l'instant toujours coinces par la
licence de sun en ce qui concerne la redistribution de packages binaires.



Comme les autres BSD. Mais vous avez un port à partir des sources,
d'après ce que tu dis. Je ne l'avais pas vu dans le cvs des ports.
D'ailleurs si je peux me permettre une remarque: "on" ne trouve rien sur
votre site web. Je ne suis pas sûr que celui de Free soit mieux, j'en
ai l'habitude. Là, n'ayant pas l'habitude, je ne trouve littéralement
rien.


Ca va changer lorsqu'il y aura suffisamment du toolkit `libere' pour pouvoir
en faire un package fonctionnel...

mais on a des ports de jdk 1.3 -> 1.7... c'est entre autres utilise par
openoffice, netbeans, et eclipse, de memoire...


Tout ce qui est multithread? par exemple.


Pas de probleme lie aux appels systemes, en l'occurrence. D'autres problemes
lies au modele sous-jacent...


Je pensais aux appels non posix, tels que signaux délivrés à un thread
spécifique dans un processus, qui sont paraît-il utilisés de plus en
plus dans les programmes récents - testés bien entendu uniquement sur
Linux. Je crois que les développeurs Free ont rajouté ce genre d'appel
pour ne pas être embêtés en dépit des cris d'orfraie des puristes de
pthread. En général, quand je vois des programmes récents sur freshmeat
par exemple, très souvent le développeur précise que ça fonctionne sur
Windows, Mac OS X, FreeBSD et Linux, mais dans la plupart des cas
NetBSD et OpenBSD sont passés à la trappe.

--

Michel TALON


Avatar
Thierry Thomas
Samedi 08 décembre 2007 à 09:26 GMT, Michel Talon a écrit :

C'est pour ça que mon NetBSD n'est plus mis à jour depuis un bail, ça me
fait trop chier.



Pareil pour moi. Je ne me sens pas une âme à recompiler tous mes ports
tous les jours comme les maniaques de portupgrade ou portmaster. Donc
j'attends la sortie de 7.0 pour tout réinstaller en bloc avec les
binaires de la release. C'est de loin la solution la plus fiable et
qui fait perdre le moins de temps.


J'utilise portupgrade sous FreeBSD, mais principalement à partir des
packages binaires, parce que je ne vais pas non plus perdre mon temps à
compiler des applis (sauf bien sûr celles dont je m'occupe), et ça se
passe bien - mis à part une certaine lenteur...

Il y a bien sûr toujours des cas où un portupgrade de base ne marchera
pas (ex. quand une nouvelle version de KDE décide de répartir ses
paquets différemment, ou lors d'une montée de version de perl ou de
python, etc.), mais dans ces cas-là la manip à faire est documentée dans
ports/UPDATING.

En conclusion, les systèmes Debian-like sont à des années lumière en
avant des *BSD en ce qui concerne la facilité de mise à jour (
excepté peut être OpenBSD, mais là la pauvreté de l'offre de ports est
tellement évidente que ça fait presque pleurer).


Mis à part le problème de lenteur déjà évoqué, et qui n'est pas une
fatalité (il y a des travaux en cours, surtout depuis que l'éclatement
de X en multiples sous-ports a révélé où ce trouvait les principaux
points de blocages), le problème principal de portupgrade pour celui qui
veut utiliser les paquets binaires est le décalage entre la mise à jour
de l'arbre des ports (récupéré par cvsup ou Portsnap) et la
disponibilité des packages. Actuellement, pour i386 et amd64, c'est de
l'ordre de 2 ou 3 jours en moyenne, et ça peut être un peu plus en cas
de mise à jour de Gnome, KDE ou X.

Personnellement, qu'il faille attendre 2 ou 3 jours, voire même un peu
plus, ça me semble tout à fait acceptable. Et si quelqu'un veut
absolument tout de suite la version de Firefox qui corrige la dernière
faille connue, eh bien il se la compile !

Et pour faciliter la manip', il y a une idée simple qui devrait être
mise en place bientôt : c'est de conserver l'arbre des ports ayant
servi à générer un lots de paquets avec les paquets eux-mêmes, ce qui
permet d'avoir un ensemble cohérent, y compris pour les ports non
packageables.
--
Th. Thomas.


Avatar
talon
Thierry Thomas wrote:
Mis à part le problème de lenteur déjà évoqué, et qui n'est pas une
fatalité (il y a des travaux en cours, surtout depuis que l'éclatement
de X en multiples sous-ports a révélé où ce trouvait les principaux
points de blocages), le problème principal de portupgrade pour celui qui


et le fait que portupgrade -P ne privilégie pas suffisamment les
paquets, tandis que portupgrade -PP est trop fort. En pratique ça rend
la mise à jour par les paquets difficilement utilisable.

veut utiliser les paquets binaires est le décalage entre la mise à jour
de l'arbre des ports (récupéré par cvsup ou Portsnap) et la
disponibilité des packages. Actuellement, pour i386 et amd64, c'est de
l'ordre de 2 ou 3 jours en moyenne, et ça peut être un peu plus en cas
de mise à jour de Gnome, KDE ou X.


Deux ou trois jours ou une semaine ou un mois ça ne me poserait aucun
problème s'il y avait une infrastructure quelconque permettant de
s'assurer que la mise à jour va fonctionner. Or il n'y en a aucune,
seuls les RELEASE sont des points fixes fiables. En ce qui concerne les
problèmes de lenteur, pour pkg_add je crois que ça a été bien amélioré,
mais pour portupgrade je n'en crois rien. Il se trouve que j'ai lu tout
le code source de portupgrade du début à la fin, et je ne crois pas
du tout qu'il soit améliorable. Aucun des choix qui ont été faits ne se
sont préoccupés une seconde de la performance. Par là dessus, il y a des
passages où le programme lit dans le marc de café pour savoir quoi
faire, avec des résultats qui peuvent bien évidemment être désastreux.
Et enfin l'infrastructure des ports telle qu'elle est ne permet tout
simplement pas de résoudre le problème posé par un upgrade sans
upgrader massivement tous les ports, ce qui fait que les gens
préconisent portupgrade -a ou portmaster. A mon avis ces solutions sont
peut être adaptées pour un serveur qui a 20 ports installés, mais sont
une guignolade pour un desktop avec 1000 ports installés. Le problème
de est qu'il est parasité par des admin sys
qui ont une vision purement orientée "serveur" du problème. Donc
je n'ai aucun espoir que la situation s'améliore. Ces gens mettent
la tête dans le sable.


Et pour faciliter la manip', il y a une idée simple qui devrait être
mise en place bientôt : c'est de conserver l'arbre des ports ayant
servi à générer un lots de paquets avec les paquets eux-mêmes, ce qui
permet d'avoir un ensemble cohérent, y compris pour les ports non
packageables.


Ca c'est une excellente idée, je trouve, même une idée géniale.
Faire sauter ces stupidités que sont cvsup et compagnie, télécharger
un ports.tgz et des paquets, et basta. J'aime rééllement beaucoup
cette solution.

--

Michel TALON

Avatar
Thierry Thomas
Samedi 08 décembre 2007 à 19:58 GMT, Michel Talon a écrit :

Deux ou trois jours ou une semaine ou un mois ça ne me poserait aucun
problème s'il y avait une infrastructure quelconque permettant de
s'assurer que la mise à jour va fonctionner. Or il n'y en a aucune,
seuls les RELEASE sont des points fixes fiables. En ce qui concerne les
problèmes de lenteur, pour pkg_add je crois que ça a été bien amélioré,
mais pour portupgrade je n'en crois rien. Il se trouve que j'ai lu tout
le code source de portupgrade du début à la fin, et je ne crois pas
du tout qu'il soit améliorable. Aucun des choix qui ont été faits ne se
sont préoccupés une seconde de la performance. Par là dessus, il y a des
passages où le programme lit dans le marc de café pour savoir quoi
faire, avec des résultats qui peuvent bien évidemment être désastreux.


J'avoue n'avoir pas lu le code de portupgrade, mais je n'ai jamais eu de
résultats désastreux. C'est peut-être dû au fait que j'utilise
systématiquement l'option -R, qui met à jour également les dépendances
utilisées s'il le faut.

Et enfin l'infrastructure des ports telle qu'elle est ne permet tout
simplement pas de résoudre le problème posé par un upgrade sans
upgrader massivement tous les ports, ce qui fait que les gens
préconisent portupgrade -a ou portmaster. A mon avis ces solutions sont
peut être adaptées pour un serveur qui a 20 ports installés, mais sont
une guignolade pour un desktop avec 1000 ports installés. Le problème
de est qu'il est parasité par des admin sys
qui ont une vision purement orientée "serveur" du problème. Donc
je n'ai aucun espoir que la situation s'améliore. Ces gens mettent
la tête dans le sable.


`portupgrade -a' ne met à jour que les ports qui doivent l'être (sauf si
on ajoute -f pour forcer la mise à jour de tout !), ce n'est donc pas
si terrible, et ça garantit un ensemble de paquets cohérents. Je préfère
faire des `portupgrade -R' au coup par coup sur mes applications
principales, mais c'est plus par habitude et par manie de savoir ce
qu'il se passe qu'autre chose...
--
Th. Thomas.

Avatar
talon
Thierry Thomas wrote:
Samedi 08 décembre 2007 à 19:58 GMT, Michel Talon a écrit :


J'avoue n'avoir pas lu le code de portupgrade, mais je n'ai jamais eu de


L'un des endroits les plus scabreux est ce qui se passe quand un port a
disparu et a été remplacé par un autre. Portupgrade soit demande à
l'opérateur le nom du nouveau port (et il est évident qu'il a 90% de
chances de se planter) soit il va chercher la pythie pour inventer ce
nom. J'ai déjà vu des cas particulièrement cocasses. Je suis à peu près
sûr que dans le cas d'une installation typique de M. Lambda (et non pas
d'un développeur FreeBSD comme toi) le pkgdb se trouve rapidement faux
dans les grandes largeurs, et donc que pkgupgrade n'a plus qu'une vision
fantaisiste des dépendances.

résultats désastreux. C'est peut-être dû au fait que j'utilise
systématiquement l'option -R, qui met à jour également les dépendances
utilisées s'il le faut.


Donc supposons que tu mettes à jour un paquet A qui, grace à -R te met
à jour gettext, te faisant ainsi un enfant dans le dos. Crois tu que ça ne
va pas avoir quelques répercussions fâcheuses ailleurs? (Bon j'admets
qu'une copie de sauvegarde est effectuée). En fait dans bien des cas
-r serait autrement plus utile que -R. Mais alors si tu regardes toutes
les dépendances vers le haut et le bas, dans une installation typique,
tu upgrades absolument tout.

`portupgrade -a' ne met à jour que les ports qui doivent l'être (sauf si
on ajoute -f pour forcer la mise à jour de tout !),


Le problème étant le fait que le caractère "à jour" d'un paquet n'est
pas forcément visible dans son numéro de version, ce qui rend, comme je
le disais l'upgrade insoluble. Par exemple à cause des modifications
de la libc. Là encore les symboles versionnés de FreeBSD-7 vont aider
à résoudre cette question.

--

Michel TALON

Avatar
michaelgrunewald
(Michel Talon) writes:

Deux ou trois jours ou une semaine ou un mois ça ne me poserait aucun
problème s'il y avait une infrastructure quelconque permettant de
s'assurer que la mise à jour va fonctionner.


On peut utiliser des `jails' pour avoir un clone de la machine en
exploitation à bon marché, tester la màj sur le clone, etc.
--
Cordialement,
Michaël

Avatar
Thierry Thomas
Samedi 08 décembre 2007 à 22:15 GMT, Michel Talon a écrit :

L'un des endroits les plus scabreux est ce qui se passe quand un port a
disparu et a été remplacé par un autre. Portupgrade soit demande à
l'opérateur le nom du nouveau port (et il est évident qu'il a 90% de
chances de se planter) soit il va chercher la pythie pour inventer ce
nom. J'ai déjà vu des cas particulièrement cocasses. Je suis à peu près


Non : portupgrade va lire ports/MOVED et s'en débrouille bien.

sûr que dans le cas d'une installation typique de M. Lambda (et non pas
d'un développeur FreeBSD comme toi) le pkgdb se trouve rapidement faux
dans les grandes largeurs, et donc que pkgupgrade n'a plus qu'une vision
fantaisiste des dépendances.


Ça peut arriver si on panache des mises à jours manuelles (make
deinstall / reinstall) et des portupgrade, ou dans les cas où il y a
plusieurs versions d'un même port (ex. MySQL) et qu'on n'utilise pas la
version par défaut *et* qu'on n'a pas indiqué quelle version on voulait
dans ALT_PKGDEP de pkgtools.conf. Mais il me semble que dans ces cas là
tout rentre dans l'ordre après un `pkgdb -F' interactif, qui peut certes
être un peu long...

résultats désastreux. C'est peut-être dû au fait que j'utilise
systématiquement l'option -R, qui met à jour également les dépendances
utilisées s'il le faut.


Donc supposons que tu mettes à jour un paquet A qui, grace à -R te met
à jour gettext, te faisant ainsi un enfant dans le dos. Crois tu que ça ne
va pas avoir quelques répercussions fâcheuses ailleurs? (Bon j'admets
qu'une copie de sauvegarde est effectuée). En fait dans bien des cas
-r serait autrement plus utile que -R. Mais alors si tu regardes toutes
les dépendances vers le haut et le bas, dans une installation typique,
tu upgrades absolument tout.


En cas de mise à jour de gettext (ou libpng ou n'importe quel port
utilisé presque partout), soit la nouvelle version est compatible avec
l'ancienne, soit le committer chargé de la migration incrémente les
PORTREVISION de tout ce qui doit être réinstallé (ou s'il ne veut pas
saturer le CVS il indique juset dans le ports/UPDATING de faire
justement un portupgrade -r).

Mais en général un `portupgrade -R' (upward-recursive) sur les
principaux ports feuilles installés suffit, et si on conseille le
`portupgrade -a' c'est justement pour éviter les pièges.

`portupgrade -a' ne met à jour que les ports qui doivent l'être (sauf si
on ajoute -f pour forcer la mise à jour de tout !),


Le problème étant le fait que le caractère "à jour" d'un paquet n'est
pas forcément visible dans son numéro de version, ce qui rend, comme je
le disais l'upgrade insoluble. Par exemple à cause des modifications
de la libc. Là encore les symboles versionnés de FreeBSD-7 vont aider
à résoudre cette question.


Par chance, on ne fait ce genre de chose qu'en cas de montée de version
du système, et dans ces cas là il de toute façon conseillé de mettre à
jour *tous* les ports.
--
Th. Thomas.


Avatar
totof2000
Ça peut arriver si on panache des mises à jours manuelles (make
deinstall / reinstall) et des portupgrade, ou dans les cas où il y a
plusieurs versions d'un même port (ex. MySQL) et qu'on n'utilise pas la
version par défaut *et* qu'on n'a pas indiqué quelle version on voulait
dans ALT_PKGDEP de pkgtools.conf. Mais il me semble que dans ces cas là
tout rentre dans l'ordre après un `pkgdb -F' interactif, qui peut certes
être un peu long...



C'est l'approche que je n'aime pas trop dans FreeBSD (ou dans Debian).
Parfois faut utiliser make deinstall/reinstall ou d'autres il faut
utiliser portupgrade (avec dpkg et apt-get pour Debian), et si on
utilise pas la bonne commande, on corromp son référentiel.

L'approche OpenBSD décrite par Marc Espie me plait d'avantage (je laisse
de côté la discussion liée au nombre de ports).