Add Arch Linux CT support and pacman integration

Add Arch Linux container support and integrate pacman into install utilities. New files: ct/archlinux.sh (container build/update script), install/archlinux-install.sh (install entrypoint), and json/archlinux.json (metadata). misc/install.func: detect_arch in detect_os, add pacman bootstrap, and implement pacman handlers for pkg_upgrade, pkg_install, pkg_remove, pkg_clean and package refresh; include openssh install path for pacman and provide a cleanup_lxc override to run pkg_clean. Enables creating/updating Arch Linux LXC containers and proper package manager handling.
This commit is contained in:
CanbiZ (MickLesk)
2026-04-27 13:46:18 +02:00
parent c199428604
commit 796b79241c
4 changed files with 134 additions and 1 deletions

View File

@@ -37,7 +37,7 @@
# Global variables for OS detection
OS_TYPE="" # debian, ubuntu, devuan, alpine, fedora, rocky, alma, centos, opensuse, gentoo, openeuler
OS_FAMILY="" # debian, alpine, rhel, suse, gentoo
OS_FAMILY="" # debian, alpine, rhel, suse, gentoo, arch
OS_VERSION="" # Version number
PKG_MANAGER="" # apt, apk, dnf, yum, zypper, emerge
INIT_SYSTEM="" # systemd, openrc, sysvinit
@@ -128,6 +128,11 @@ detect_os() {
OS_FAMILY="suse"
PKG_MANAGER="zypper"
;;
arch | archlinux)
OS_TYPE="arch"
OS_FAMILY="arch"
PKG_MANAGER="pacman"
;;
gentoo)
OS_FAMILY="gentoo"
PKG_MANAGER="emerge"
@@ -167,6 +172,8 @@ _bootstrap() {
yum install -y curl &>/dev/null
elif command -v zypper &>/dev/null; then
zypper install -y curl &>/dev/null
elif command -v pacman &>/dev/null; then
pacman -Sy --noconfirm curl &>/dev/null
elif command -v emerge &>/dev/null; then
emerge --quiet net-misc/curl &>/dev/null
fi
@@ -428,6 +435,9 @@ EOF
zypper)
$STD zypper refresh
;;
pacman)
$STD pacman -Sy --noconfirm
;;
emerge)
$STD emerge --sync
;;
@@ -466,6 +476,9 @@ pkg_upgrade() {
zypper)
$STD zypper -n update
;;
pacman)
$STD pacman -Su --noconfirm
;;
emerge)
$STD emerge --quiet --update --deep @world
;;
@@ -503,6 +516,9 @@ pkg_install() {
zypper)
$STD zypper install -y "${packages[@]}"
;;
pacman)
$STD pacman -S --noconfirm "${packages[@]}"
;;
emerge)
$STD emerge --quiet "${packages[@]}"
;;
@@ -538,6 +554,9 @@ pkg_remove() {
zypper)
$STD zypper remove -y "${packages[@]}"
;;
pacman)
$STD pacman -R --noconfirm "${packages[@]}"
;;
emerge)
$STD emerge --quiet --unmerge "${packages[@]}"
;;
@@ -572,6 +591,9 @@ pkg_clean() {
zypper)
$STD zypper clean
;;
pacman)
$STD pacman -Sc --noconfirm
;;
emerge)
$STD emerge --quiet --depclean
;;
@@ -1084,6 +1106,9 @@ EOF
zypper)
pkg_install openssh
;;
pacman)
pkg_install openssh
;;
emerge)
pkg_install net-misc/openssh
;;
@@ -1280,3 +1305,13 @@ os_info() {
echo "Pkg Manager: $PKG_MANAGER"
echo "Init System: $INIT_SYSTEM"
}
# ------------------------------------------------------------------------------
# cleanup_lxc()
#
# Overrides core.func version to support all OS types (not just Alpine/Debian)
# Cleans package caches and removes unnecessary packages after installation
# ------------------------------------------------------------------------------
cleanup_lxc() {
pkg_clean
}