add distro module
enables discovering and setting distro information and settings including the correct command for install and upgrade of packagesmaster
parent
e42b9fe72a
commit
5b6243d9ef
|
@ -0,0 +1 @@
|
|||
/data/Hacking/computing/docker/uci-docker-build/core/rootfs/opt/lib/distros.csv
|
|
|
@ -0,0 +1,65 @@
|
|||
#!/bin/bash
|
||||
|
||||
load_distros () {
|
||||
# $BASH_SHELL_HOST/distro/distros.csv
|
||||
if [ -f "$1" ]; then
|
||||
sed -e '$a\' "$1";
|
||||
else
|
||||
sed -e '$a\' <<< $(valid_distros)
|
||||
fi |
|
||||
sed -e '/\s*#.*$/d' |
|
||||
sed -e '/^\s*$/d' |
|
||||
sed 's/\s*,\s*/,/g'
|
||||
}
|
||||
|
||||
set_distro () {
|
||||
|
||||
_distro="$(echo "$(load_distros)" | grep $(get_distro))"
|
||||
INSTALL_PKGS=$(echo $_distro | cut -d',' -f3)
|
||||
UPDATE_PKGS=$(echo $_distro | cut -d',' -f4)
|
||||
export INSTALL_PKGS
|
||||
export UPDATE_PKGS
|
||||
[ "$1" = "-v" ] && env | grep _PKGS
|
||||
}
|
||||
|
||||
get_distro_install () {
|
||||
set_distro
|
||||
echo $INSTALL_PKGS
|
||||
}
|
||||
|
||||
get_distro_update () {
|
||||
set_distro
|
||||
echo $UPDATE_PKGS
|
||||
}
|
||||
|
||||
get_distro() {
|
||||
local file=/etc/upstream-release/lsb-release
|
||||
if [[ -f $file ]]; then
|
||||
echo $(cat $file | tr [:upper:] [:lower:] | grep -Poi '(debian|ubuntu|red hat|centos|arch|alpine)' | uniq)
|
||||
return 0
|
||||
else
|
||||
file=/etc/os-release
|
||||
if [[ -f $file ]]; then
|
||||
echo $(cat $file | tr [:upper:] [:lower:] | grep -Poi '(debian|ubuntu|red hat|centos|arch|alpine)' | uniq)
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# get_distro_install
|
||||
|
||||
|
||||
valid_distros () {
|
||||
# valid distros list
|
||||
# the distro must be the name used in /etc/os-release
|
||||
# <distro>,<core image name>,<install command>,<update command>
|
||||
|
||||
echo -e "\
|
||||
alpine,alpine, apk add --no-cache, apk update \n\
|
||||
debian,debian, apt-get install -y, apt-get update \n\
|
||||
arch, archlinux,pacman -S --noconfirm --needed, pacman -Syu \n\
|
||||
ubuntu, ubuntu, apt-get install -y, apt-get update \n\
|
||||
"
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -43,51 +43,3 @@ hostinfo () {
|
|||
[[ -f /etc/upstream-release/lsb-release ]] && cat /etc/upstream-release/lsb-release
|
||||
}
|
||||
|
||||
|
||||
# function get_distro() {
|
||||
# source /etc/os-release
|
||||
# declare distros=${@:-"arch alpine debian ubuntu"}
|
||||
# # echo $ID $ID_LIKE
|
||||
# for distro in $distros; do
|
||||
# echo $distro $ID $ID_LIKE
|
||||
# [[ $ID =~ $distro ]] && echo $distro && return 0
|
||||
# [[ $ID_LIKE =~ $distro ]] && echo $distro && return 0
|
||||
# done
|
||||
# return 1
|
||||
# }
|
||||
|
||||
# function get_release() {
|
||||
|
||||
# }
|
||||
|
||||
get_distro() {
|
||||
local file=/etc/upstream-release/lsb-release
|
||||
if [[ -f $file ]]; then
|
||||
echo $(cat $file | tr [:upper:] [:lower:] | grep -Poi '(debian|ubuntu|red hat|centos|arch|alpine)' | uniq)
|
||||
return 0
|
||||
else
|
||||
file=/etc/os-release
|
||||
if [[ -f $file ]]; then
|
||||
echo $(cat $file | tr [:upper:] [:lower:] | grep -Poi '(debian|ubuntu|red hat|centos|arch|alpine)' | uniq)
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# function get_distro() {
|
||||
# /bin/cp /etc/os-release /tmp/os-release.tmp
|
||||
# if [[ $1 == "-d" ]]; then
|
||||
# shift 1
|
||||
# # docker run -it --name get_container_os --rm --entrypoint cat $1 /etc/os-release
|
||||
# docker create --name dummy $1 > /dev/null
|
||||
# docker cp -L dummy:/etc/os-release /tmp/os-release.tmp
|
||||
# docker rm -f dummy > /dev/null
|
||||
# # docker run -it --name get_container_os --rm --entrypoint cat $1 /etc/os-release > /tmp/container-os.tmp 2> /dev/null
|
||||
# shift 1
|
||||
# fi
|
||||
# source /tmp/os-release.tmp
|
||||
# declare valid=${@:-"alpine debian ubuntu"}
|
||||
# # echo $ID $ID_LIKE
|
||||
# [[ "${valid}" =~ $ID ]] && echo $ID && return 0
|
||||
# [[ "${valid}" =~ $ID_LIKE ]] && echo $ID_LIKE && return 0
|
||||
# return 1
|
||||
# }
|
||||
|
|
Loading…
Reference in New Issue