Ce document contient les entrées de la mini-faq de mise à jour pour les versions d'OpenBSD qui ne sont plus supportées activement. Pour des informations sur la version courante, regardez la page Suivre -current.
3.5.1: numéros de périphériques mineurs pty modifiés
3.5.2: Nouvel utilisateur et groupe _dhcp
3.5.3: Nouvel utilisateur et groupe _mopd
3.5.4: Nouvel utilisateur et groupe _tftpd
3.5.5: Nouvel utilisateur et groupe _rbootd
3.5.6: cksum déplacé vers /bin
3.5.7: Nouvel utilisateur et groupe _afs
3.5.8: Nouvel utilisateur et groupe _ppp
3.5.9: Nouvel utilisateur et groupe _ntp
3.5.10: Saut de librairie "flag day"
3.5.11: Changements dans les ancres de pf
3.4.1: numéros de périphériques mineurs svnd modifiés
3.4.2: Nouvel utilisateur et groupe _pflogd
3.4.3: Clonage d'interface
3.4.4: Nouvel utilisateur et groupe _bgpd
3.4.5: Nouvelle version de join(1)
3.4.6: changement dans la construction de sudo
3.4.7: Nouvel utilisateur et groupe _tcpdump
3.4.8: changement dans machdep.c (i386)
3.4.9: Mise à jour de bsd.own.mk
3.4.10: Passage à gcc3 (sparc64)
3.3.1: support i386 W^X
3.3.2: changement syscall mquery
3.3.3: i386 "flag day", changement exe addr/MAXDSIZ
3.3.4: Suppression de l'authentification KerberosIV
3.3.5: changement de config
3.3.6: Utilisation de __attribute__((bounded)) sur
certaines fonctions
3.3.7: Nouvel utilisateur et groupe _syslogd
3.3.8: Nouveau format d'attribut __kprintf__ dans les
en-têtes noyau
3.2.1: Nouveau Perl
3.2.2: Nouveaux groupes _radius, _token et _shadow
3.2.3: Importants changements du compilateur
3.2.4: Nouvel utilisateur et groupe _spamd
3.2.5: Alias pour ipv6-icmp
3.2.6: Nouveau groupe _lkm
3.2.7: Nouvelle libpthread
3.2.8: Changements de Linker pour l'architecture ELF
3.2.9: Suppression de /var/at et changements crontab
3.1.1: Nouveaux utilisateurs/groupes
3.1.2: Nouveau groupe pour crontab(1) et at(1)
3.1.3: Nouveau Binutils
3.1.4: Nouvel configuration S/Key
3.1.5: Nouvelles permissions pour lp*
3.1.6: atrun(8) n'est plus nécessaire
3.1.7: nat.conf fusionné avec pf.conf
3.1.8: Nouvelle entrée fbtab nécessaire à xdm
3.1.9: Utilisation de __attribute__((sentinel)) sur
certaines fonctions
3.0.1: Nouveau mot clé supporté par mtree(8)
3.0.2: Suppression de libdl sur les plateformes ELF
3.0.3: Nouveau framework de régression
3.0.4: fichiers de configuration ssh déplacés vers /etc/ssh/
2.9.1: Nouveaux utilisateurs/groupes - proxy,
smmsp et popa3d
2.9.2: Nouveau filtre de paquets : pf
2.9.3: Changements à make
2.9.4: La compilation échoue à cause d'erreurs de
KerberosV
2.9.5: Nouvelle version de sendmail
2.9.6: /etc/primes déplacé
2.8.1: Nouveau groupe auth
2.8.2: Nouvelle console système wscons
2.8.3: Compilation du noyau ne fonctionnant pas avec
des symboles indéfinis
2.7.1: Quels sont les problèmes majeurs de mise à jour de la 2.7 à 2.8?
2.6.1: Les entrées Termcap sont trop longues.
2.6.2: Mon périphérique pn (ou mx, al, ax)
n'est plus reconnu par le noyau.
2.6.3: Mettre à jour gcc 2.95.1 vers 2.95.2
2.6.4: Mettre à jour Kerberos.
2.6.5: Mettre à jour M4.
2.6.6: Mettre à jour Sendmail.
2.6.7: Après la mise à jour, les noyaux qui possèdent le support
apm(8) ne démarrent plus.
2.6.8: Le groupe par défaut de l'utilisateur daemon a changé.
2.5.1: Quels sont les problèmes majeurs de mise à jour de la 2.5 à 2.6?
2.5.2: Comment mettre à jour gcc vers egcs
2.5.2.1 - i386 et sparc ne sont plus #define
2.5.2.2 - La compilation s'arrête sur xlint
2.5.2.3 - Core Dump sur uthread_autoinit.c
2.5.2.4 - egcs semble beaucoup plus lent que gcc
2.5.2.5 - egcs génère du code plus gros que gcc
2.5.2.6 - Après l'installation de egcs je n'ai plus que très peu d'espace disque
2.5.2.7 - Ma compilation s'arrête sur libcurses
2.5.2.8 - Je n'arrive pas à faire un make obj
2.5.3: Mon make build meurt avec des erreurs unimplemented syscall.
2.5.4: Lien vers le nouveau répertoire 2.6.
2.5.5: Après une (U)pgrade, l'extraction de base26.tar.gz
s'arrête avec un message.
2.4.1: Changements de pages Man
2.4.2: Syntaxe de cap_mkdb modifiée
2.4.3: Snake
2.3.1: Nouvel utilisateur : named
2.3.2: J'ai essayé la compilation, mais elle s'arrête en essayant de compiler
ssleay.
2.3.3: J'ai essayé la compilation, mais elle s'arrête en essayant de faire
quelque chose sur PowerPC.
/dev/audio0 --> sun:0
/dev/audio1 --> sun:1
/dev/rmidi2 --> rmidi:2
default --> aucat:0
mystuff --> aucat:0.mystuff
$ aucat -U 0 -l -f sun:3
$ aucat -U 1 -l -s default -s mystuff -f sun:2
fourniront aucat:0, aucat:1 et aucat:1.mystuff
respectivement.
# cd /usr/src/gnu/usr.bin/gcc
# make -f Makefile.bsd-wrapper obj
# make -f Makefile.bsd-wrapper depend
# make -f Makefile.bsd-wrapper
# make -f Makefile.bsd-wrapper install
# make -f Makefile.bsd-wrapper clean
nat on $ext_if from 10/8 -> ($ext_if) rdr on $ext_if to ($ext_if) -> 1.2.3.4devient
match out on $ext_if from 10/8 nat-to ($ext_if) match in on $ext_if to ($ext_if) rdr-to 1.2.3.4
et...
binat on $ext_if from $web_serv_int to any -> $web_serv_extdevient
match on $ext_if from $web_serv_int to any binat-to $web_serv_extles lignes nat-anchor et/ou rdr-anchor, comme pour relayd(8), ftp-proxy(8) et tftp-proxy(8), ne sont plus utilisées et doivent être supprimées de pf.conf(5), laissant uniquement les lignes d'ancres. Les règles de traduction pour ceux-ci et spamd(8) devront être mises à jour de façon appropriées.
N.B. : Précédemment, les règles de traduction avaient un comportement "stop at first match", avec binat évalué en premier, suivi par nat/rdr dépendant de la direction du paquet. Maintenant que les règles de filtrage ont un comportement normal "last match", il faut donc être prudent avec l'ordre des règles lors de la conversion.
pass in on $ext_if route-to (em1 192.168.1.1) from 10.1.1.1 pass in on $ext_if reply-to (em1 192.168.1.1) to 10.1.1.1devient
pass in on $ext_if from 10.1.1.1 route-to (em1 192.168.1.1) pass in on $ext_if to 10.1.1.1 reply-to (em1 192.168.1.1)
announce refresh yes # was already on by default announce restart no announce as-4byte no # was only set on sessions to peers with 4byte AS nums
# cd /usr/src/usr.sbin/config # make # make install
# pkg_delete p5-parent p5-Parse-CPAN-Meta
# pkg_add http://damien.bergamini.free.fr/packages/openbsd/iwn-firmware-5.2.tgz
/var/log/pflog 600 3 250 * ZB "pkill -HUP -u root -U root -t - -x pflogd"
Les fichiers existants /etc/bridgename.bridge* doivent être remplacés par des fichiers /etc/hostname.bridge*; si vous utilisez une priorité, remplacez la par spanpriority.
useradd -u 97 -g =uid -c "NSD Daemon" -d /var/empty -s /sbin/nologin _nsd
# cd /usr/src/usr.bin/make # make depend # make # make install
useradd -u 98 -g =uid -c "LDP Daemon" -d /var/empty -s /sbin/nologin _ldpd
useradd -u 95 -g =uid -c "SMTP Daemon" -d /var/empty -s /sbin/nologin _smtpd
makemap /usr/libexec/sendmail/makemap
scrub in all no-df max-mss 1440
peut-être maintenant remplacé avec une règle utilisant la nouvelle
action "match":
match in all scrub (no-df max-mss 1440)
Depuis que l'ordre du jeu de règles est appliqué par défaut, elles devront
être déplacées dans les règles principales (avant les règles "pass quick"),
ou la validation de l'ordre des règles devra être désactivée :
set require-order noLe réassemblage de paquet a été simplifié. "Crop" et "drop-ovl" ont été supprimés; seulement le réassemblage complet reste. Il est activé ainsi :
set reassemble yes|no [no-df]Si "no-df" est utilisé, les fragments (et seulement les fragments !) avec le bit df activé seront reinitialisés avec d'entrer dans le cache fragment, et donc le paquet réassemblé n'aura pas le df activé. Les paquets non-fragmentés ne sont pas affectés par no-df.
useradd -u 96 -g =uid -c "rpc.rwalld" -d /var/empty -s /sbin/nologin _rwalld
Fusionnez vos changements locaux après cela.# cd /tmp # ftp ftp://mirror/path/to/snapshots/arch/etc46.tgz # tar xzpf etc46.tgz ./etc/lynx.cfg # mv etc/lynx.cfg /etc
Alternativement, si vous mettez à jour via un snapshot binaire sur un système actif (au lieu d'utiliser l'installation standard), soyez sûr d'extraire base46.tgz avant de redémarrer avec le nouveau noyau.# cd /sys/dev/microcode/bnx # make obj clean # make # make install
ifconfig <interface> media
L'option pour scanner les réseaux sans-fil a aussi été modifiée, mais a été
revisée ultérieurement.
# rm -rf /usr/obj/gnu/usr.bin/perl
Vous pouvez recréer le répertoire obj :
# cd /usr/src/gnu/usr.bin/perl
# make -f Makefile.bsd-wrapper obj
Il est à remarquer qu'a cause de cette mise à jour majeure de Perl,
vous devez recompiler/reinstaller tous les modules Perl XS. Il y
a des modules qui incluent un objet partagé qui est chargé dans le
processus Perl executé. Pour voir la liste des modules XS installés
via le sous-système des paquetages, executez :
# cd /var/db/pkg
# fgrep .so p5-*/+CONTENTS | sed 's/+CONTENTS.*//' | sort -u
Mettre à jour à la derniére version du snapshot des paquetages avec
"pkg_add -ui" prendra soin de ces mises à jour. Aprés la mise à jour,
vous devez desinstaller plusieurs modules qui sont maintenant fournis
dans Perl par défaut :
# pkg_delete p5-Archive-Tar p5-Compress-Raw-Zlib p5-Compress-Zlib \
p5-IO-Compress-Base p5-IO-Compress-Zlib p5-IO-Zlib p5-Module-Build \
p5-Module-CoreList p5-Module-Load p5-version p5-Digest-SHA
Le pilote pour les composants Intel i810(4) a été complétement remplacé par le pilote intel(4). Le fichier de configuration xorg.conf(5) doit être mis à jour.
# pkg_delete p5-Locale-Maketext-Simple
# pkg_delete p5-Pod-Escapes p5-Pod-Simple
# pkg_delete p5-ExtUtils-ParseXS p5-ExtUtils-CBuilder \
p5-Module-Pluggable p5-Time-Piece
# cd /usr/src/gnu/usr.bin/gcc
# make -f Makefile.bsd-wrapper obj
# make -f Makefile.bsd-wrapper depend
# make -f Makefile.bsd-wrapper
# make -f Makefile.bsd-wrapper install
# make -f Makefile.bsd-wrapper clean
# useradd -u94 -g=uid -c"Bluetooth Daemon" -d/var/empty -s/sbin/nologin _btd
# pkg_delete p5-Module-Loaded
ifconfig <interface> scan
Puis suivez release(8): les indications pour compiler le système complet.# cd /usr/src/gnu/usr.bin/gcc # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install # cd /usr/src/share/mk # make install # cd /usr/src/libexec/ld.so # make obj # make depend # make # make install
# cd /tmp # ftp ftp://mirror/path/to/snapshots/arch/etc43.tgz # tar xzpf etc43.tgz ./etc/magic # mv etc/magic /etc
useradd -u92 -g=uid -c"IPv6 Router Advertisement Daemon" -d/var/empty -s/sbin/nologin _rtadvd
table <webservers> counters { 192.168.33.4, 192.168.33.16/29 }Regardez pf.conf(5) pour les détails.
mail-mode => auto-fill-modeN'oubliez pas de modifier aussi votre fichier .mg bien évidemment.
mail-set-margin => set-fill-column
useradd -u93 -g=uid -c"YP to LDAP Daemon" -d/var/empty -s/sbin/nologin _ypldap
La nouvelle version de named(8) (9.4.2-P1) a tout juste été importée utilisant les ports sources aléatoires pour les requêtes et cette fonction permet une utilisation plus robuste.
Pour éviter toute incompatibilité, le noyau, sysctl(8), named(8) et /etc/rc doivent être mis à jour en même temps (compilez et installez le noyau avant "make build").
Driver "via"par
Driver "openchrome"dans /etc/X11/xorg.conf pour utiliser le nouveau pilote. Voir la page de manuel openchrome(4) pour plus d'options de configuration.
Plus de MergedFB:
Le support du mode MergedFB a été supprimé en faveur de xrandr(1).
Une option pour Macbooks a été modifiée :
Les utilisateurs de Macs ou Macbooks qui utilisent l'option suivantedoivent lire la page de manuel radeon(4) , plus spécialement la section "MacModel" si ils ont des problèmes.Option "iBookHacks" "on"
Avec cette version, cette option a été supprimée.
0. Soyez sur d'avoir obj.
# cd /usr/src # make obj
1. Installation des en-têtes, compilation et installation de libc.
# cd /usr/src/include # make prereq # make includes # cd /usr/src/lib/libc # make cleandir # make depend # make # make install
2. Compilation et installation de libm.
# cd /usr/src/lib/libm # make cleandir # make depend # make # make install
3. Compilation et installation de libiberty.
# cd /usr/src/gnu/lib/libiberty # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install
4. Compilation et installation de gcc.
Si votre plateforme utilise gcc 2.95.3:
# rm -r /usr/obj/gnu/egcs/gcc/*
# cd /usr/src/gnu/egcs/gcc
- or -
Si votre plateforme utilise gcc 3.3.5:
# rm -r /usr/obj/gnu/usr.bin/gcc/*
# cd /usr/src/gnu/usr.bin/gcc
Procédure commune de compilation pour v3.3.5 ou v2.95.3
# make -f Makefile.bsd-wrapper clean
# make -f Makefile.bsd-wrapper obj
# make -f Makefile.bsd-wrapper depend
# make -f Makefile.bsd-wrapper
# make -f Makefile.bsd-wrapper install
Comme d'habitude, démarrer d'un snapshot est CONSIDERABLEMENT plus simple
et hautement recommandé.
Le support de _cxa_atexit a été ajouté à csu, libc, gcc et libstdc++ et aussi des changements dans les en-têtes sys/net qui requiert des précautions. Pour mettre à jour suivez ces étapes :
# cd /usr/src/lib/csu
# make obj && make depend && make && make install && make clean
# cd /usr/src/gnu/usr.bin/gcc
# make -f Makefile.bsd-wrapper obj
# make -f Makefile.bsd-wrapper depend
# make -f Makefile.bsd-wrapper
# make -f Makefile.bsd-wrapper install
# make -f Makefile.bsd-wrapper clean
libexpat a été déplacé de xenocara (xbase) vers src (base); si vous utilisez des snapshots et paquetages binaires, les choses évolueront normalement, quand les nouveaux snapshots seront disponibles.
Si vous compilez des logiciels à partir des sources, il est vital de nettoyer son système :
# mv /usr/X11R6/lib/libexpat.so.* /usr/lib # rm /usr/X11R6/lib/libexpat* # rm /usr/X11R6/include/expat*
Cette étape ajoutera aussi bien le nouvel utilisateur que son groupe correspondant. Votre environnement doit vous permettre de faire un copier/coller de ces commandes.# useradd -u90 -g=uid -c"OSPF6 Daemon" -d/var/empty -s/sbin/nologin _ospf6d
Les paquetages pour les modules de httpd(8) installent maintenant les fichiers de configuration dans /var/www/conf/modules.samples et demandent de créer par l'utilisateur des liens symboliques dans /var/www/conf/modules. Ajoutez la ligne suivante à /var/www/conf/httpd.conf après les directives LoadModule (à la fin de la section 1):
# # Include extra module configuration files # Include /var/www/conf/modules/*.conf
Des capacitées étendues requièrent de recompiler config(8) sur votre système :
# cd /usr/src/usr.sbin/config # make clean # make obj # make depend # make # make installPuis compilez et installez un nouveau noyau comme d'habitude.
Le nouveau pilote agp(4) requiert une mise à jour du serveur X après l'installation d'un nouveau noyau si votre machine demande le support AGP pour X ou XVideo.
Après l'installation d'un nouveau noyau, installez les nouveaux en-têtes noyau, recompilez le serveur X (ou installez un nouveau snapshot) et vérifiez que /dev/agp0 est créé.
# cd /usr/src/include # make includes # cd /usr/src/xenocara/xserver # make -f Makefile.bsd-wrapper build # cd /usr/src/etc/etc.`uname -m` # install -c MAKEDEV /dev # cd /dev # ./MAKEDEV agp0
Utilisez vipw(8), éditez les fichiers de mot de passe et avec votre éditeur favori éditez le fichier /etc/group, changez "_hoststated" en "_relayd" dans ceux-ci. Laissez le reste de la ligne intacte dans tous les cas.
Cette étape ajoutera le nouvel utilisateur et son groupe correspondant. Votre environnement doit vous permettre de faire un copier/coller de ces commandes.# useradd -u91 -g=uid -c"SNMP Daemon" -d/var/empty -s/sbin/nologin _snmpd
et le mettre à jour en -current.# mv /usr/src/xenocara /usr
Si vous avez toujours Option "xkbrules" "xfree86" dans votre fichier de configuration /etc/X11/xorg.conf, vous devez maintenant le changer en Option "xkbrules" "xorg".
Si vous voulez réellement compiler xenocara des sources (ne le faites pas, utilisez les snapshots !) xenocara/README et release(8)
Des changements récents du sous-système ahci(4) peut entraîner que des disques SATA qui étaient reconnus comme périphérique wd* (par exemple wd0) deviennent des périphériques sd* (par exemple sd0) à la place.
C'est un problème potentiel si vous mettez à jour d'un ancien snapshot. Regardez la sortie dmesg au démarrage. Un disque qui était reconnu avant comme :
pciide1 at pci0 dev 31 function 2 "Intel 82801GBM AHCI SATA" rev 0x02: DMA, channel 0 wired to native-PCI, channel 1 wired to native-PCIdeviendra
pciide1: using apic 2 int 11 (irq 11) for native-PCI interrupt
wd0 at pciide1 channel 0 drive 0: <FUJITSU MHV2080BH>
wd0: 16-sector PIO, LBA48, 76319MB, 156301488 sectors
wd0(pciide1:0:0): using PIO mode 4, Ultra-DMA mode 5
ahci0 at pci0 dev 31 function 2 "Intel 82801GBM AHCI SATA" rev 0x02: AHCI 1.1: apic 2 int 16 (irq 11)
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 0 lun 0: <ATA, FUJITSU MHV2080B, 0084> SCSI2 0/direct fixed
sd0: 76319MB, 76319 cyl, 64 head, 32 sec, 512 bytes/sec, 156301488 sec total
Il est donc recommandé d'éditer votre fichier /etc/fstab, changer les entrées /dev/wd en périphériques et partitions /dev/sd à la place.
L'autre option est de désactiver ahci en utilisant config(8) ou boot -c.
Lisez la page de manuel ahci(4) et config(8) pour tous les détails.
Les filtres bgpd utilisant seulement prefixlen comme paramètre de filtrage doivent maintenant inclure un identifiant de famille d'adresse comme inet ou inet6:
allow from any inet prefixlen 8 - 24
deny from any inet6 prefixlen > 64
Beaucoup de paquetages dépendent de libexpat à travers d'autres dépendances. Pour exemple, les paquetages qui utilisent gettext dépendent aussi de libexpat.
Cela signifie qu'avant d'installer de nouveaux paquetages ou de mettre à jour votre système vers une version plus récentes des snapshots de paquetages, vous devez avoir installé xbase42.tgz, même si les paquetages installés ne possèdent pas d'opérations graphiques. Lisez la FAQ sur l'ajout de xbase42.tgz sur un système installé. Si vous ne le faites pas et essayez d'installer un paquetage qui a besoin de libexpat, pkg_add(1) affichera un message d'erreur.
Si c'est la première fois que les groupes de fichiers X sont installés sur votre système, le cache des librairies partagées doit être mis à jour après l'installation en utilisant ldconfig(8). Pour ajouter toutes les librairies X au cache :
Alternativement, vous pouvez juste redémarrer votre système et cela se fera automatiquement.# ldconfig -m /usr/X11R6/lib
Finalement, après avoir mis à jour tous vos paquetages vers un snapshot plus récent, nettoyer votre système en supprimant l'ancien paquetage expat :
# pkg_delete expat
La détection de périphérique sur i386 a été modifiée pour que apm(4) l'emporte sur acpi(4). Cela signifie que si votre matériel possède des périphériques apm et acpi, seulement l'apm sera attaché. SI pour une raison quelconque vous préférez utiliser acpi, désactivez apm sur votre noyau acpi-actif en utilisant config(8) ou boot -c.
Des changements récents dans le pilote wpi(4) requièrent que le paquetage wpi-firmware soit mis à jour à la version 2.14.4.
Comme d'habitude, vous pouvez trouver un version prépackagée du firmware sur
:
http://damien.bergamini.free.fr/packages/openbsd/wpi-firmware-2.14.4.tgz
Pour que les choses continuent à fonctionner comme prévu, ajoutez la ligne suivante à votre fichier /etc/sudoers en utilisant visudo(8) :
# Defaults specification Defaults env_keep +="DESTDIR FETCH_CMD FLAVOR FTPMODE MAKE MULTI_PACKAGES OKAY_FILES PKG_DBDIR PKG_DESTDIR PKG_CACHE PKG_PATH PKG_TMPDIR PORTSDIR RELEASEDIR SUBPACKAGE"
SI votre NIC est l'une d'elle, vous avez besoin au minimum de modifier votre /etc/hostname.deX (astuce: lien en dur) et vos fichiers pf.conf comme il faut.
Encore une fois, c'est uniquement sur la plateforme Alpha.
# rm -rf /usr/include/g++
# cp /usr/src/share/mk/bsd.own.mk /usr/share/mk/
Maintenant, compilez gcc3, (en utilisant
le répertoire gcc3) et compilez le nouveau ld.so :
cd /usr/src/libexec/ld.so
make clean
make obj
make depend
make
make install
Maintenant, compilez le noyau et le système comme d'habitude.
En particulier il faudra être prudent avec l'interface enc0, car les états flottants sont des problèmes potentiels pour le filtrage du trafic IPsec : les états ont besoin d'être tenus par l'interface pour éviter de permettre à du trafic non chiffré de sortir de isakmpd(8). Par conséquent, toutes les règles sur l'interface enc0 devraient explicitement être keep state (if-bound).
Cette étape ajoutera aussi bien le nouvel utilisateur que son groupe correspondant. Votre environnement doit vous permettre de copier/coller ces commandes.# useradd -u88 -g=uid -c"RIP Daemon" -d/var/empty -s/sbin/nologin _ripd
Cette étape ajoutera aussi bien le nouvel utilisateur que son groupe correspondant. Votre environnement doit vous permettre de copier/coller ces commandes.# useradd -u89 -g=uid -c"HostState Daemon" -d/var/empty -s/sbin/nologin _hoststated
Greylisting est maintenant le mode de fonctionnement par défaut pour spamd(8); l'option -g est obsolète. Pour désactiver le greylisting et utiliser le mode blacklist-only, utilisez l'option -b. Pour contrôler sur quelle adresse spamd se lie, utilisez la nouvelle option -l.
On peut aussi dire à spamd-setup(8) de fonctionner en mode blacklist-only en lui passant la nouvelle option -b.
Le fichier spamd.conf(5) a été déplacé de /etc vers /etc/mail.
Regardez les pages man spamd(8) et spamd-setup(8) pour tous les détails.
Précédemment, le fichier /etc/hostname.pppoe0 ressemblait à cela :
pppoedev ne0
!/sbin/ifconfig ne0 up
!/usr/sbin/spppcontrol \$if myauthproto=pap myauthname=testcaller \
myauthkey=donttell
!/sbin/ifconfig \$if inet 0.0.0.0 0.0.0.1 netmask 0xffffffff
!/sbin/route add default 0.0.0.1
up
Il doit être mis à jour en suivant l'exemple suivant :
inet 0.0.0.0 255.255.255.255 0.0.0.1 pppoedev ne0 \ authproto pap authname testcaller authkey donttell up !/sbin/route add default 0.0.0.1Et l'interface physique doit être marquée UP:
# echo "up" > /etc/hostname.ne0
# useradd -u87 -g=uid -c"DVMRP Daemon" -d/var/empty -s/sbin/nologin _dvmrpd
Suivez les instructions dans FAQ 5 - How do I bootstrap a newer version of the compiler pour des détails.
# cd /usr/src/usr.bin/xargs && make obj && make && make install
Puis faite un make build.
Les instructions de mise à jour sont les suivantes :
Arrêtez l'ancien ftp-proxy en installant un nouveau /etc/inetd.conf ou juste en désactivant sont entrée dans /etc/inetd.conf manuellement.
cp /usr/src/etc/inetd.conf /etc/inetd.confPuis envoyez à inetd un signal HUP via kill:
kill -HUP `cat /var/run/inetd.pid`Démarrez le nouveau ftp-proxy en installant un nouveau /etc/rc et /etc/rc.conf puis en mettant ftpproxy_flags="" dans /etc/rc.conf.local.
cp /usr/src/etc/{rc,rc.conf} /etc
echo 'ftpproxy_flags=""' >> /etc/rc.conf.local
Alternativement, il peut-être démarré en l'appelant simplement
/usr/sbin/ftp-proxy dans /etc/rc.local.
Le nouveau proxy utilise les ancres pour permettre les connexions de données ce qui signifie que /etc/pf.conf doit être adapté. Dans la section NAT vous devez :
nat-anchor "ftp-proxy/*" rdr-anchor "ftp-proxy/*"Elles sont obligatoires, même si vous n'utilisez pas le NAT. La règle suivante, qui était probablement la pour l'ancien ftp-proxy, doit rester :
rdr pass on $int_if proto tcp from $lan to any port 21 -> \
127.0.0.1 port 8021
Dans la section des règles c'est nécessaire :
anchor "ftp-proxy/*"Les règles qui permettent au proxy de faire du contrôle de connexions FTP (destination port 21/tcp) doivent rester. Les règles qui permettent les connexions données FTP ne sont plus nécessaires. Ces règles doivent contenir "user proxy" ou "to port > 49151". La prudence a été de mise pour garder les options de la ligne de commande similaire, mais certaines sont différentes. Regardez la page de manuel ftp-proxy.
Un cas mérite une mention spéciale : si vous possèdez d'anciens clients qui s'appuient sur le mode actif des connexions de données qui utilisent 20/tcp comme port source, vous devez utilisez l'option '-r' (pour cela vous devez exécuter l'ancien proxy avec "-u root").
Utilisez ftp-proxy avec "-d -D7" si vous avez des problèmes et voulez diagnostiquer ce qui arrive.
# rm /usr/lib/libresolv*
# cp /usr/src/etc/etc.mac68k/MAKEDEV /dev
# cd /dev && sh ./MAKEDEV wscons
Dans /etc/ttys, changez le getty sur ttye0 vers ttyC0 et redémarrez avec le nouveau noyau.
Suivez les instructions dans FAQ 5 - How do I bootstrap a newer version of the compiler pour les détails.
Option "XkbLayout" "us"
Option "XkbVariant" "alt-intl"
Option "XkbLayout" "ch"
Option "XkbVariant" "de"
main auth hmac-sha1 enc aes
# cd /usr/src/gnu/lib/libstdc++
# make -f Makefile.bsd-wrapper cleandir
# make -f Makefile.bsd-wrapper obj
# make -f Makefile.bsd-wrapper
# make -f Makefile.bsd-wrapper install
# cd /usr/src/lib/libc && make depend && make && env NOMAN=1 make install
# cd /usr/src/usr.bin/make && make depend && make && make install
# cd /usr/src/gnu/usr.bin/binutils
# make -f Makefile.bsd-wrapper depend
# make -f Makefile.bsd-wrapper
# make -f Makefile.bsd-wrapper install
# cd /usr/src && make build
useradd -u86 -g=uid -c"HostAP Daemon" -d/var/empty -s/sbin/nologin _hostapd
en étant root.
# cd /usr/src/etc
# cp login.conf /etc
puis on se déconnecte et on se reconnecte.
# cd /usr/src/usr.bin/mklocale && make obj && make depend && make && make install
Puis faites un make build.
# rm -rf /usr/include/g++
Maintenant, compilez gcc3, (en utilisant
le répertoire de gcc3) puis compilez le noyau et le système comme
d'habitude.
useradd -u84 -g=uid -c"FTP Daemon" -d/var/empty -s/sbin/nologin _ftp
sous l'utilisateur root.
# rm -rf /usr/include/g++
Maintenant, compilez gcc3, (en utilisant
le répertoire de gcc3) puis compilez le noyau et le système comme
d'habitude.
useradd -u85 -g=uid -c"OSPF Daemon" -d/var/empty -s/sbin/nologin _ospfd
sous l'utilisateur root.
# cp /usr/src/etc/etc.`machine`/MAKEDEV /dev
Les numéros de périphériques mineurs de pty ont été modifiés pour augmenter le nombre maximum de pseudo-terminals de 256 à 992, donc vous devez exécuter le /dev/MAKEDEV mis à jour avant de démarrer un nouveau noyau :
# cp /usr/src/etc/etc.`machine`/MAKEDEV /dev
# cd /dev && ./MAKEDEV pty0
# cd /dev && rm -f [pt]ty[rq]*
# cd /dev && rm -f [pt]tyr*
Les daemons relatifs à dhcp ont été retravaillés pour supprimer des privilèges ou utiliser la séparation de privilège. Donc un nouvel utilisateur et groupe _dhcp sont nécessaires. Ajoutez le groupe en exécutant
# groupadd -g 77 _dhcpsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_dhcp:*:77:77::0:0:DHCP programs:/var/empty:/sbin/nologin
Le daemon mopd(8) supprime maintenant des privilèges après l'initialisation, et nécessite un nouvel utilisateur et groupe _mopd. Ajoutez le groupe en exécutant
# groupadd -g 78 _mopdsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_mopd:*:78:78::0:0:MOP Daemon:/var/empty:/sbin/nologin
Le daemon tftpd(8) daemon supprime maintenant des privilèges après l'initialisation, et nécessite un nouvel utilisateur et groupe _tftpd à la place de nobody. Ajoutez le groupe en exécutant
# groupadd -g 79 _tftpdsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_tftpd:*:79:79::0:0:TFTP Daemon:/var/empty:/sbin/nologin
Le daemon rbootd(8) daemon supprime maintenant des privilèges après l'initialisation vers un nouvel utilisateur et groupe _rbootd. Ajoutez le groupe en exécutant
# groupadd -g 80 _rbootdsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_rbootd:*:80:80::0:0:rbootd Daemon:/var/empty:/sbin/nologin
L'utilitaire cksum(1) a été déplacé de /usr/bin vers /bin. Après que vous avez finalisé un make build, exécutez sous l'utilisateur root :
# rm -f /usr/bin/cksum /usr/bin/sum
Le daemon afsd(8) utilise la séparation de privilège. Un nouvel utilisateur et groupe _afs sont nécessaires pour cela. Ajoutez le groupe en exécutant
# groupadd -g 81 _afssous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_afs:*:81:81::0:0:afs Daemon:/var/empty:/sbin/nologin
Vous avez besoin de changer le propriétaire du cache en exécutant
# chown -R _afs:_afs /var/spool/afs
Le programme pppoe(8) supprime maintenant ces privilèges vers un nouvel utilisateur et groupe _ppp. Ajoutez le groupe en exécutant
# groupadd -g 82 _pppsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_ppp:*:82:82::0:0:PPP utilities:/var/empty:/sbin/nologin
Le prochain programme ntpd(8) a besoin d'un nouvel utilisateur et groupe _ntp. Ajoutez le groupe en exécutant
# groupadd -g 83 _ntpsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_ntp:*:83:83::0:0:NTP Daemon:/var/empty:/sbin/nologin
Des changements d'interface système et de librairie on été fait qui nécessite un saut du numéro de version majeur de toutes les librairies. Les étapes suivantes doivent être suivies pour compiler un système utilisable.
# cd /usr/src && make obj && make cleandir && make includes
# cd /usr/src/lib/libc && make depend && make && env NOMAN=1 make install
# cd /usr/src && make build
Les utilisateurs de authpf doivent changer leurs règles d'ancrage de l'ensemble des règles principales de
anchor authpf
vers
anchor "authpf/*"
Les numéros de périphériques mineurs du périphérique svnd ont été modifiés, il est donc nécessaire d'exécuter la mise à jour de /dev/MAKEDEV après l'installation d'un nouveau noyau :
# cp /usr/src/etc/etc.`machine`/MAKEDEV /dev
# cd /dev
# rm svnd* rsvnd*
# ./MAKEDEV vnd
Le daemon pflogd(8) fonctionne maintenant avec la séparation des privilèges, et nécessite donc un nouvel utilisateur et groupe _pflogd. Ajoutez le groupe en exécutant
# groupadd -g 74 _pflogdsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_pflogd:*:74:74::0:0:pflogd privsep:/var/empty:/sbin/nologin
Plusieurs pseudo pilotes réseaux (comme gif(4), lo(4) et tun(4)) ont été modifiés pour supporter le clonage, donc la création et destruction de périphériques à la volée. Si vous dépendez de ces interfaces, vous devez installer et mettre à jour ifconfig(8) et netstart(8) avant de redémarrer votre nouveau noyau.
En premier compilez et installez votre nouveau noyau comme d'habitude
# cd /usr/src && make includes
# cd sbin/ifconfig
# make obj depend
# make
# make install
# cp /usr/src/etc/netstart /etc
Maintenant redémarrez votre machine et continuez avec la compilation d'un
nouveau userland.
Le nouveau daemon bgpd(8) fonctionne maintenant avec la séparation des privilèges, et nécessite donc un nouvel utilisateur et groupe _bgpd. Ajoutez le groupe en exécutant
# groupadd -g 75 _bgpdsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_bgpd:*:75:75::0:0:BGP Daemon:/var/empty:/sbin/nologin
La commande join(1) a été mise à jour pour suivre le standard POSIX standard lors de l'écriture de lignes non-correspondantes. Comme conséquence security(8) a été mis à jour :
# cp /usr/src/etc/security /etc
La façon dont la commande sudo(8) est compilée à changé. Comme effet secondaire suite à ce changement vous devez exécuter :
# rm -f /usr/obj/usr.bin/sudo/*
avant d'obtenir un "make build" réussi. SI cela n'est pas fait, la
compilation s'arrêtera lors du make obj dirs.
La commande tcpdump(8) fonctionne maintenant avec la séparation des privilèges, et nécessite donc un nouvel utilisateur et groupe _tcpdump. Ajoutez le groupe en exécutant
# groupadd -g 76 _tcpdumpsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_tcpdump:*:76:76::0:0:tcpdump:/var/empty:/sbin/nologin
Un changement dans machdep.c rend nécessaire que binutils soit recompilé avant la recompilation du noyau. Cela affecte seulement le i386.
# cd /usr/src/gnu/usr.bin/binutils # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install
Maintenant vous pouvez recompiler le noyau et le reste du système comme expliqué dans la section 1.5
Vous devez mettre à jour /usr/share/mk/bsd.own.mk pour avoir la définition de USE_GCC3 :
# cd /usr/src/share/mk
# make install
OpenBSD/sparc64 a été converti à gcc3. Pour mettre à jour,
# rm -rf /usr/include/g++
Maintenant compilez gcc3, (en utilisant le répertoire
gcc3) puis compilez le noyau et le système comme
d'habitude.
Pour activer le support i386 Writable xor exécute, OpenBSD/i386 a changé de format d'exécutable de a.out vers ELF. La flexibilité de ELF permet un meilleure contrôle sur la couche exécutable qui permet le support W^X. La compatibilité a.out est seulement disponible sous une forme limitée. Les binaires statiques a.out fonctionneront comme avant, les binaires a.out dynamiques NE SONT PLUS SUPPORTES.
LES MISES A JOUR SOURCE DE a.out -> ELF NE SERONT PAS SUPPORTEES. INSTALLEZ UN SNAPSHOT et vous pourrez recompiler des sources. C'est seulement pour i386, les autres architectures NE sont pas affectées par ces changements.
Les paramètres de l'appel système mquery ont été modifiés pour suivre mmap(). Il faut donc mettre à jour le système dans le bon ordre :
1. Compilez un nouveau noyau et démarrez.
2. (cd /usr/src && sudo make includes)
3. (cd /usr/src/libexec/ld.so && make && sudo make install)
4. 'make build'
Il n'y a que i386 qui utilise mquery, donc les autres architectures n'ont
pas besoin de suivre strictement cet ordre de compilation.
Pour permettre MAXDSIZ de retourner à 1G, l'adresse de base de tous les exécutables change de 0 à 0x1c000000. La combinaison de ces changements demande de mettre à jour d'un snapshot. La mise à jour des sources n'est pas supportée. Cela n'affecte que i386.
L'authentification basée sur KerberosIV a été supprimée. Il en résulte que vous devez supprimer toutes références à krb4 dans /etc/login.conf.
Bouger swapgeneric.c nécessite un changement dans config(8). Avant de compiler un nouveau noyau, vous devez en premier compiler et installer la mise à jour de config(8) :
# cd /usr/src/usr.sbin/config # make clean # make obj # make # make installMaintenant, config votre configuration noyau et exécutez un "make depend" dans votre répertoire de compilation noyau comme au-dessus.
__attribute__((bounded)) est maintenant utilisé pour détecter les
arguments incorrectes de fonctions qui prennent la taille de buffer
comme l'un de leur paramètre.
Vous devez recompiler gcc comme dans la section
1.8
de la Mini-FAQ avant de faire un make build.
Le daemon syslogd(8) fonctionne maintenant avec la séparation des privilèges, et nécessite donc un nouvel utilisateur et groupe _syslogd. Ajoutez le groupe en exécutant
# groupadd -g 73 _syslogdsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_syslogd:*:73:73::0:0:Syslog Daemon:/var/empty:/sbin/nologin
Un nouveau format d'attribut __kprintf__ est maintenant utilisé dans les
fichiers d'en-têtes du noyau pour que gcc soit conscient de l'extension de
format dans le noyau de
printf(9).
Vous devez recompiler gcc en suivant la section 1.8
de la Mini-FAQ avant de faire un make build. Vous avez seulement
besoin de recompiler gcc car les sources current supportent aussi
l'attribut __bounded__ décrit dans la section 3.3.6.
Perl a été mis à jour à la version 5.8.0.
Dans Perl 5.8.0, l'API du module XS a été modifiée à cause du passage
de stdio à PerlIO (regardez la page de manuel perldelta pour plus
d'informations). Cela signifie que tous les modules XS (fichiers perl
.so) que vous avez installé doivent être recompilé.
Si vous rencontrez une erreur comme
Undefined symbol "perl_get_sv" c'est votre problème. Si les
seuls modules que vous avez installé sont des paquetages ou via le
système de ports, vous pouvez vérifier votre système en exécutant :
# grep '\.so' /var/db/pkg/p5-*/+CONTENTS | cut -d: -f1 | sort -u
Vous devez supprimer les mauvais modules avec une pkg_delete -f
et les recompiler/installer de l'arbre des ports.
Plusieurs nouveaux groupes ont été ajoutés :
# groupadd -g 63 _radius # chgrp _radius /etc/raddb /etc/raddb/servers # chmod g+x /etc/raddb # chmod g+r /etc/raddb/servers # groupadd -g 64 _token # chgrp _token /etc/activ.db /etc/crypto.db /etc/snk.db # chmod 0640 /etc/activ.db /etc/crypto.db /etc/snk.db # groupadd -g 65 _shadow # chgrp _shadow /etc/spwd.db # chmod 0640 /etc/spwd.dbNe soyez pas inquiet des messages d'erreurs indiquant qu'un fichier n'a pas été trouvé. Cela signifie simplement que vous n'avez pas configuré l'authentification token ou radius.
L'extension de protection de pile propolice a été fusionnée dans gcc. Cela nécessite un scénario de mise à jour légèrement différent :
# cd /usr/src
# make obj
Pour les plateformes ELF (alpha, macppc, sparc, sparc64) :
# cd /usr/src/libexec/ld.so
# make depend && make && make install
Pour les plateformes a.out (amiga, hp300, i386, mac68k, mvme68k) :
# cd /usr/src/gnu/usr.bin/ld/rtld
# make depend && make && make install
# cd /usr/src/include
# make prereq && make includes
# cd /usr/src/lib/libc
# make depend && make NOMAN=1 && make NOMAN=1 install
A remarquer que, si votre compilateur est trop ancien, il ne sera pas
capable de compiler la libc. Dans ce cas, vous devez faire un mise à jour
binaire d'un snapshot.
Un nouvel utilisateur et un nouveau groupe _spamd pour le daemon spamd(8) ont été ajoutés. Ajoutez le groupe en exécutant
# groupadd -g 62 _spamdsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_spamd:*:62:62::0:0:Spam daemon:/var/empty:/sbin/nologin
Un nouvel alias pour ipv6-icmp, icmp6, a été ajouté à /etc/protocols. Si vous souhaitez utiliser l'alias icmp6 (utilisé dans les tests de régression pfctl(8)) vous devez modifier la ligne ipv6-icmp dans /etc/protocols, ajouter le mot clé icmp6 avant le #. Cette ligne peut-être comme cela :
ipv6-icmp 58 IPv6-ICMP icmp6 # ICMP for IPv6
Le groupe _lkm contrôle les accès à /dev/lkm. modstat(8) est maintenant setgid _lkm.
Vous devez ajouter ce groupe et ajuster les permissions sur /dev/lkm avant de faire un "make build". Les commandes suivantes, exécutées comme root, feront le nécessaire :
# groupadd -g 61 _lkm # chgrp _lkm /dev/lkm
libc_r et libnpthread ont été supprimées et remplacées par libpthread. Les programmes "threadés" doivent toujours être compilables avec l'option -pthread; le compilateur fait les choses de la bonne manière.
Avant de supprimer les applications "threade" avec libc_r et libnpthread, on doit les recompiler en utilisant libpthread. La méthode à suivre :
compilez gcc en suivant la section 1.8.
recompilez le système en suivant la section 1.5.
recompilez tous les ports "threade".
supprimez le librairies maintenant inutiles :
# rm /usr/lib/libc_r* /usr/lib/libnpthread*
Binutils/ld a été modifié pour introduire une nouvelle fonctionnalité de sécurité dans les exécutables ELF. A la place de permettre à la section data des exécutables et librairies partagées d'être marquées exécutable par le linker, la forme a été modifiée pour ne marquer exécutable que les sections appropriées de l'image du programme. Ce changement affecte seulement les architectures ELF basées sur : alpha, sparc, sparc64 et macppc.
Il est recommandé de recompiler binutils avant le reste du système.
# cd /usr/src/gnu/usr.bin/binutils # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install
Puis de recompiler le système en suivant la section 1.5
Le contenu de /var/at a été fusionné avec /var/cron maintenant que at a été intégré dans cron. En outre, les fichiers cron de permission et refus ont été renommés cron.allow et cron.deny pour être compatible POSIX et de la cohérence avec at.allow et at.deny.
En premier, recompilation du système en suivant la section 1.5 Puis déplacer les fichiers existants et redémarrer cron comme ci-dessous :
# mv /var/at/* /var/cron # mv /var/cron/jobs /var/cron/atjobs # mv /var/cron/allow /var/cron/cron.allow # mv /var/cron/deny /var/cron/cron.deny # rm -rf /var/at # kill `cat /var/run/cron.pid` # /usr/sbin/cron
Ne pas tenir compte des avertissements à propos de fichiers manquants de permission ou de refus. Tous ne font pas partie de l'installation par défaut.
Si vous n'avez pas déjà un fichier cron.deny (il n'était pas installé avant OpenBSD 3.3) vous devrez en avoir un pour utiliser crontab pour un utilisateur autre que superuser.
# install -c -o root -g crontab -m 660 /dev/null /var/cron/cron.deny
Perl a été mis à jour à la version 5.8.0.
Dans Perl 5.8.0, l'API du module XS a été modifiée à cause du passage
de stdio à PerlIO (regardez la page de manuel perldelta pour plus
d'informations). Cela signifie que tous les modules XS (fichiers perl
.so) que vous avez installé doivent être recompilé.
Si vous rencontrez une erreur comme
Undefined symbol "perl_get_sv" c'est votre problème. Si les
seuls modules que vous avez installé sont des paquetages ou via le
système de ports, vous pouvez vérifier votre système en exécutant :
# grep '\.so' /var/db/pkg/p5-*/+CONTENTS | cut -d: -f1 | sort -u
Vous devez supprimer les mauvais modules avec une pkg_delete -f
et les recompiler/installer de l'arbre des ports.
Plusieurs nouveaux groupes ont été ajoutés :
# groupadd -g 63 _radius # chgrp _radius /etc/raddb /etc/raddb/servers # chmod g+x /etc/raddb # chmod g+r /etc/raddb/servers # groupadd -g 64 _token # chgrp _token /etc/activ.db /etc/crypto.db /etc/snk.db # chmod 0640 /etc/activ.db /etc/crypto.db /etc/snk.db # groupadd -g 65 _shadow # chgrp _shadow /etc/spwd.db # chmod 0640 /etc/spwd.dbNe soyez pas inquiet des messages d'erreurs indiquant qu'un fichier n'a pas été trouvé. Cela signifie simplement que vous n'avez pas configuré l'authentification token ou radius.
L'extension de protection de pile propolice a été fusionnée dans gcc. Cela nécessite un scénario de mise à jour légèrement différent :
# cd /usr/src
# make obj
Pour les plateformes ELF (alpha, macppc, sparc, sparc64) :
# cd /usr/src/libexec/ld.so
# make depend && make && make install
Pour les plateformes a.out (amiga, hp300, i386, mac68k, mvme68k) :
# cd /usr/src/gnu/usr.bin/ld/rtld
# make depend && make && make install
# cd /usr/src/include
# make prereq && make includes
# cd /usr/src/lib/libc
# make depend && make NOMAN=1 && make NOMAN=1 install
A remarquer que, si votre compilateur est trop ancien, il ne sera pas
capable de compiler la libc. Dans ce cas, vous devez faire un mise à jour
binaire d'un snapshot.
Un nouvel utilisateur et un nouveau groupe _spamd pour le daemon spamd(8) ont été ajoutés. Ajoutez le groupe en exécutant
# groupadd -g 62 _spamdsous l'utilisateur root, et ajoutez l'utilisateur en utilisant vipw(8):
_spamd:*:62:62::0:0:Spam daemon:/var/empty:/sbin/nologin
Un nouvel alias pour ipv6-icmp, icmp6, a été ajouté à /etc/protocols. Si vous souhaitez utiliser l'alias icmp6 (utilisé dans les tests de régression pfctl(8)) vous devez modifier la ligne ipv6-icmp dans /etc/protocols, ajouter le mot clé icmp6 avant le #. Cette ligne peut-être comme cela :
ipv6-icmp 58 IPv6-ICMP icmp6 # ICMP for IPv6
Le groupe _lkm contrôle les accès à /dev/lkm. modstat(8) est maintenant setgid _lkm.
Vous devez ajouter ce groupe et ajuster les permissions sur /dev/lkm avant de faire un "make build". Les commandes suivantes, exécutées comme root, feront le nécessaire :
# groupadd -g 61 _lkm # chgrp _lkm /dev/lkm
libc_r et libnpthread ont été supprimées et remplacées par libpthread. Les programmes "threadés" doivent toujours être compilables avec l'option -pthread; le compilateur fait les choses de la bonne manière.
Avant de supprimer les applications "threade" avec libc_r et libnpthread, on doit les recompiler en utilisant libpthread. La méthode à suivre :
compilez gcc en suivant la section 1.8.
recompilez le système en suivant la section 1.5.
recompilez tous les ports "threade".
supprimez le librairies maintenant inutiles :
# rm /usr/lib/libc_r* /usr/lib/libnpthread*
Binutils/ld a été modifié pour introduire une nouvelle fonctionnalité de sécurité dans les exécutables ELF. A la place de permettre à la section data des exécutables et librairies partagées d'être marquées exécutable par le linker, la forme a été modifiée pour ne marquer exécutable que les sections appropriées de l'image du programme. Ce changement affecte seulement les architectures ELF basées sur : alpha, sparc, sparc64 et macppc.
Il est recommandé de recompiler binutils avant le reste du système.
# cd /usr/src/gnu/usr.bin/binutils # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install
Puis de recompiler le système en suivant la section 1.5
Le contenu de /var/at a été fusionné avec /var/cron maintenant que at a été intégré dans cron. En outre, les fichiers cron de permission et refus ont été renommés cron.allow et cron.deny pour être compatible POSIX et de la cohérence avec at.allow et at.deny.
En premier, recompilation du système en suivant la section 1.5 Puis déplacer les fichiers existants et redémarrer cron comme ci-dessous :
# mv /var/at/* /var/cron # mv /var/cron/jobs /var/cron/atjobs # mv /var/cron/allow /var/cron/cron.allow # mv /var/cron/deny /var/cron/cron.deny # rm -rf /var/at # kill `cat /var/run/cron.pid` # /usr/sbin/cron
Ne pas tenir compte des avertissements à propos de fichiers manquants de permission ou de refus. Tous ne font pas partie de l'installation par défaut.
Si vous n'avez pas déjà un fichier cron.deny (il n'était pas installé avant OpenBSD 3.3) vous devrez en avoir un pour utiliser crontab pour un utilisateur autre que superuser.
# install -c -o root -g crontab -m 660 /dev/null /var/cron/cron.deny
Plusieurs nouveaux utilisateurs/groupes ont été ajoutés. Pour supporter authpf(8), un nouveau groupe est nécessaire. Aussi, pour supporter les fonctionnalités de séparation de privilèges de sshd(8), un nouveau groupe et utilisateur sshd ont été ajoutés au système. Plusieurs nouveaux utilisateurs pour les services système ont été ajoutés, ils sont préfixés avec "_". Ajoutez les entrées utilisateur suivantes avec vipw(8):
sshd:*:27:27::0:0:sshd privsep:/var/empty:/sbin/nologin _portmap:*:28:28::0:0:portmap:/var/empty:/sbin/nologin _identd:*:29:29::0:0:identd:/var/empty:/sbin/nologin _rstatd:*:30:30::0:0:rpc.rstatd:/var/empty:/sbin/nologin _rusersd:*:32:32::0:0:rpc.rusersd:/var/empty:/sbin/nologin _fingerd:*:33:33::0:0:fingerd:/var/empty:/sbin/nologin _x11:*:35:35::0:0:X server:/var/empty:/sbin/nologin
Ajoutez les groupes suivants dans /etc/group:
sshd:*:27: _portmap:*:28: _identd:*:29: _rstatd:*:30: _rusersd:*:32: _fingerd:*:33: _sshagnt:*:34: _x11:*:35: authpf:*:72:
Les commandes crontab(1) et at(1) ne sont plus setuid root, elles sont maintenant setgid crontab.
Avant de faire un "make build", vous devrez ajouter le groupe crontab. Ajoutez une ligne comme la suivante dans votre fichier /etc/group :
crontab:*:66:
Le "make build" mettra à jour certaines, mais pas toutes, permissions pour vous. Après la fin du "make build", vous devrez exécuter à la main (via /bin/csh):
# chgrp crontab /var/at/at.{allow,deny} /var/cron/{allow,deny}
# chmod 0640 /var/at/at.{allow,deny} /var/cron/{allow,deny}
# foreach f ( /var/cron/tabs/* )
set u=`basename $f`
chown $u:crontab $f
end
Il faut remarquer que vous n'avez probablement pas tous les fichiers de permission/refus; ce n'est pas un problème.
Un nouveau binutils (2.11.2) est arrive dans l'arborescence, ce qui nécessite une mise à jour de libiberty. Pour compiler cette librairie, suivez les étapes suivantes :
# cd /usr/src/gnu/egcs/libiberty # make -f Makefile.bsd-wrapper cleandir # make -f Makefile.bsd-wrapper obj # make -f Makefile.bsd-wrapper depend # make -f Makefile.bsd-wrapper # make -f Makefile.bsd-wrapper install
L'ancien fichier de base de données S/Key, /etc/skeykeys, a été remplacé par un répertoire /etc/skey, ou chaque enregistrement est un fichier individuel propriété de l'utilisateur qu'il décrit. Vous pouvez convertir /etc/skeykeys vers le nouveau format en faisant (sous root) :
# skeyinit -C # mv /etc/skeykeys /etc/skeykeys.OLD
Il faut remarquer que chaque programme tiers qui utilisait directement S/Key devra être recompilé.
Les répertoires de spool utilisés par lpd doivent maintenant être en écriture pour le groupe daemon pour que lpr soit capable de spool les fichiers. En outre, les fichiers à l'intérieur des répertoires de spool doivent être détenues par l'utilisateur et le groupe daemon. Cela peut être accompli comme suit :
# find /var/spool/output /var/spool/lpd -type d \
-execdir chgrp daemon {} \; -execdir chmod g+rwx {} \;
# find /var/spool/output /var/spool/lpd -type f \
-execdir chown daemon:daemon {} \;
La commande atrun(8) n'est plus nécessaire. Ces fonctionnalités ont été intégrées dans cron(8). Vous devez supprimer le job /usr/libexec/atrun de la crontab du root en exécutant sous root :
# crontab -e
Vous pourrez aussi supprimer /usr/libexec/atrun, /usr/share/man/cat8/atrun.0 et le répertoire /var/at/spool.
/etc/nat.conf est maintenant fusionné avec /etc/pf.conf. Vous devez insérer vos règles NAT dans pf.conf après les règles scrub et avant les règles de filtrage.
pfctl(8) possède une nouvelle option pour charger un ensemble de règles, -f, et les options -R et -N ont une nouvelle signification maintenant. Soyez sur de vérifier le manpage et de mettre à jour votre /etc/rc.
login(1) a besoin de chown /dev/wsmouse vers le nouvel utilisateur _x11 qui est utilisé pour les besoins de révocation de privilèges de xdm sur plusieurs architectures. La modification de /etc/fbtab nécessaire est dépendante de l'architecture. Le fichier est créé via ce processus (en s'assurant que les sources sont dans /usr/src) :
# cat /usr/src/etc/fbtab.head > /etc/fbtab # cat /usr/src/etc/etc.`uname -m`/fbtab >> /etc/fbtab # cat /usr/src/etc/fbtab.tail >> /etc/fbtab
SI vous avez des changements personnels sur /etc/fbtab, vous devrez les fusionner dans le nouveau fichier manuellement.
__attribute__((sentinel)) est maintenant utilisé pour avertir quand
certaines fonctions
exec(3)
sont utilisées sans un pointeur NULL terminal.
Vous devez recompiler gcc en suivant la section
1.8
de la Mini-FAQ avant de faire un make build.
Vous devez compiler et installer une nouvelle version de l'utilitaire mtree(8) avant qu'un "make build" soit un succès.
# cd /usr/src/usr.sbin/mtree # make cleandir # make obj # make depend # make # make install
Les plateformes basées sur ELF (alpha, macppc et sparc64) n'utilise plus libdl. La mise à jour à partir d'un système libdl vers non-libdl peut-être réalisé en suivant ces étapes :
Recompilez votre système :
# cd /usr/src # make build
Si votre "make build" est un succès, vous pouvez passer à l'étape suivante et supprimer libdl. Il faut remarquer que les paquetages qui sont liés avec libdl doivent être réinstallés. Si vous n'êtes pas prés pour cela, vous pouvez sauter cette étape à présent. Des snapshots avec les paquetages corrects seront disponibles.
# rm -f /usr/lib/libdl.* /usr/lib/libdl_pic.a
Avec la libdl supprimée, régénérez votre cache de librairies partagées :
# ldconfig -R
Une nouvelle infrastructure pour les tests de régression a été introduite et bsd.regress.mk a été ajouté. Vous devez installer ce fichier avant de faire un make obj.
# cd /usr/src/share/mk # make install
Vous devez créer /etc/ssh/ en premier, voir la section 1.13
Recompilez votre système :
# cd /usr/src # make build
Déplacez les fichiers /etc/ssh*_* dans le nouvau répertoire crée /etc/ssh/ :
# cd /etc # mv ssh*_* ssh/
Vous devez aussi modifier vos scripts rc pour refléter ces changements évidemment.
Mettre à jour toutes les lignes HostKey dans votre sshd_config pour refléter le nouvel emplacement. Par exemple :
HostKey /etc/ssh_host_key
doit être modifié en :
HostKey /etc/ssh/ssh_host_key
Après cela, vous pouvez redémarrer le daemon sshd.
En premier, avec l'ajout du paquetage pare-feu pf(4) et sa suite ftp-proxy(8), un nouvel utilisateur et groupe nommés proxy ont été ajoutés au système. Pour supporter cet ajout, ajoutez l'entrée utilisateur suivante en utilisant vipw(8):
proxy:*:71:71::0:0:Proxy Services:/nonexistent:/sbin/nologin
Ajoutez aussi le groupe proxy à /etc/group:
proxy:*:71:
En second, inclus dans la mise à jour de Sendmail 8.12, sendmail ne fonctionne plus setuid root. Donc un nouvel utilisateur et groupe, nommés smmsp, ont été ajoutés au système. Ajoutez la ligne suivante dans votre /etc/group:
smmsp:*:25:
Maintenant, utilisez vipw(8) et ajoutez la ligne suivante pour l'utilisateur smmsp :
smmsp:*:25:25::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin
Soyez sure que la ligne apparaît avant toute ligne de configuration yp(8).
Finalement, un nouvel utilisateur et groupe ont été ajoutés au serveur popa3d de Solar Designer, maintenant intégré au coeur du système. Ajoutez dans /etc/group :
popa3d:*:26:
Et utilisant vipw(8), ajoutez
popa3d:*:26:26::0:0:POP3 server:/var/empty:/sbin/nologin
Le paquetage pare-feu IPF qui faisait parti des versions précédentes de OpenBSD a été remplacé par la toute nouvelle suite de pare-feu appelée pf(4). Il en résulte un nombre de changements à réaliser.
En premier, pf dépend d'un nouveau périphérique de fichier. Pour être sur que ce nouveau périphérique spécial est créé, faite :
# cd /dev # cp /usr/src/etc/etc.`machine`/MAKEDEV ./ # ./MAKEDEV all
En second, il y a un nombre important de changements dans le système de fichiers. Pour référence, les binaires suivants ont été remplacés :
ANCIEN: /sbin/ipf /sbin/ipfstat /sbin/ipnat /usr/sbin/ipfs /usr/sbin/ipftest /usr/sbin/ipmon /usr/sbin/ipresend /usr/sbin/ipsend /usr/sbin/iptest NOUVEAU: /sbin/pfctl /usr/libexec/ftp-proxy
De façon similaire, pour les périphériques :
ANCIEN: /dev/ipl /dev/ipnat /dev/ipstate /dev/ipauth NOUVEAU: /dev/pf
Et finalement, les fichiers de configuration du filtre :
ANCIEN: /etc/ipf.rules /etc/ipnat.rules NOUVEAU: /etc/pf.conf /etc/nat.conf
Les anciens fichiers de configuration d'exemples doivent être supprimés :
# rm -rf /usr/share/ipf
Un mécanisme pour activer prudemment pf a été ajouté aux fichiers /etc/rc et /etc/rc.conf. Vous devez mettre à jour ces fichiers pour inclure le nouveau mécanisme. Si vous désirez activer pf, ajouter PF=YES dans /etc/rc.conf.
Il y a eu des changements dans make(1) et ces fichiers de données qui peuvent causer des problèmes dans le processus de compilation. Cela se manifeste habituellement comme des erreurs de bsd.own.mk durant le compilation. Pour les éviter, mettez à jour en premier les fichiers de données :
# cd /usr/src/share/mk # make install
Puis compilez et installez le nouveau make.
# cd /usr/src/usr.bin/make # make clean && make obj && make depend && make # make install
Maintenant procédez à la mise à jour.
Avant d'essayer de compiler le système complet, vous devez en premier compiler KerberosV.
Premièrement, il y a un nouveau répertoire de configuration KerberosV dans /etc. Si vous ne l'avez pas déjà fait, utilisez la procédure mtree(8) décrite dans la section 1.13 pour le créer :
Maintenant compilez KerberosV
# cd /usr/src/kerberosV # make obj # cd lib/roken # make # cd ../../usr.bin/asn1_compile # make # make install
Vous pouvez aussi avoir besoin de mettre à jour votre /etc/login.conf, pour refléter que le fichier /usr/libexec/auth/login_krb-or-pwd a été renommé en login_krb4-or-pwd.
sendmail(8) a été mis à jour à la version 8.12. Comme cette version de sendmail ne fonctionne plus en setuid root, des changements significatifs en résultent.
Ajoutez ce qui suit dans la crontab(1) du root. C'est nécessaire depuis que sendmail n'est plus setuid root, et nécessite cette entrée pour faire une partie du travail :
# sendmail clientmqueue runner */30 * * * * /usr/sbin/sendmail -L sm-msp-queue -Ac -q
Mise à jour de sendmail:
# cd /usr/src/gnu/usr.sbin/sendmail # make clean && make obj && make depend && make && make install
Remarque : Les fichiers submit.cf et localhost.cf ont été installés dans votre répertoire /etc/mail. Le premier, submit.cf (qui se réfère au fichier de configuration "client" dans la documentation de sendmail) est utilisé par les agents utilisateur mail qui veulent délivrer des messages localement via sendmail. A cause des changements de permissions décris ci-dessus, cela ne nécessite pas les droits root; le binaire de sendmail est set-groupid au groupe smmsp. Le second fichier, localhost.cf, est un OpenBSD-ism qui exécute sendmail uniquement en écoute sur l'interface localhost pour accepter les messages de l'hôte local mais n'accepte pas les connexions du réseau (vous voudrez sûrement cela si vous utilisez aussi smtpd(8) écoutant sur le port SMTP de votre interface externe). Pour plus de détails, regardez le fichier SECURITY dans /usr/src/gnu/usr.sbin/sendmail/sendmail.
Il est hautement recommandé de régénérer et mettre à jour vos fichiers de configuration sendmail dans /etc/mail. Vous pouvez trouver des fichiers de configuration qui fonctionnent dans /usr/share/sendmail/cf. Il faut remarquer que localhost.cf est généré de openbsd-localhost.mc.
Si vous utilisez sendmail sans l'option -bd dans /etc/rc.conf, comme configuration par défaut à l'installation, vous devrez utiliser localhost.cf. Editez rc.conf pour l'utiliser en suivant :
# For normal use: "-L sm-mta -bd -q30m" sendmail_flags="-L sm-mta -C/etc/mail/localhost.cf -bd -q30m"
Des que votre fichier de configuration est prés, kill(1) le sendmail existant :
kill `sed 1q /var/run/sendmail.pid`
Redémarrez le nouveau sendmail avec les options appropriées, par exemple :
/usr/sbin/sendmail -L sm-mta -bd -q30m
pour une configuration acceptant les messages de l'extérieur, ou
/usr/sbin/sendmail -L sm-mta -C/etc/mail/localhost.cf -bd -q30m
pour une configuration locale de message uniquement.
Remarque : l'option -bd est maintenant nécessaire dans tous les cas.
Le nouveau sendmail doit maintenant fonctionner.
/etc/primes a été renommé en /etc/moduli. Copiez simplement ce fichier de son ancien emplacement ou de /usr/src/etc.
Un nouveau groupe, auth, gid 11, a été ajouté au système. Ajoutez la ligne suivante dans /etc/group:
auth:*:11:
Le pilote de console pcvt a été remplacé par le pilote de console système wscons. Avant d'utiliser wscons, vous devez créer les nouveaux périphériques relatifs à wscons. Assurez vous que vous avez le dernier MAKEDEV installé, puis créez tous les périphériques :
# cp /usr/src/etc/etc.i386/MAKEDEV /dev/MAKEDEV # cd /dev # ./MAKEDEV all
Si vous utilisez X, changez la section Pointer de votre fichier XF86Config contenant :
Protocol "wsmouse"
Device "/dev/wsmouse"
config(8) a été mis à jour. Compiler avec l'ancien config donnera des résultats erronés comme :
Undefined symbol `_pdevnames_size' referenced Undefined symbol `_pdevnames' referenced
Pour corriger cela, compilez et installez le nouveau config:
# cd /usr/src/usr.sbin/config # make clean && make depend && make # make install
Maintenant, recompilez un nouveau noyau comme précédemment.
Un changement significatif dans gcc a été introduit qui lui permet de générer facilement des librairies libc auto-reférencées. Pour cette raison, la mise à jour doit suivre cette procédure exactement :
Compilez et installez un nouveau linker. Cela doit être fait avant une compilation complète de gcc.
$ cd /usr/src/gnu/usr.bin/ld $ make clean && make obj && make $ sudo make install
Compilez un nouveau noyau. Ne l'installez pas encore
$ cd /usr/src/sys/arch/`machine`/conf $ config GENERIC $ cd ../compile/GENERIC $ make clean && make depend && make
A cause des changements dans la libc, votre machine se bloquera au démarrage tant que votre /etc/resolv.conf ne contiendra pas lookup file bind. Ajoutez la ligne suivante si nécessaire
# echo "lookup file bind" >> /etc/resolv.conf
# cd /usr/src/sys/arch/`machine`/compile/GENERIC # mv /bsd /bsd.old # mv bsd /bsd # chown root.wheel /bsd # shutdown -r now
(Si cette étape ne réussi pas, vous pouvez redémarrer avec l'ancien noyau - bsd.old - au prompt boot> prompt.)
Compilez et installez le nouveau make (et ces fichiers associés). Ne sautez pas l'étape make depend.
$ cd /usr/src/usr.bin/make $ make clean && make obj && make depend && make $ sudo make install $ cd /usr/src/share/mk $ sudo make install
Installez le dernier mtree, et assurez vous que les répertoires nécessaires sont présent.
$ cd /usr/src/etc/mtree $ sudo install -c -o root -g wheel -m 444 4.4BSD.dist /etc/mtree $ sudo mtree -qdef /etc/mtree/
# cd /usr/src && make build
Il y a un nouveau fichier termcaps.master. Vous devez régénérer les fichiers terminfo et termcaps avec la version courante de tic(1). Si vous mettez à jour via make build, la version correcte de tic(1) sera utilisée et le nécessaire sera fait pour vous. Sinon, vous obtiendrez l'erreur suivante :
terminfo.src is corrupt! You need to update /usr/bin/tic
Dans ce cas, vous devez recompiler et installer tic(1) (en étant sur d'utiliser la version courante de libcurses) ou en compilant simplement la version de tic(1) de votre arborescence des sources.
(Remarque: pn est utilisé ici pour sa simplicité. Il faudra lire pn, mx, al ou ax de manière appropriée).
Ces quatre pilotes ont été remplacés par un pilote unifié dc. Vous devez remplacer toutes les occurrences de pn*, mx, al ou ax dans vos fichiers de configuration. Cela inclut :
Si vous modifiez un noyau personnalisé, soyez sur d'inclure le périphérique dcphy dans votre configuration noyau, comme :
dcphy* at mii? phy ? # Digital Clone PHYs
tant que vous y êtes, vous voudrez aussi ajouter :
ukphy* at mii? phy ? # "unknown" PHYs
gcc 2.95.2 a fusionné dans l'arborescence des sources de OpenBSD vers le 19 Janvier 2000. Dans l'ordre, pour que gcc compile proprement, une version plus récente de libiberty (après 2.6) est nécessaire. Pour compiler cette librairie, faire :
cd /usr/src/gnu/egcs/libiberty make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper obj make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install
REMARQUE: Sur les architectures basées sur mips, comme le pmax, vous devez faire explicitement un ldconfig après que les nouvelles librairies seront compilées.
Des que libiberty est compilé, vous devez réaliser un bootstrap gcc standard :
cd /usr/src/gnu/egcs/gcc make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper obj make -f Makefile.bsd-wrapper -DBOOTSTRAP make -f Makefile.bsd-wrapper -DBOOTSTRAP install make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install
Pour que Kerberos IV se compile correctement, vous devez suivre les étapes suivantes :
Récupérez et compilez le dernier usr.bin/compile_et.
# cd /usr/src/usr.bin/compile_et # make clean && make depend && make && make install
Récupérez et compilez la dernière lib/libcom_err.
# cd /usr/src/lib/libcom_err # make clean && make depend && make && make install
Nettoyez et réinstallez les fichiers d'en-têtes Kerberos :
# rm -r /usr/include/kerberosIV/* # cd /usr/src/kerberosIV # make includes
Maintenant, recompilez les fichiers de librairie Kerberos :
# cd /usr/src/kerberosIV/lib # make clean && make depend && make && make install
Si vous ne faite pas un make build complet, recompilez Kerberos:
# cd /usr/src/kerberosIV # make cleandir && make depend && make && make install
La version de m4 qui est fournie avec OpenBSD 2.6 partira dans une boucle infinie quand elle traitera les fichiers sendmail .mc en fichiers .cf. A cause de cela vous devez installer une nouvelle version de m4 avant de tenter un make build. En d'autres mots :
# cd /usr/src/usr.bin/m4
# make && make install && make cleandir
Dans sendmail 8.10.X, les emplacements (et noms) des fichiers de configuration de sendmail ont changé. Tout sauf le fichier de pid se trouve maintenant dans /etc/mail. De plus, plusieurs fichiers ont changé de noms.
| ANCIEN | NOUVEAU |
| /etc/sendmail.cf | /etc/mail/sendmail.cf |
| /etc/sendmail.cw | /etc/mail/local-host-names |
| /etc/sendmail.ct | /etc/mail/trusted-users |
| /etc/sendmail.oE | /etc/mail/error-header |
| /etc/aliases | /etc/mail/aliases |
| /etc/service.switch | /etc/mail/service.switch |
| /etc/userdb | /etc/mail/userdb |
| /usr/share/misc/sendmail.hf | /etc/mail/helpfile |
Il y a différentes façons de convertir de l'ancienne vers la nouvelle configuration de sendmail, mais la premiére étape est toujours la même.
include(`../m4/cf.m4')depuis qu'elle est incluse pour vous par make. A remarquer aussi que lorsque vous ajoutez des machines de class w (via "Cw nomdemachine"), vous avez maintenant besoin de faire cela dans la section LOCAL_CONFIG (voir openbsd-lists.mc pour un exemple).
Vous devez mettre à jour vos bootblocks. Voir la Section 14.8 de la FAQ OpenBSD pour des détails.
Le groupe par défaut pour l'utilisateur daemon a été modifié de 31 à 1. Utilisez vipw pour effectuer ce changement et que le daemon ressemble à :
daemon:*:1:1::0:0:The devil himself:/root:/sbin/nologin
La dernière version de Perl (5.005_03) nécessite une nouvelle version de make pour compiler proprement. Vous devez recompiler make avant de compiler le nouveau Perl. Faire un :
# cd /usr/src/usr.bin/make # make clean && make && make install
Maintenant recompilez le nouveau Perl. Vous devrez nettoyer le répertoire
obj Perl à la main avant la compilation.
Les développeurs Perl doivent lire les remarques des derniers changements. De millert@openbsd.org:
The version of perl in the OpenBSD source tree (post 2.5) has been upgraded to 5.005_03. The build method has changed somewhat but most of that should be invisible. The important changes that affect people are as follows: 1) Perl lib files have moved from /usr/lib/perl5 to the more correct /usr/libdata/perl5 2) The default site_perl directories now live in /usr/local. Ie: if you install a perl module, it will place itself in /usr/local/libdata/perl5/site_lib. This makes it easy to see what non-stock modules you have. It also means that we can have perl modules in the ports system easily. 3) The perl library man pages are now install in /usr/share/man/cat3p You'll need to update your man.conf based on the src/etc/man.conf to take advantage of them. This means you can now do "man 3p less" and get info on the less pragma but "man less" will still get you the less pager manpage. If you have modules or other non-stock perl files the simplest thing to do is to move /usr/lib/perl5 to /usr/libdata/perl5 and add a link from /usr/lib/perl5 to /usr/libdata/perl5. Alternately, you could just edit the installed Config.pm file and fix up the paths there.
Ce changement est le changement le plus significatif que vous rencontrerez. Pour des instructions détaillées, voir la section 2.5.2.
La structure statfs a été modifiée le 31 Mai. Vous devez recompiler votre noyau avant de faire un make build. Voir 2.5.3 pour les détails.
La façon la plus sure est de mettre à jour avec un snapshot récent, quand il sera disponible. Regardez pour un snapshot en premier !. Démarrer le nouveau compilateur à partir de l'ancien doit être en dernier recours.
Premièrement, il faut remarquer que certaines plateformes n'ont pas été "bootstrapped" avec succès. A ce jour, les plateformes suivantes doivent fonctionner si vous faites attention :
mips et rs6000 ont des problèmes.
Pour tester si votre plateforme peut être "bootstrapped", récupérez et installez le egcs-snapshot, disponible dans la ports collection. Si cela fonctionne, la version dans l'arborescence fonctionnera aussi. C'est la méthode la plus sure de procéder.
Maintenant, avant d'aller plus loin, assurez-vous que votre copie de binutils, gas et ld sont à jour. Il faut remarquer qu'il y a deux versions de gas et ld dans l'arborescence. Sur i386 et sparc, les versions de binutils ne sont pas utilisées. Vérifiez /usr/src/gnu/usr.bin/gas et /usr/src/gnu/usr.bin/ld à la place.
Les instructions suivantes se réfèrent au snapshot original de egcs (egcs-990517). Depuis cette date, un second snapshot (egcs-990608) a été importé dans l'arborescence. Si vous avez une vanilla 2.5, il ne sera pas possible de compiler directement la dernière version. Dans cette éventualité, vous devrez faire un "bootstrap" d'une version intermédiaire en suivant ces instructions.
De espie@openbsd.org:
Today, the compiler changes. Exit gcc 2.8.1, enter egcs... or more precisely, gcc 2.95 prerelease. This is probably going to be a rough ride, but I can't work out all the kinks on every architecture by myself. I'm going to start importing stuff *now*. There will be a second message to tech@ once things are settled... Thanks to everyone who helped me sorting stuff out, most especially niklas, turan, and millert. Why the switch -------------- as most of you already know, egcs is now the *official* compiler supported by the FSF. The upcoming july release as been re-christened gcc 2.95. Just looking at the log messages will show you many improvements: support for newer processors is better, C++ is more accurately matching the ANSI/ISO standards, Fortran 77 is more closely integrated. There are also countless bug-fixes and code generation improvements. Also the development is more open. There is a cvs tree, there are several mailing-lists available, and we are cooperating closely with the egcs team. More precisely, I've been feeding patches back to the egcs team so that OpenBSD configurations are officially supported. Also, the development team is highly responsive to bug-reports, and problems get fixed. There also is a band-wagon phenomenon: everyone is switching to egcs, which means lots of code to test the compiler on, and that we can benefit from related projects. Why now ------- egcs-1.1 was unfit for some purposes. Specifically, code size on i386 was larger than gcc 2.8.1, which yielded floppy-disks problems. At 2.5 freeze, the only code fit to include was a somewhat unstable snapshot. In the interest of stability, after much pondering, egcs was not put into 2.5. Right now, the egcs project is going through a release cycle which will yield egcs 1.2. Judging from their time schedule, there is ample margin between egcs 1.2 and the next release of OpenBSD. Also, we want to get in now, so that we get a chance to report problems on less frequently used architectures, and get everything fixed for 1.2. egcs `feature freeze' is supposed to occur on may 7th, and the current snapshot 19990502 looks solid. What works and what doesn't --------------------------- egcs runs an i386 OpenBSD system without problems. m68k works as well, with a few work-arounds linked to obscure bugs that will get fixed. sparc seems to be running as well. There is some linker trouble on some other arches that needs to be fixed before our next release. Right now, constructors across dynamic libraries are not quite ready. egcs now features a stand-alone cpp which is going to be better than the current hackish solution we use. This means a few interface changes and possibly weird warnings. Keeping gcc 2.8.1 ? ------------------- due to size constraints, as soon as egcs is imported, gcc is going to move to cvs Attic. If you don't want to deal with egcs now, you'll have to be careful through your cvs updates. Some Makefiles are bound to change: includes, gnu/usr.bin, and gnu/lib. xlint and cpp.sh are going to change as well. How to bootstrap the compiler ----------------------------- the simplest way is probably to trust the various arch maintainers and download a snapshot. If you want to do stuff the hard way, you must first remake proper obj dirs: cd /usr/src make obj If you run i386, gas must be up-to-date. If you run sparc, ld must be up-to-date. then build libiberty: cd /usr/src/gnu/egcs/libiberty make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install then the C compiler: cd /usr/src/gnu/egcs/gcc make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install rebuild the C compiler with the new version: cd /usr/src/gnu/egcs/gcc make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install rebuild the includes cd /usr/src/include make includes build all egcs libraries and install them cd /usr/src/gnu/egcs make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install install the new cpp driver cd /usr/src/usr.bin/cpp make install then you're all set, and a standard make build should work...[Remarque de l'auteur : Actuellement, cela ne fonctionne pas. xlint ne se compilera pas. Le correctif est simple heureusement. Faire simplement un
make && make installdans le répertoire/usr/src/usr.bin/xlint/xlintavant d'essayer un make build. Voir 2.5.2.2.]If it doesn't, you're using an arch that didn't go through make build yet. The most probably occurrence is an Internal Compiler Error, as known as an ICE. First try to see if the ICE will go away with -O1 or -O0. In that case, you can put a work-around in the Makefile until it's fixed (see /usr/src/lib/libm/Makefile for an example of how to put in such work-arounds for m68k). Then the error needs to be reported to the egcs-bugs mailing list. At a minimum, you must run the source through the same compiler invocation, with an addition of -v -save-temps to the options. -v yields the precise sequence of commands invoked by gcc. -save-temps will give you a pre-processed C file (.i) or C++ (.ii) that the egcs people can make sense of... you can't ask them to run OpenBSD on their boxes. If you have more time, you can try to trim down the pre-processed C file to the bare minimum that triggers the bug. Dichotomy works nicely.
Si vous avez suivi cette procédure et que tout fonctionne, félicitations. Sinon, regardez les sections suivantes pour avis. Les problèmes non affichés ici doivent être postés sur tech@openbsd.org.
c'est vrai. egcs utilise __i386__ et __sparc__. Si vous devez compiler du code qui dépend des anciens defines, ajoutez un -Dsparc ou -Di386 dans les emplacements appropriés de votre Makefile.
C'est du à une différence sémantique dans. Le contournement est simple, et similaire à la résolution de cap_mkdb décrite dans 2.4.2.
Faire un :
# cd /usr/src/usr.bin/xlint/xlint # make && make install
maintenant refaire un make, et la compilation continue.
Vous êtes victime d'un bogue du linker. Voici le message l'expliquant :
From: Marc Espie <Marc.Espie@liafa.jussieu.fr>
Subject: egcs core-dumping on uthread_autoinit.c
If this happens to you, this is a known linker problem... the cc1 you have
was linked in a weird way.
Initially, I made cc1 link against static /usr/lib/libiberty.a to avoid this
problem, but this was cutting things too close, and the bug reappeared,
probably thanks to unrelated changes in libc or elsewhere...
The tree has been patched with a work-around in
src/gnu/egcs/f/lang-options.h
make sure you have the kludged version of that file (at least rev 1.2),
recompile and reinstall cc1, the problem should go away.
What's going on is that the 386 linker gets something wrong because of
the huge strings array in toplev.c, and something gets mislinked, so
that
void f(void) __attribute((constructor)) {}
kills cc1.
As a work-around, I've killed Fortran options help texts, until someone finds
where the linker errs.
Il l'est, mais il y a une raison. egcs fait plus de passes d'optimisation. Les alignements de données et d'autres fonctionnalités seront meilleures avec le code généré par egcs.
Oui c'est le cas. C'est visible spécialement avec l'ancienne option de gcc -O2. egcs a introduit une nouvelle option, -Os qui optimise la taille. C'est assez comparable avec l'ancienne option -O2 .
egcs s'installe dans un sous-répertoire différent que gcc 2.8.1. Vous pouvez supprimer gcc des que egcs fonctionne correctement.
Sur une remarque liée, les changements dans perl mentionnés dans 2.5.1 signifie que vous pouvez supprimer le répertoire /usr/lib/perl5. Le nouvel emplacement pour ces données est /usr/libdata/perl5.
libcurses est maintenant relié à la dernière version de cpp. Récupérez la dernière version, recompilez cpp et continuez. Donc :
# cd /usr/src/usr.bin/cpp && make install
Et réessayez le make build.
Si votre make obj s'arrête, citant des erreurs dans le Makefile, vos includes makefile sont obsolètes. Par exemple :
===> lib/libkvm
"Makefile", line 30: Malformed conditional ((${UVM} == "yes"))
"Makefile", line 30: Missing dependency operator
"Makefile", line 32: if-less endif
"Makefile", line 32: Need an operator
Fatal errors encountered -- cannot continue
Cela peut-être résolu en recompilant les includes makefile. Faire un :
cd /usr/src/share/mk && make install
Et réessayez de compiler.
Réponse courte :
La structure du noyau statfs a été modifiée. Vous devez recompiler le noyau avant de faire un make build.
Réponse longue :
La structure du noyau statfs a été modifiée. La nouvelle struct statfs possède les fonctionnalités suivantes :
Autres changements :
Quand vous mettrez à jour en 2.6 vous devrez créer un lien simple pour gcc.
cd /usr/lib/gcc-lib
ln -s ${ARCH}-unknown-openbsd2.5 ${ARCH}-unknown-openbsd2.6
tar: Unable to remove directory ./usr/include/machine <Directory not empty>
En 2.5, /usr/include/machine était un répertoire, et /usr/include/i386 un lien vers lui. Eb 2.6, cette situation est inversée.
Pour corriger le problème, sortez sur le shell, supprimez le répertoire /usr/include/machine et réessayez la mise à jour.
Plusieurs pages de man ont été déplacées de la section 1 vers la dernière section. Malheureusement, si d'anciennes pages de man restent dans la section 1, des utilisateurs ne verront jamais les dernières versions de ces pages.
Les pages suivantes doivent être supprimées :
/usr/share/man/cat1/ipf.0 /usr/share/man/cat1/ipnat.0 /usr/share/man/cat1/ipsecadm.0
Symptôme :
Un make build donne une erreur comme celle-ci :
cap_mkdb -i -f terminfo terminfo.src cap_mkdb: illegal option -- i usage: cap_mkdb [-v] [-f outfile] file1 [file2 ...] *** Error code 1
Correctif :
La syntaxe pour invoquer cap_mkdb a été légèrement modifiée. Avant de faire un make build, recompilez cap_mkdb à partir des dernières sources :
# cd /usr/src/usr.bin/cap_mkdb # make clean && make && make install
Le make build doit maintenant aller jusqu'au bout.
Vous devez supprimer le contenu du répertoire obj avant de mettre à jour
/usr/src/games/snake.
Après la 2.3, le daemon DNS named a été déplacé dans un prison chroot. Pour obtenir ce résultat, vous devez créer cet utilisateur pour être sûr que tous les répertoires seront créés lors du processus de compilation.
Ajoutez l'entrée suivante à /etc/passwd en utilisant vipw(8) :
named:*:70:70::0:0:BIND Daemon:/var/named:/sbin/nologin
Ajoutez le groupe suivant à /etc/group :
named:*:70:
Vous avez oublié l'entrée de l'utilisateur named dans votre fichier password.
Réponse courte :
Créez l'utilisateur avant la compilation.
Réponse longue :
L'utilisateur named est indispensable pour avoir des permissions correctes. Si l'utilisateur est manquant, une partie du processus de compilation s'arrête. Si vous capturez la compilation dans un fichier (avec un make build &>/tmp/build.log par exemple) vous remarquerez le message suivant :
(cd /usr/src/etc && make DESTDIR=/ distrib-dirs) install -d -o root -g wheel -m 755 / mtree -def mtree/4.4BSD.dist -p // -u mtree: unknown user named mtree: failed at line 1632 of the specification *** Error code 1 (ignored)
Malheureusement pour nous, la compilation continue sur son chemin, ignorant totalement cette erreur.
Si l'utilisateur named existe, mtree fonctionnera normalement :
missing: ./var/named (created) missing: ./var/named/dev (created) missing: ./var/named/etc (created) missing: ./etc/afs (created) missing: ./etc/ssl (created) missing: ./etc/ssl/private (created) missing: ./usr/obj (not created: File exists) missing: ./usr/share/doc/html (created) missing: ./usr/share/doc/html/lynx_help (created) missing: ./usr/share/doc/html/lynx_help/keystrokes (created) missing: ./usr/share/doc/usd/13.viref (created) missing: ./usr/share/man/cat4/powerpc (created) missing: ./usr/share/man/man4/alpha (created) missing: ./usr/share/man/man4/pmax (created) missing: ./usr/share/man/man4/powerpc (created) missing: ./usr/share/tmac/mdoc (created) missing: ./var/www/htdocs/manual/vhosts (created) missing: ./usr/include/ssl (created)
La raison de cet échec, ici, est que le répertoire /usr/include/ssl n'est jamais créé. Sans les fichiers d'en-têtes, la compilation de ssleay sera un échec.
Correctif :
Créez le groupe et utilisateur named. Supprimez /usr/include/ssl, /var/named et tous les répertoires de la liste ci-dessus qui ont été créés par erreur comme des fichiers normaux par le make build.
Votre arborescence de répertoire est incomplète. Plus spécialement, le répertoire /usr/share/man/cat4/powerpc est manquant.
Correctif rapide :
Créez le répertoire et compilez.
Correctif complet :
Créez l'arborescence complète des répertoires. Faire un :
# cd /usr/src/etc && make DESTDIR=/ distrib-dirs
Vous pourrez voir s'afficher :
install -d -o root -g wheel -m 755 / mtree -def mtree/4.4BSD.dist -p // -u missing: ./var/named (created) missing: ./var/named/dev (created) missing: ./var/named/etc (created) missing: ./etc/afs (created) missing: ./etc/ssl (created) missing: ./etc/ssl/private (created) missing: ./usr/obj (not created: File exists) missing: ./usr/share/doc/html (created) missing: ./usr/share/doc/html/lynx_help (created) missing: ./usr/share/doc/html/lynx_help/keystrokes (created) missing: ./usr/share/doc/usd/13.viref (created) missing: ./usr/share/man/cat4/powerpc (created) missing: ./usr/share/man/man4/alpha (created) missing: ./usr/share/man/man4/pmax (created) missing: ./usr/share/man/man4/powerpc (created) missing: ./usr/share/tmac/mdoc (created) missing: ./var/www/htdocs/manual/vhosts (created) missing: ./usr/include/ssl (created)
Il faut remarquer que /usr/share/man/cat4/powerpc est l'un des répertoires créés lors de ce processus.
--
$OpenBSD: upgrade-old.html,v 1.5 2010/05/24 18:32:44 ajacoutot Exp $
Copyright © 1998-2008, OpenBSD.