##########
FEDORA_MIRROR_BASE="http://mirror.onelab.eu/fedora/"
FEDORA_MIRROR_KEYS="http://mirror.onelab.eu/keys/"
-FEDORA_PREINSTALLED="yum initscripts passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils openssh-server openssh-clients"
+FEDORA_PREINSTALLED="dnf dnf-yum passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils openssh-server openssh-clients"
DEBIAN_PREINSTALLED="openssh-server openssh-client"
########## networking utilities
}
##############################
-# return yum or debootstrap
+# return dnf or debootstrap
function package_method () {
fcdistro=$1; shift
case $fcdistro in
f[0-9]*|centos[0-9]*|sl[0-9]*)
- echo yum ;;
+ echo dnf ;;
wheezy|jessie|precise|trusty|utopic|vivid|wily|xenial)
echo debootstrap ;;
*)
personality=$1; shift
fcdistro=$1; shift
case $(package_method $fcdistro) in
- yum)
+ dnf)
case $personality in *32) echo i386 ;; *64) echo x86_64 ;; *) echo Unknown-arch-1 ;; esac ;;
debootstrap)
case $personality in *32) echo i386 ;; *64) echo amd64 ;; *) echo Unknown-arch-2 ;; esac ;;
fedora_download $cache || { echo "Failed to download 'fedora base'"; return 1; }
else
echo "Updating cache $cache/rootfs ..."
- if ! yum --installroot $cache/rootfs --releasever ${fedora_release} -y --nogpgcheck update ; then
+ if ! dnf --installroot $cache/rootfs --releasever ${fedora_release} -y --nogpgcheck update ; then
echo "Failed to update 'fedora base', continuing with last known good cache"
else
echo "Update finished"
done
MIRROR_URL=$FEDORA_MIRROR_BASE/releases/${fedora_release}/Everything/$arch/os
- RELEASE_URL1="$MIRROR_URL/Packages/fedora-release-${fedora_release}-1.noarch.rpm"
- # with fedora18 the rpms are scattered by first name
+ # since fedora18 the rpms are scattered by first name
# first try the second version of fedora-release first
- RELEASE_URL2="$MIRROR_URL/Packages/f/fedora-release-${fedora_release}-2.noarch.rpm"
- RELEASE_URL3="$MIRROR_URL/Packages/f/fedora-release-${fedora_release}-1.noarch.rpm"
+ RELEASE_URLS=""
+ for subindex in 3 2 1; do
+ RELEASE_URLS="$RELEASE_URLS $MIRROR_URL/Packages/f/fedora-release-${fedora_release}-1.noarch.rpm"
+ done
RELEASE_TARGET=$INSTALL_ROOT/fedora-release-${fedora_release}.noarch.rpm
found=""
- for attempt in $RELEASE_URL1 $RELEASE_URL2 $RELEASE_URL3; do
- if curl -f $attempt -o $RELEASE_TARGET ; then
- echo "Retrieved $attempt"
+ for attempt in $RELEASE_URLS; do
+ if curl --silent --fail $attempt -o $RELEASE_TARGET; then
+ echo "Successfully Retrieved $attempt"
found=true
break
else
- echo "Failed attempt $attempt"
+ echo "Failed (not to worry about) with attempt $attempt"
fi
done
[ -n "$found" ] || { echo "Could not retrieve fedora-release rpm - exiting" ; exit 1; }
# So ideally if we want to be able to build f12 images from f18 we need an rpm that has
# this patch undone, like we have in place on our f14 boxes (our f14 boxes need a f18-like rpm)
- YUM="yum --installroot=$INSTALL_ROOT --releasever=${fedora_release} --nogpgcheck -y"
- echo "$YUM install $FEDORA_PREINSTALLED"
- $YUM install $FEDORA_PREINSTALLED || { echo "Failed to download rootfs, aborting." ; return 1; }
+ DNF="dnf --installroot=$INSTALL_ROOT --releasever=${fedora_release} --nogpgcheck -y"
+ echo "$DNF install $FEDORA_PREINSTALLED"
+ $DNF install $FEDORA_PREINSTALLED || { echo "Failed to download rootfs, aborting." ; return 1; }
mv "$INSTALL_ROOT" "$cache/rootfs"
echo "Download complete."
pkg_method=$(package_method $fcdistro)
case $pkg_method in
- yum)
+ dnf)
if [ -z "$IMAGE" ]; then
fedora_install $lxc || { echo "failed to install fedora root image"; exit 1 ; }
# this appears to be safer; observed in Jan. 2016 on a f23 host and a f14 cached image
- # we were getting this message when attempting the first chroot yum install
+ # we were getting this message when attempting the first chroot dnf install
# rpmdb: Program version 4.8 doesn't match environment version 5.3
chroot $(lxcroot $lxc) $personality rm -rf /var/lib/rpm/__db.00{0,1,2,3,4,5,6,7,8,9}
chroot $(lxcroot $lxc) $personality rpm --rebuilddb
groups=$(pl_getGroups -a $lxc_arch $fcdistro $pldistro $pkgsfile)
case "$pkg_method" in
- yum)
+ dnf)
# --allowerasing required starting with fedora24
#
has_dnf=""
pkg_installer="dnf -y install --allowerasing"
grp_installer="dnf -y groupinstall --allowerasing"
else
- echo "container has only yum"
- pkg_installer="yum -y install"
- grp_installer="yum -y groupinstall"
+ echo "container has only dnf"
+ pkg_installer="dnf -y install"
+ grp_installer="dnf -y groupinstall"
fi
[ -n "$packages" ] && chroot ${lxc_root} $personality $pkg_installer $packages
for group_plus in $groups; do