Re: RELENG tarballs
"Mars G. Miro" <[email protected]>
| Newsgroups | gmane.os.freebsd.security.general |
|---|---|
| Message-ID | <[email protected]> |
Hi All The reason I asked the question is because it is something related to the SECURITY / RELENG branches where the security fixes for a RELEASE are committed. I could not grab them from cgit.freebsd.org as a source tarball. I now recall that previously you need csup/cvsup/svn to get RELENG_X_X. Grabbing them from github and gitlab via https also has some changes in contrib/libfido2, if you diff it from a RELEASE from the official ISOs -- I think these are CI/CD stuff from these outfits. That being said I had another machine that has git and just grabbed it from git.freebsd.org instead. Thanks. On 8/13/26 01:42, Ralph Becker-Szendy wrote: > Gentlemen: The place for such elementary questions about how to use FreeBSD is not the security mailing list. There is a perfectly fine forum at forums.freebsd.org, which is more structured, and suitable for user-level questions. If the signal-to-noise on the security mailing list suffers, a few undesirable things might happen: People might unsubscribe, and not be informed about real security issues. The list may have to be moderated, delaying urgent and valid concerns, and using more volunteer effort. > > Sorry for being such a spoil sport; I left the list itself out of this e-mail to keep it quieter. > > Ralph > >> On Aug 12, 2026, at 10:33 AM, Dimitar Dimitrov <[email protected]> wrote: >> >> Or, you can use something like this: >> This is how I make custom tar.gz archives to update my machines. >> >> arca:~ # cat ./build-release.sh >> #!/bin/sh >> set -eu >> >> if [ "$(id -u)" -ne 0 ]; then >> printf '%s\n' "Error: this script must be run as root." >&2 >> >> exit 1 >> fi >> >> usage() { >> printf "Usage: %s <KERNCONF> <FREEBSD-VERSION>\n" "$0" >> >> exit 1 >> } >> >> case $# in >> 2) >> KERNEL="$1" >> VERSION="$2" >> ;; >> *) >> usage >> ;; >> esac >> >> sysctl hw.acpi.cpu.cx_lowest=C1 >> >> SRC="/usr/src" >> >> { >> cd "$SRC" || exit 1 >> if ! git checkout "releng/$VERSION"; then >> printf "Branch releng/%s didn't exist. Exiting..." "$VERSION" >> >> exit 1 >> fi >> >> eval "$(sh $SRC/sys/conf/newvers.sh -V REVISION)" >> eval "$(sh $SRC/sys/conf/newvers.sh -V BRANCH)" >> >> printf "Branch is releng/%s with kernel: %s\n" "$VERSION" "$KERNEL" >> >> git pull >> } >> >> if [ "$VERSION" != "$REVISION" ]; then >> printf "The branch releng/%s of %s is different from releng/%s\n" "$REVISION" "$SRC" "$VERSION" >> printf "Action: git checkout releng/%s and try again\n" "$VERSION" >> >> exit 1 >> fi >> >> for ds in "stage/builder/$REVISION/archives" "stage/builder/$REVISION/world"; do >> if ! zfs list "$ds" > /dev/null 2>&1; then >> printf "Error: ZFS dataset %s does not exist\n" "$ds" >&2 >> >> exit 1 >> fi >> done >> >> KERNDIR="/root/kernels" >> WORLD_DIR="/stage/builder/${REVISION}/world" >> CLEANUP_LIST="$WORLD_DIR/REMOVE_LIST-$REVISION-$BRANCH.txt" >> ARCHIVE="/stage/builder/${REVISION}/archives/FreeBSD-$REVISION-$BRANCH-$KERNEL-$(date +%Y%m%d)-world.tar.gz" >> ETC_ARCHIVE="/stage/builder/${REVISION}/archives/FreeBSD-$REVISION-$BRANCH-$KERNEL-$(date +%Y%m%d)-etc.tar.gz" >> CONF_DIR="/root/src-configs" >> SRCCONF_FILE="$CONF_DIR/src-$KERNEL.conf" >> >> if [ ! -f "$SRCCONF_FILE" ]; then >> printf "Error: SRCCONF file '%s' not found.\n" "$SRCCONF_FILE" >&2 >> >> exit 1 >> fi >> >> status="" >> [ -d "$KERNDIR" ] && status="D" >> [ -f "$KERNDIR/$KERNEL" ] && status="${status}F" >> >> case "$status" in >> DF) >> ;; >> D) >> printf "Error: Kernel config '%s' not found in '%s'\n" "$KERNEL" "$KERNDIR" >&2 >> >> exit 1 >> ;; >> *) >> printf "Error: Kernel directory '%s' does not exist or is inaccessible\n" "$KERNDIR" >&2 >> >> exit 1 >> ;; >> esac >> >> >> if [ ! -d "$WORLD_DIR" ]; then >> printf "Directory %s didn't exist\n" "$WORLD_DIR" >> >> exit 1 >> fi >> >> chflags -R noschg "$WORLD_DIR" >> >> rm -rf "${WORLD_DIR:?}"/* >> >> cd "$SRC" || exit 1 >> >> NCPU=$(sysctl -n hw.ncpu) >> >> make cleanworld cleankernel KERNCONF="$KERNEL" KERNCONFDIR="$KERNDIR" >> >> make -j"$NCPU" buildworld buildkernel KERNCONF="$KERNEL" KERNCONFDIR="$KERNDIR" SRCCONF="$SRCCONF_FILE" >> >> printf "===> Installing world, kernel and distribution to %s\n" "$WORLD_DIR" >> make installworld installkernel DESTDIR="$WORLD_DIR" KERNCONF="$KERNEL" KERNCONFDIR="$KERNDIR" SRCCONF="$SRCCONF_FILE" >> >> etcupdate build -s /usr/src -M "-j$NCPU SRCCONF=$SRCCONF_FILE KERNCONF=$KERNEL KERNCONFDIR=$KERNDIR" "$ETC_ARCHIVE" >> make list-old-files list-old-libs list-old-dirs SRCCONF="$SRCCONF_FILE" > "$CLEANUP_LIST" >> >> printf "===> Creating archive: %s\n" "$ARCHIVE" >> tar -cf "${ARCHIVE}" -a -p -C "$WORLD_DIR" . >> >> printf "===> Generating SHA256 checksum...\n" >> sha256 -q "${ARCHIVE}" > "${ARCHIVE}.sha256" >> sha256 -q "${ETC_ARCHIVE}" > "${ETC_ARCHIVE}.sha256" >> >> du -h "${ARCHIVE}" >> du -h "${ETC_ARCHIVE}" >> >> printf "DONE. Copy both %s and .sha256 to your flash drive.\n" "$(basename "${ARCHIVE}")" >> >> sysctl hw.acpi.cpu.cx_lowest=C2 >> >> arca:~ # cat upgrade-from-source.sh >> #!/bin/sh >> >> if [ "$(id -u)" -ne 0 ]; then >> printf '%s\n' "Error: this script must be run as root." >&2 >> exit 1 >> fi >> >> usage() { >> printf "Usage: %s <BUILDTAR> <BUILDDIST>\n" "$0" >> exit 1 >> } >> >> case $# in >> 2) >> TAR="$1" >> ETC="$2" >> ;; >> *) >> usage >> ;; >> esac >> >> zfs mount -a >> zfs set readonly=off zroot >> >> if [ -d /boot/kernel ]; then >> cp -a /boot/kernel /boot/kernel.old >> fi >> >> for f in /usr/bin/* /lib/* /libexec/ld-elf.so.1 /sbin/init /var/empty; do >> if [ -f "$f" ]; then >> chflags noschg "$f" >> elif [ -d "$f" ]; then >> chflags -R noschg "$f" >> fi >> done >> >> tar -xzpf "$TAR" -C / >> etcupdate -p -t "$ETC" >> >> arca:~ # cat delete-old.sh >> #!/bin/sh >> >> set -eu >> >> # must run as root >> if [ "$(id -u)" -ne 0 ]; then >> printf '%s\n' "Error: this script must be run as root." >&2 >> exit 1 >> fi >> >> FILENAME="${1:-}" >> >> if [ -z "$FILENAME" ]; then >> printf "Usage: %s REMOVE_LIST_filename\n" "$0" >> exit 1 >> fi >> >> case "$FILENAME" in >> REMOVE_LIST*) >> ;; >> *) >> printf "Error: Filename '%s' must start with 'REMOVE_LIST'\n" "$FILENAME" >> exit 1 >> ;; >> esac >> >> if [ ! -f "$FILENAME" ]; then >> printf "File '%s' not found.\n" "$FILENAME" >> exit 1 >> fi >> >> sed -i '' '/^usr\/include/d' "$FILENAME" >> >> while IFS= read -r raw_target; do >> [ -z "$raw_target" ] && continue >> >> case "$raw_target" in >> /*) target="$raw_target" ;; >> *) target="/$raw_target" ;; >> esac >> >> if [ -f "$target" ]; then >> if ! rm -f "$target" > /dev/null 2>&1; then >> chflags noschg "$target" >> rm -f "$target" >> echo "Deleting file: $target" >> else >> echo "Deleting file: $target" >> fi >> elif [ -d "$target" ]; then >> if ! rm -rf "$target" > /dev/null 2>&1; then >> chflags -R noschg "$target" >> rm -rf "$target" >> echo "Deleting directory: $target" >> else >> echo "Deleting directory: $target" >> fi >> fi >> done < "$FILENAME" >> >> DISCLAIMER: This may or may not cover your use case. You must validate the logic before starting those scripts! >> >> On Wed, Aug 12, 2026 at 5:12 PM Dimitar Dimitrov <[email protected] <mailto:[email protected]>> wrote: >>> Hello, >>> check `man release` >>> Cheers, >>> >>> Dimitar >>> >>> On Wed, Aug 12, 2026 at 5:05 PM Mars G. Miro <[email protected] <mailto:[email protected]>> wrote: >>>> Hi All >>>> >>>> Is there a tarball of the RELENG branches (e.g. 15.1-RELEASE-p2) aside >>>> from obtaining it via git/github/gitlab/freebsd-update ? >>>> >>>> Thanks. >>>> -- cheers mars ---- Putt's Law: Technology is dominated by two types of people: Those who understand what they do not manage. Those who manage what they do not understand.