[FAQ Index] | [5.5 -> 5.6] | [5.7 -> 5.8]
Note: Upgrades are only supported from one release to the release immediately following it. Do not skip releases. If you got lucky skipping releases in the past, you may not this time.
It is highly recommended that you read through and fully understand this process before attempting it. If you are doing it on a critical or physically remote machine, it is recommended that you test this process on an identical, local system to verify its success before attempting on a critical or remote computer.
/etc
,
example files are now stored in /etc/examples
.
These samples will be blindly updated every upgrade, your configured
files will NOT be touched.
/etc/rc
and /etc/rc.conf
have moved from
etc*.tgz
to base57.tgz
and will be replaced at upgrade time. If you have made local changes
to these files, save a copy before upgrading.
Afterwards, complete the upgrade by following the final steps as detailed below. Pick one of the following install processes:
This involves booting from the install kernel,
bsd.rd.
This can be done by booting from an install floppy, CD, or file system image,
or you can place the 5.7 version of bsd.rd
in the root of your
file system, and instructing the boot loader to boot this kernel instead
of your usual kernel (bsd
).
On amd64 and i386, you do this by entering "boot bsd.rd
" at the
initial boot>
prompt.
Once this kernel is booted, chose the "Upgrade" option, and follow the prompts. The upgrade process is very much like the installation process, though it retains all your configuration. info.
This is NOT the recommended process. Use the install kernel method if at all possible!Sometimes, one needs to do an upgrade of a machine when one can't easily use the normal upgrade process. The most common case is when the machine is in a remote location and you don't have easy access to the system console. One can usually do this by carefully following this process:
installboot -v sd0
export RELEASEPATH=/usr/rel # where you put the files cd ${RELEASEPATH} rm /obsd ; ln /bsd /obsd && cp bsd.mp /nbsd && mv /nbsd /bsd cp bsd.rd / cp bsd /bsd.sp
(note: you will get a harmless error message if your platform doesn't have a bsd.mp):export RELEASEPATH=/usr/rel # where you put the files cd ${RELEASEPATH} rm /obsd ; ln /bsd /obsd && cp bsd /nbsd && mv /nbsd /bsd cp bsd.rd bsd.mp /
Note the extra steps for copying over the primary kernel: those are done to ensure that there is always a valid copy of the kernel on the disk that the system can boot from should there be a really badly timed power outage or system crash.
Not all file sets will need to be installed for all applications, however if you installed a file set originally, you should certainly upgrade it with the new file set now.cp /sbin/reboot /sbin/oreboot tar -C / -xzphf xserv57.tgz tar -C / -xzphf xfont57.tgz tar -C / -xzphf xshare57.tgz tar -C / -xzphf xbase57.tgz tar -C / -xzphf game57.tgz tar -C / -xzphf comp57.tgz tar -C / -xzphf man57.tgz tar -C / -xzphf base57.tgz # Install last! /sbin/oreboot
Again, the files in /etc
are handled separately below, so
etc57.tgz
and xetc57.tgz
are NOT unpacked here.
/dev
.
The new
MAKEDEV
file was copied to /dev by the installation of
base57.tgz
, so you simply need to do the following:
cd /dev ./MAKEDEV all
assuming "sd0" is your boot disk.installboot -v sd0
Please read the sysmerge(8) manual page before using it on your system. You are also advised to read the diff(1), sdiff(1) and even review more(1) manual pages before continuing. A wide terminal window (i.e., significantly more than 80 characters), if available, will make sdiff(1) easier to use.
Sysmerge(8) is run simply by invoking it as root:
For the files sysmerge(8) can't resolve on its own, it will show you a unified diff(1), run through your favorite $PAGER (i.e., more(1)) and ask you if you wish to:# sysmerge
Use 'd' to delete the temporary ./var/www/htdocs/index.html Use 'i' to install the temporary ./var/www/htdocs/index.html Use 'm' to merge the temporary and installed versions Use 'v' to view the diff results again Default is to leave the temporary file to deal with by hand
If you wish to retain your existing file, delete the temporary file. If you wish to replace your existing file with the new version, install the temporary file. If you wish to merge the two together, choosing 'm' will put you into sdiff(1), where you can manually merge the file. The default is to come back and deal with the file later, manually.
Sysmerge(8) saves all your replaced files into a temporary directory,
similar to /var/tmp/sysmerge.24959/backups
, so if you accidentally
clobber something that was probably not such a good idea, you have a chance
to recover it. Note that
daily(8)
cleans old files from this directory, but it will survive a reboot.
The following files are associated with httpd(8) and can be deleted in some cases, but may have been replaced with user content or configuration. Warning: On systems which currently or have previously used any http daemon, care must be taken and files analyzed case by case to avoid accidental deletion of user content or important configuration files. In particular, users moving to the apache-httpd-openbsd package will want to keep many of these files.cd /etc/X11/app-defaults rm Beforelight Bitmap Bitmap-color Bitmap-nocase Chooser Clock-color rm Editres Editres-color KOI8RXTerm SshAskpass UXTerm Viewres rm Viewres-color XCalc XCalc-color XClipboard XClock rm XClock-color XConsole XFontSel XLoad XLock XLogo rm XLogo-color XMore XSm XTerm XTerm-color Xedit rm Xedit-color Xfd Xgc Xgc-color Xmag Xman Xmessage rm Xmessage-color Xsystrace Xvidtune rm -f /etc/rc.d/named rm -f /usr/sbin/dnssec-keygen rm -f /usr/sbin/dnssec-signzone rm -f /usr/sbin/named rm -f /usr/sbin/named-checkconf rm -f /usr/sbin/named-checkzone rm -f /usr/sbin/nsupdate rm -f /usr/sbin/rndc rm -f /usr/sbin/rndc-confgen rm -f /usr/share/man/man5/named.conf.5 rm -f /usr/share/man/man5/rndc.conf.5 rm -f /usr/share/man/man8/dnssec-keygen.8 rm -f /usr/share/man/man8/dnssec-signzone.8 rm -f /usr/share/man/man8/named.8 rm -f /usr/share/man/man8/named-checkconf.8 rm -f /usr/share/man/man8/named-checkzone.8 rm -f /usr/share/man/man8/nsupdate.8 rm -f /usr/share/man/man8/rndc-confgen.8 rm -f /usr/share/man/man8/rndc.8 rm -f /usr/sbin/openssl rm -f /etc/rc.d/nginx rm -f /usr/sbin/nginx rm -f /usr/share/man/man8/nginx.8 rm -f /usr/share/man/man5/nginx.conf.5 rm -f /sbin/mount_procfs rm -f /usr/share/man/man8/mount_procfs.8 rm -rf /usr/include/libmilter rm -rf /usr/libdata/perl5/site_perl/`uname -p`-openbsd/libmilter rm -rf /usr/libexec/sendmail rm -rf /usr/share/sendmail # preserve mc files first if needed rm -f /etc/rc.d/sendmail rm -f /usr/lib/{libmilter.a,libmilter.so.3.0,libmilter_p.a} rm -f /usr/libexec/smrsh rm -f /usr/sbin/{editmap,mailstats,praliases} rm -f /usr/share/man/man1/{hoststat.1,praliases.1,purgestat.1} rm -f /usr/share/man/man8/{editmap.8,mailq.8,mailstats.8,smrsh.8} rm -f /var/log/sendmail.st rmdir /usr/libexec/sm.bin rm -rf /usr/lkm /usr/share/lkm /dev/lkm rm -f /usr/bin/modstat rm -f /sbin/mod{,un}load rm -f /usr/share/man/man8/mod{stat,load,unload}.8 rm -f /usr/share/man/man4/lkm.4 rm -f /usr/share/mk/bsd.lkm.mk /usr/include/sys/lkm.h rm -f /usr/include/ressl.h rm -f /usr/lib/libressl.* /usr/lib/libressl_* rm -f /usr/share/man/man3/ressl_* rm /usr/mdec/installboot /usr/share/man/man8/sparc64/installboot.8 rm /etc/rc.d/rtsold /sbin/rtsol /usr/sbin/rtsold rm /usr/share/man/man8/rtsol.8 /usr/share/man/man8/rtsold.8 rm -f /usr/X11R6/include/GL/glcorearb.h rm -f /usr/X11R6/include/EGL/eglextchromium.h rm -r /var/tmp ln -s /tmp /var/tmp groupdel _lkm userdel smmsp groupdel smmsp
Sendmail has been removed from the base OS, but is available as a package in 5.7. The standard MTA is now smtpd(8). To switch to smtpd, make sure that no important mail is waiting in Sendmail's queue, remove the sendmail crontab entry from root's crontab, editrm -rf /var/www/icons rmdir /var/www/conf/{modules,modules.sample} rmdir /var/www/users rm -f /var/www/cgi-bin/{printenv,test-cgi} rm -f /var/www/conf/{httpd.conf,magic,mime.types} rm -f /var/www/htdocs/{apache_pb.gif,blowfish.jpg,bsd_small.gif,index.html} rm -f /var/www/htdocs/{lock.gif,logo23.jpg,logo24.jpg,mod_ssl_sb.gif} rm -f /var/www/htdocs/{openbsd_pb.gif,openbsdpower.gif,openssl_ics.gif} rm -f /var/www/htdocs/smalltitle.gif
/etc/mailer.conf
to make sure only smtpd is run, and run newaliases.
The following packages are known to have significant upgrade issues that will impact users. The fact that a package is not on this list doesn't mean it will have a trivial upgrade. You must do some homework on the applications YOU use.
sysutils/collectd
has been updated to version 5.4.1, users of
previous 4.10.1 version should review this
upgrade guide
to migrate their existing setups.
cd /etc/php-5.4 for i in *; do ln -s ../php-5.5.sample/$i ../php-5.5/; donepecl-APC does not support newer PHP versions and has been retired; xcache is still available, or you can use the new opcode cache built-in to 5.5:
ln -s ../php-5.5.sample/opcache.ini /etc/php-5.5
pkg_delete sudoku-0.7p5 pkg_add -u pkg_add gnustep-sudoku
cd /var/www/wordpress/wp-content/themes && cp -Rp twentytwelve twentytwelve.bakand restore it after wordpress update:
cd /var/www/wordpress/wp-content/themes && mv twentytwelve.bak twentytwelve
pkg_add -u
, but there are a couple of additional steps to take:
mysqladmin flush-logs
to simplify recovery in case of problems
mysql_upgrade
to upgrade system tables
The package tools support in-place updating using pkg_add -u
.
For instance, to update all your packages, make sure PKG_PATH
is
pointing to the 5.7 packages directory on your CD or nearest FTP mirror,
and use something like
where thepkg_add -u
-u
indicates update mode;
pkg_add will prompt you for input when it encounters
some ambiguity.
Read the
pkg_add(1)
manual page and the package management
chapter of the FAQ for more information.
[FAQ Index] | [5.5 -> 5.6] | [5.7 -> 5.8]