# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2024-01-17 20:35-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: YAML Front Matter: description #: documentation/content/en/articles/freebsd-update-server/_index.adoc:1 #, no-wrap msgid "Building your own freebsd-update server allows a system administrator to perform fast updates for a number of machines from a local mirror" msgstr "" #. type: Title = #: documentation/content/en/articles/freebsd-update-server/_index.adoc:1 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:12 #, no-wrap msgid "Build Your Own FreeBSD Update Server" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:51 msgid "" "The instructions in this article refer to an older version of FreeBSD and " "may not work properly on recent versions of the OS. With the availability of " "pkgbase, the freebsd-update utility is scheduled to be removed from FreeBSD " "in the future. When that happens, this article is either updated to reflect " "the new procedures or removed entirely." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:55 msgid "Abstract" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:59 msgid "" "This article describes building an internal FreeBSD Update Server. The " "https://github.com/freebsd/freebsd-update-build/[freebsd-update-server] is " "written by `{cperciva}`, Security Officer Emeritus of FreeBSD. For users " "that think it is convenient to update their systems against an official " "update server, building their own FreeBSD Update Server may help to extend " "its functionality by supporting manually-tweaked FreeBSD releases or by " "providing a local mirror that will allow faster updates for a number of " "machines." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:61 msgid "'''" msgstr "" #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:65 #, no-wrap msgid "Acknowledgments" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:68 msgid "" "This article was subsequently printed at https://people.freebsd.org/~jgh/" "files/fus/BSD_03_2010_EN.pdf[BSD Magazine]." msgstr "" #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:70 #, no-wrap msgid "Introduction" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:77 msgid "" "Experienced users or administrators are often responsible for several " "machines or environments. They understand the difficult demands and " "challenges of maintaining such an infrastructure. Running a FreeBSD Update " "Server makes it easier to deploy security and software patches to selected " "test machines before rolling them out to production. It also means a number " "of systems can be updated from the local network rather than a potentially " "slower Internet connection. This article outlines the steps involved in " "creating an internal FreeBSD Update Server." msgstr "" #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:79 #, no-wrap msgid "Prerequisites" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:82 msgid "" "To build an internal FreeBSD Update Server some requirements should be met." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:84 msgid "A running FreeBSD system." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:88 msgid "" "At a minimum, updates require building on a FreeBSD release greater than or " "equal to the target release version for distribution." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:90 msgid "" "A user account with at least 4 GB of available space. This will allow the " "creation of updates for 7.1 and 7.2, but the exact space requirements may " "change from version to version." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:91 msgid "" "An man:ssh[1] account on a remote machine to upload distributed updates." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:92 msgid "" "A web server, like extref:{handbook}[Apache, network-apache], with over half " "of the space required for the build. For instance, test builds for 7.1 and " "7.2 consume a total amount of 4 GB, and the webserver space needed to " "distribute these updates is 2.6 GB." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:93 msgid "Basic knowledge of shell scripting with Bourne shell, man:sh[1]." msgstr "" #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:95 #, no-wrap msgid "Configuration: Installation & Setup" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:98 msgid "" "Download the https://github.com/freebsd/freebsd-update-build/[freebsd-update-" "server] software by installing package:devel/git[] and package:security/" "ca_root_nss[], and execute:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:102 #, no-wrap msgid "% git clone https://github.com/freebsd/freebsd-update-build.git freebsd-update-server\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:106 msgid "" "Update [.filename]#scripts/build.conf# appropriately. It is sourced during " "all build operations." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:108 msgid "" "Here is the default [.filename]#build.conf#, which should be modified to " "suit your environment." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:114 #, no-wrap msgid "" "# Main configuration file for FreeBSD Update builds. The\n" "# release-specific configuration data is lower down in\n" "# the scripts tree.\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:117 #, no-wrap msgid "" "# Location from which to fetch releases\n" "export FTP=ftp://ftp2.freebsd.org/pub/FreeBSD/releases <.>\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:120 #, no-wrap msgid "" "# Host platform\n" "export HOSTPLATFORM=`uname -m`\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:123 #, no-wrap msgid "" "# Host name to use inside jails\n" "export BUILDHOSTNAME=${HOSTPLATFORM}-builder.daemonology.net <.>\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:126 #, no-wrap msgid "" "# Location of SSH key\n" "export SSHKEY=/root/.ssh/id_dsa <.>\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:129 #, no-wrap msgid "" "# SSH account into which files are uploaded\n" "MASTERACCT=builder@wadham.daemonology.net <.>\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:132 #, no-wrap msgid "" "# Directory into which files are uploaded\n" "MASTERDIR=update-master.freebsd.org <.>\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:135 msgid "Parameters for consideration would be:" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:138 msgid "" "This is the location where ISO images are downloaded from (by the " "`fetchiso()` subroutine of [.filename]#scripts/build.subr#). The location " "configured is not limited to FTP URIs. Any URI scheme supported by standard " "man:fetch[1] utility should work fine. Customizations to the `fetchiso()` " "code can be installed by copying the default [.filename]#build.subr# script " "to the release and architecture-specific area at [.filename]#scripts/RELEASE/" "ARCHITECTURE/build.subr# and applying local changes." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:140 msgid "" "The name of the build host. This information will be displayed on updated " "systems when issuing:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:144 #, no-wrap msgid "% uname -v\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:148 msgid "" "The SSH key for uploading files to the update server. A key pair can be " "created by typing `ssh-keygen -t dsa`. This parameter is optional; standard " "password authentication will be used as a fallback authentication method " "when `SSHKEY` is not defined. The man:ssh-keygen[1] manual page has more " "detailed information about SSH and the appropriate steps for creating and " "using one." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:150 msgid "Account for uploading files to the update server." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:152 msgid "Directory on the update server where files are uploaded to." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:154 msgid "" "The default [.filename]#build.conf# shipped with the freebsd-update-server " "sources is suitable for building i386 releases of FreeBSD. As an example of " "building an update server for other architectures, the following steps " "outline the configuration changes needed for amd64:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:158 msgid "Create a build environment for amd64:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:162 #, no-wrap msgid "% mkdir -p /usr/local/freebsd-update-server/scripts/7.2-RELEASE/amd64\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:165 msgid "" "Install a [.filename]#build.conf# in the newly created build directory. The " "build configuration options for FreeBSD 7.2-RELEASE on amd64 should be " "similar to:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:176 #, no-wrap msgid "" "# SHA256 hash of RELEASE disc1.iso image.\n" "export RELH=1ea1f6f652d7c5f5eab7ef9f8edbed50cb664b08ed761850f95f48e86cc71ef5 <.>\n" "# Components of the world, source, and kernels\n" "export WORLDPARTS=\"base catpages dict doc games info manpages proflibs lib32\"\n" "export SOURCEPARTS=\"base bin contrib crypto etc games gnu include krb5 \\\n" " lib libexec release rescue sbin secure share sys tools \\\n" " ubin usbin cddl\"\n" "export KERNELPARTS=\"generic\"\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:179 #, no-wrap msgid "" "# EOL date\n" "export EOL=1275289200 <.>\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:182 msgid "" "The man:sha256[1] hash key for the desired release, is published within the " "respective link:https://www.FreeBSD.org/releases/[release announcement]." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:183 msgid "" "To generate the \"End of Life\" number for [.filename]#build.conf#, refer to " "the \"Estimated EOL\" posted on the link:https://www.FreeBSD.org/security/" "security/[FreeBSD Security Website]. The value of `EOL` can be derived from " "the date listed on the web site, using the man:date[1] utility, for example:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:187 #, no-wrap msgid "% date -j -f '%Y%m%d-%H%M%S' '20090401-000000' '+%s'\n" msgstr "" #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:191 #, no-wrap msgid "Building Update Code" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:196 msgid "" "The first step is to run [.filename]#scripts/make.sh#. This will build some " "binaries, create directories, and generate an RSA signing key used for " "approving builds. In this step, a passphrase will have to be supplied for " "the final creation of the signing key." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:211 #, no-wrap msgid "" "# sh scripts/make.sh\n" "cc -O2 -fno-strict-aliasing -pipe findstamps.c -o findstamps\n" "findstamps.c: In function 'usage':\n" "findstamps.c:45: warning: incompatible implicit declaration of built-in function 'exit'\n" "cc -O2 -fno-strict-aliasing -pipe unstamp.c -o unstamp\n" "install findstamps ../bin\n" "install unstamp ../bin\n" "rm -f findstamps unstamp\n" "Generating RSA private key, 4096 bit long modulus\n" "................................................................................++\n" "...................++\n" "e is 65537 (0x10001)\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:214 #, no-wrap msgid "" "Public key fingerprint:\n" "27ef53e48dc869eea6c3136091cc6ab8589f967559824779e855d58a2294de9e\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:218 #, no-wrap msgid "" "Encrypting signing key for root\n" "enter aes-256-cbc encryption password:\n" "Verifying - enter aes-256-cbc encryption password:\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:224 msgid "" "Keep a note of the generated key fingerprint. This value is required in [." "filename]#/etc/freebsd-update.conf# for binary updates." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:227 msgid "At this point, we are ready to stage a build." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:232 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/init.sh amd64 7.2-RELEASE\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:235 msgid "What follows is a sample of an _initial_ build run." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:255 #, no-wrap msgid "" "# sh scripts/init.sh amd64 7.2-RELEASE\n" "Mon Aug 24 16:04:36 PDT 2009 Starting fetch for FreeBSD/amd64 7.2-RELEASE\n" "/usr/local/freebsd-update-server/work/7.2-RELE100 of 588 MB 359 kBps 00m00s\n" "Mon Aug 24 16:32:38 PDT 2009 Verifying disc1 hash for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 16:32:44 PDT 2009 Extracting components for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 16:34:05 PDT 2009 Constructing world+src image for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 16:35:57 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 23:36:24 UTC 2009 Building world for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:31:29 UTC 2009 Distributing world for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:32:36 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:44:44 UTC 2009 Constructing world components for FreeBSD/amd64 7.2-RELEASE\n" "Tue Aug 25 00:44:56 UTC 2009 Distributing source for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:46:18 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:46:33 PDT 2009 Identifying extra documentation for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:47:13 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:47:18 PDT 2009 Indexing release for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 17:50:44 PDT 2009 Indexing world0 for FreeBSD/amd64 7.2-RELEASE\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:276 #, no-wrap msgid "" "Files built but not released:\n" "Files released but not built:\n" "Files which differ by more than contents:\n" "Files which differ between release and build:\n" "kernel|generic|/GENERIC/hptrr.ko\n" "kernel|generic|/GENERIC/kernel\n" "src|sys|/sys/conf/newvers.sh\n" "world|base|/boot/loader\n" "world|base|/boot/pxeboot\n" "world|base|/etc/mail/freebsd.cf\n" "world|base|/etc/mail/freebsd.submit.cf\n" "world|base|/etc/mail/sendmail.cf\n" "world|base|/etc/mail/submit.cf\n" "world|base|/lib/libcrypto.so.5\n" "world|base|/usr/bin/ntpq\n" "world|base|/usr/lib/libalias.a\n" "world|base|/usr/lib/libalias_cuseeme.a\n" "world|base|/usr/lib/libalias_dummy.a\n" "world|base|/usr/lib/libalias_ftp.a\n" "...\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:280 msgid "" "Then the build of the world is performed again, with world patches. A more " "detailed explanation may be found in [.filename]#scripts/build.subr#." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:286 msgid "" "During this second build cycle, the network time protocol daemon, man:" "ntpd[8], is turned off. Per `{cperciva}`, Security Officer Emeritus of " "FreeBSD, \"the https://github.com/freebsd/freebsd-update-build/[freebsd-" "update-server] build code needs to identify timestamps which are stored in " "files so that they can be ignored when comparing builds to determine which " "files need to be updated. This timestamp-finding works by doing two builds " "400 days apart and comparing the results.\"" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:305 #, no-wrap msgid "" "Mon Aug 24 17:54:07 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 00:54:34 UTC 2010 Building world for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 01:49:42 UTC 2010 Distributing world for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 01:50:50 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 02:02:56 UTC 2010 Constructing world components for FreeBSD/amd64 7.2-RELEASE\n" "Wed Sep 29 02:03:08 UTC 2010 Distributing source for FreeBSD/amd64 7.2-RELEASE\n" "Tue Sep 28 19:04:31 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:04:46 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:04:51 PDT 2009 Indexing world1 for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:08:04 PDT 2009 Locating build stamps for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:10:19 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:10:19 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 19:10:20 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 12:16:57 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.2-RELEASE\n" "Mon Aug 24 12:16:59 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.2-RELEASE\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:323 #, no-wrap msgid "" "Files found which include build stamps:\n" "kernel|generic|/GENERIC/hptrr.ko\n" "kernel|generic|/GENERIC/kernel\n" "world|base|/boot/loader\n" "world|base|/boot/pxeboot\n" "world|base|/etc/mail/freebsd.cf\n" "world|base|/etc/mail/freebsd.submit.cf\n" "world|base|/etc/mail/sendmail.cf\n" "world|base|/etc/mail/submit.cf\n" "world|base|/lib/libcrypto.so.5\n" "world|base|/usr/bin/ntpq\n" "world|base|/usr/include/osreldate.h\n" "world|base|/usr/lib/libalias.a\n" "world|base|/usr/lib/libalias_cuseeme.a\n" "world|base|/usr/lib/libalias_dummy.a\n" "world|base|/usr/lib/libalias_ftp.a\n" "...\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:326 msgid "Finally, the build completes." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:355 #, no-wrap msgid "" "Values of build stamps, excluding library archive headers:\n" "v1.2 (Aug 25 2009 00:40:36)\n" "v1.2 (Aug 25 2009 00:38:22)\n" "@()FreeBSD 7.2-RELEASE 0: Tue Aug 25 00:38:29 UTC 2009\n" "FreeBSD 7.2-RELEASE 0: Tue Aug 25 00:38:29 UTC 2009\n" " root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC\n" "7.2-RELEASE\n" "Mon Aug 24 23:55:25 UTC 2009\n" "Mon Aug 24 23:55:25 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" " built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009\n" "Mon Aug 24 23:46:47 UTC 2009\n" "ntpq 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)\n" " * Copyright (c) 1992-2009 The FreeBSD Project.\n" "Mon Aug 24 23:46:47 UTC 2009\n" "Mon Aug 24 23:55:40 UTC 2009\n" "Aug 25 2009\n" "ntpd 4.2.4p5-a Mon Aug 24 23:55:52 UTC 2009 (1)\n" "ntpdate 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)\n" "ntpdc 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)\n" "Tue Aug 25 00:21:21 UTC 2009\n" "Tue Aug 25 00:21:21 UTC 2009\n" "Tue Aug 25 00:21:21 UTC 2009\n" "Mon Aug 24 23:46:47 UTC 2009\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:361 #, no-wrap msgid "" "FreeBSD/amd64 7.2-RELEASE initialization build complete. Please\n" "review the list of build stamps printed above to confirm that\n" "they look sensible, then run\n" " sh -e approve.sh amd64 7.2-RELEASE\n" "to sign the release.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:366 msgid "" "Approve the build if everything is correct. More information on determining " "this can be found in the distributed source file named [.filename]#USAGE#. " "Execute [.filename]#scripts/approve.sh#, as directed. This will sign the " "release, and move components into a staging area suitable for uploading." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:371 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/mountkey.sh\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:381 #, no-wrap msgid "" "# sh -e scripts/approve.sh amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.2-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:384 msgid "" "After the approval process is complete, the upload procedure may be started." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:389 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/upload.sh amd64 7.2-RELEASE\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:394 msgid "" "In the event update code needs to be re-uploaded, this may be done by " "changing to the public distributions directory for the target release and " "updating attributes of the _uploaded_ file." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:399 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server/pub/7.2-RELEASE/amd64\n" "# touch -t 200801010101.01 uploaded\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:406 msgid "" "The uploaded files will need to be in the document root of the webserver in " "order for updates to be distributed. The exact configuration will vary " "depending on the web server used. For the Apache web server, please refer " "to the extref:{handbook}[Configuration of Apache servers, network-apache] " "section in the Handbook." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:408 msgid "" "Update client's `KeyPrint` and `ServerName` in [.filename]#/etc/freebsd-" "update.conf#, and perform updates as instructed in the extref:{handbook}" "[FreeBSD Update, updating-upgrading-freebsdupdate] section of the Handbook." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:414 msgid "" "In order for FreeBSD Update Server to work properly, updates for both the " "_current_ release and the release _one wants to upgrade to_ need to be " "built. This is necessary for determining the differences of files between " "releases. For example, when upgrading a FreeBSD system from 7.1-RELEASE to " "7.2-RELEASE, updates will need to be built and uploaded to your distribution " "server for both versions." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:417 msgid "" "For reference, the entire run of link:../../source/articles/freebsd-update-" "server/init.txt[init.sh] is attached." msgstr "" #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:419 #, no-wrap msgid "Building a Patch" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:422 msgid "" "Every time a link:https://www.FreeBSD.org/security/advisories/[security " "advisory] or link:https://www.FreeBSD.org/security/notices/[security notice] " "is announced, a patch update can be built." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:424 msgid "For this example, 7.1-RELEASE will be used." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:426 msgid "A couple of assumptions are made for a different release build:" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:428 msgid "Setup the correct directory structure for the initial build." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:429 msgid "Perform an initial build for 7.1-RELEASE." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:431 msgid "" "Create the patch directory of the respective release under [.filename]#/usr/" "local/freebsd-update-server/patches/#." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:436 #, no-wrap msgid "" "% mkdir -p /usr/local/freebsd-update-server/patches/7.1-RELEASE/\n" "% cd /usr/local/freebsd-update-server/patches/7.1-RELEASE\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:441 msgid "" "As an example, take the patch for man:named[8]. Read the advisory, and grab " "the necessary file from link:https://www.FreeBSD.org/security/advisories/" "[FreeBSD Security Advisories]. More information on interpreting the " "advisory, can be found in the extref:{handbook}[FreeBSD Handbook, security-" "advisories]." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:446 msgid "" "In the https://security.freebsd.org/advisories/FreeBSD-SA-09:12.bind." "asc[security brief], this advisory is called `SA-09:12.bind`. After " "downloading the file, it is required to rename the file to an appropriate " "patch level. It is suggested to keep this consistent with official FreeBSD " "patch levels, but its name may be freely chosen. For this build, let us " "follow the currently established practice of FreeBSD and call this `p7`. " "Rename the file:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:450 #, no-wrap msgid "% cd /usr/local/freebsd-update-server/patches/7.1-RELEASE/; mv bind.patch 7-SA-09:12.bind\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:456 msgid "" "When running a patch level build, it is assumed that previous patches are in " "place. When a patch build is run, it will run all patches contained in the " "patch directory." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:458 msgid "" "There can be custom patches added to any build. Use the number zero, or any " "other number." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:464 msgid "" "It is up to the administrator of the FreeBSD Update Server to take " "appropriate measures to verify the authenticity of every patch." msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:468 msgid "" "At this point, a _diff_ is ready to be built. The software checks first to " "see if a [.filename]#scripts/init.sh# has been run on the respective release " "prior to running the diff build." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:473 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/diff.sh amd64 7.1-RELEASE 7\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:476 msgid "What follows is a sample of a _differential_ build run." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:550 #, no-wrap msgid "" "# sh -e scripts/diff.sh amd64 7.1-RELEASE 7\n" "Wed Aug 26 10:09:59 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 17:10:25 UTC 2009 Building world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:05:11 UTC 2009 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:06:16 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:17:50 UTC 2009 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 18:18:02 UTC 2009 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:19:23 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:19:37 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:19:42 PDT 2009 Indexing world0 for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 11:23:02 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 18:23:29 UTC 2010 Building world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:18:15 UTC 2010 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:19:18 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:30:52 UTC 2010 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 19:31:03 UTC 2010 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7\n" "Thu Sep 30 12:32:25 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:32:39 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:32:43 PDT 2009 Indexing world1 for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:35:54 PDT 2009 Locating build stamps for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:36:58 PDT 2009 Reverting changes due to build stamps for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:37:14 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:37:14 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:37:15 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:43:23 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.1-RELEASE-p7\n" "Wed Aug 26 12:43:25 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.1-RELEASE-p7\n" "...\n" "Files found which include build stamps:\n" "kernel|generic|/GENERIC/hptrr.ko\n" "kernel|generic|/GENERIC/kernel\n" "world|base|/boot/loader\n" "world|base|/boot/pxeboot\n" "world|base|/etc/mail/freebsd.cf\n" "world|base|/etc/mail/freebsd.submit.cf\n" "world|base|/etc/mail/sendmail.cf\n" "world|base|/etc/mail/submit.cf\n" "world|base|/lib/libcrypto.so.5\n" "world|base|/usr/bin/ntpq\n" "world|base|/usr/include/osreldate.h\n" "world|base|/usr/lib/libalias.a\n" "world|base|/usr/lib/libalias_cuseeme.a\n" "world|base|/usr/lib/libalias_dummy.a\n" "world|base|/usr/lib/libalias_ftp.a\n" "...\n" "Values of build stamps, excluding library archive headers:\n" "v1.2 (Aug 26 2009 18:13:46)\n" "v1.2 (Aug 26 2009 18:11:44)\n" "@()FreeBSD 7.1-RELEASE-p7 0: Wed Aug 26 18:11:50 UTC 2009\n" "FreeBSD 7.1-RELEASE-p7 0: Wed Aug 26 18:11:50 UTC 2009\n" " root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC\n" "7.1-RELEASE-p7\n" "Wed Aug 26 17:29:15 UTC 2009\n" "Wed Aug 26 17:29:15 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" " built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009\n" "Wed Aug 26 17:20:39 UTC 2009\n" "ntpq 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)\n" " * Copyright (c) 1992-2009 The FreeBSD Project.\n" "Wed Aug 26 17:20:39 UTC 2009\n" "Wed Aug 26 17:29:30 UTC 2009\n" "Aug 26 2009\n" "ntpd 4.2.4p5-a Wed Aug 26 17:29:41 UTC 2009 (1)\n" "ntpdate 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)\n" "ntpdc 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)\n" "Wed Aug 26 17:55:02 UTC 2009\n" "Wed Aug 26 17:55:02 UTC 2009\n" "Wed Aug 26 17:55:02 UTC 2009\n" "Wed Aug 26 17:20:39 UTC 2009\n" "...\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:553 msgid "Updates are printed, and approval is requested." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:572 #, no-wrap msgid "" "New updates:\n" "kernel|generic|/GENERIC/kernel.symbols|f|0|0|0555|0|7c8dc176763f96ced0a57fc04e7c1b8d793f27e006dd13e0b499e1474ac47e10|\n" "kernel|generic|/GENERIC/kernel|f|0|0|0555|0|33197e8cf15bbbac263d17f39c153c9d489348c2c534f7ca1120a1183dec67b1|\n" "kernel|generic|/|d|0|0|0755|0||\n" "src|base|/|d|0|0|0755|0||\n" "src|bin|/|d|0|0|0755|0||\n" "src|cddl|/|d|0|0|0755|0||\n" "src|contrib|/contrib/bind9/bin/named/update.c|f|0|10000|0644|0|4d434abf0983df9bc47435670d307fa882ef4b348ed8ca90928d250f42ea0757|\n" "src|contrib|/contrib/bind9/lib/dns/openssldsa_link.c|f|0|10000|0644|0|c6805c39f3da2a06dd3f163f26c314a4692d4cd9a2d929c0acc88d736324f550|\n" "src|contrib|/contrib/bind9/lib/dns/opensslrsa_link.c|f|0|10000|0644|0|fa0f7417ee9da42cc8d0fd96ad24e7a34125e05b5ae075bd6e3238f1c022a712|\n" "...\n" "FreeBSD/amd64 7.1-RELEASE update build complete. Please review\n" "the list of build stamps printed above and the list of updated\n" "files to confirm that they look sensible, then run\n" " sh -e approve.sh amd64 7.1-RELEASE\n" "to sign the build.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:575 msgid "Follow the same process as noted before for approving a build:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:584 #, no-wrap msgid "" "# sh -e scripts/approve.sh amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.1-RELEASE\n" "Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE\n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:590 #, no-wrap msgid "" "The FreeBSD/amd64 7.1-RELEASE update build has been signed and is\n" "ready to be uploaded. Remember to run\n" " sh -e umountkey.sh\n" "to unmount the decrypted key once you have finished signing all\n" "the new builds.\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:593 msgid "After approving the build, upload the software:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:598 #, no-wrap msgid "" "# cd /usr/local/freebsd-update-server\n" "# sh scripts/upload.sh amd64 7.1-RELEASE\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:601 msgid "" "For reference, the entire run of link:../../source/articles/freebsd-update-" "server/diff.txt[diff.sh] is attached." msgstr "" #. type: Title == #: documentation/content/en/articles/freebsd-update-server/_index.adoc:603 #, no-wrap msgid "Tips" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:606 msgid "" "If a custom release is built using the native `make release` extref:{releng}" "[procedure, release-build], freebsd-update-server code will work from your " "release. As an example, a release without ports or documentation can be " "built by clearing functionality pertaining to documentation subroutines " "`findextradocs ()`, `addextradocs ()` and altering the download location in " "`fetchiso ()`, respectively, in [.filename]#scripts/build.subr#. As a last " "step, change the man:sha256[1] hash in [.filename]#build.conf# under your " "respective release and architecture and you are ready to build off your " "custom release." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:617 #, no-wrap msgid "" "# Compare ${WORKDIR}/release and ${WORKDIR}/$1, identify which parts\n" "# of the world|doc subcomponent are missing from the latter, and\n" "# build a tarball out of them.\n" "findextradocs () {\n" "}\n" "# Add extra docs to ${WORKDIR}/$1\n" "addextradocs () {\n" "}\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:620 msgid "" "Adding `-j _NUMBER_` flags to `buildworld` and `obj` targets in the [." "filename]#scripts/build.subr# script may speed up processing depending on " "the hardware used, however it is not necessary. Using these flags in other " "targets is not recommended, as it may cause the build to become unreliable." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:632 #, no-wrap msgid "" " # Build the world\n" "\t\t log \"Building world\"\n" "\t\t cd /usr/src &&\n" "\t\t make -j 2 ${COMPATFLAGS} buildworld 2>&1\n" "\t\t# Distribute the world\n" "\t\t log \"Distributing world\"\n" "\t\t cd /usr/src/release &&\n" "\t\t make -j 2 obj &&\n" "\t\t make ${COMPATFLAGS} release.1 release.2 2>&1\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/freebsd-update-server/_index.adoc:635 msgid "" "Create an appropriate extref:{handbook}[DNS, network-dns] SRV record for the " "update server, and put others behind it with variable weights. Using this " "facility will provide update mirrors, however this tip is not necessary " "unless you wish to provide a redundant service." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/freebsd-update-server/_index.adoc:641 #, no-wrap msgid "" "_http._tcp.update.myserver.com.\t\tIN SRV 0 2 80 host1.myserver.com.\n" "\t\t\t\t\tIN SRV 0 1 80 host2.myserver.com.\n" "\t\t\t\t\tIN SRV 0 0 80 host3.myserver.com.\n" msgstr ""