From d0553e9f6d042e81e5f2f4f24ee0df0c83571421 Mon Sep 17 00:00:00 2001 From: asmeron Date: Sun, 16 Jun 2024 18:22:13 +0600 Subject: [PATCH] New functions 43-repository --- ublinux/default | 11 + ublinux/functions | 1 + ublinux/rc.local.d/43-repository | 371 ++++++++++++++++++++++++----- ublinux/templates/ublinux-data.ini | 117 +++++---- 4 files changed, 392 insertions(+), 108 deletions(-) diff --git a/ublinux/default b/ublinux/default index 543cc3f..3dd3fab 100644 --- a/ublinux/default +++ b/ublinux/default @@ -8,6 +8,8 @@ declare -A JOURNALD declare -A SYSTEMD_COREDUMP declare -A DOMAIN declare -A REPOSITORY +declare -A REPOPUBLIC_CACHE +declare -A AUTOUPDATE ##rc.desktop/all/* is launching when desktop is ready @@ -246,4 +248,13 @@ REPOSITORY[multilib]=/etc/pacman.d/mirrorlist REPOSITORY[modules]=/etc/pacman.d/mirrorlist #REPOSITORY[ublinux]=/etc/pacman.d/mirrorlist +REPOPUBLIC_CACHE[port]="8080" +REPOPUBLIC_CACHE[cache_dir]="/memory/layer-base/1/repopublic_cache" +REPOPUBLIC_CACHE[purge_files_after]="0" +REPOPUBLIC_CACHE[download_timeout]="3600" +REPOPUBLIC_CACHE[user_agent]="repopublic/1.0" + +AUTOUPDATE[mode]=modsys +AUTOUPDATE[interval]=boot,7d + UBPILE_SECRET_KEY="4a6ed27e0434490028ff63b11f12fb7c" diff --git a/ublinux/functions b/ublinux/functions index 895faa3..a4eb3d3 100755 --- a/ublinux/functions +++ b/ublinux/functions @@ -1432,6 +1432,7 @@ ubconfig_exec_system(){ REPOSITORY\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_01_repository "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; REPOPUBLIC_NET) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_02_repopublic_net "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; REPOPUBLIC_WEB\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_03_repopublic_web "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; + REPOPUBLIC_CACHE) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_04_repopublic_cache "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; REPOPUBLIC_CACHE\[*\]) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_04_repopublic_cache "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; AUTOUPDATE) ${ROOTFS}/usr/lib/ublinux/rc.local.d/43-repository exec_autoupdate "${COMMAND_MODE_VAR}" "${NAME_VAR}=${VALUE_VAR}" ;; *) NO_FIND_EXCUTE=1 ;; diff --git a/ublinux/rc.local.d/43-repository b/ublinux/rc.local.d/43-repository index ccb989e..e413693 100755 --- a/ublinux/rc.local.d/43-repository +++ b/ublinux/rc.local.d/43-repository @@ -12,11 +12,12 @@ SOURCE=${SYSCONF}/update; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null debug_mode "$0" "$@" ## Настройка подключения репозиториев -## REPOSITORY=disable|enable +## REPOSITORY=disable|enable|only ## *disable # Отключить управление списком репозиториев, по умолчанию ## # Используются репозитории из пакета pacman, по умолчанию: core,extra,community,multilib,modules ## enable # Включить управление списком репозиториев ## # Используются системные репозитории core,extra,community,multilib,modules и указанные в параметре REPOSITORY[*] +## # Если не указаны дополнитеьные репозитории в параметре REPOSITORY[*] и включен любой режим песочницы, то активен только репозиторий 'modules' ## only # Включить управление списком репозиториев ## # Используются только репозитории указанные в параметре REPOSITORY[*] ## Порядок указания репозиториев важен @@ -56,31 +57,44 @@ debug_mode "$0" "$@" ## Install # Включать установку пакетов из этого репозитория во время операции --sync ## Upgrade # Позволить этому репозиторию быть действительным источником пакетов при выполнении --sysupgrade ## disable # Временно отключить управление репозиторием, либо после = указать - пример: REPOSITORY[modules]=-/etc/pacman.d/mirrorlist +## Если требуется создать файл зеркала в пакетном режиме, то пример: ubconfig set [/etc/pacman.d/ub-mirrorlist] "|SERVER=http://repo.ublinux.ru/2405/\$repo/\$arch" "|SERVER=https://repo.ublinux.ru/2405/\$repo/\$arch" +## ## REPOSITORY[core]=/etc/pacman.d/mirrorlist;;;disable ## REPOSITORY[modules]="https://repo.ublinux.ru/2405/\$repo/\$arch" ## REPOSITORY[modules]='https://repo.ublinux.ru/2405/$repo/$arch' ## REPOSITORY[mymodules]=http://192.168.0.1:8080/repo/2204;;;disable -## REPOSITORY[webmyrepo]=http://myweb.org/myrepo;never -## REPOSITORY[localmyrepo]=file:///home/myrepo;never;All +## REPOSITORY[webmyrepo]=http://myweb.org/myrepo;Never +## REPOSITORY[localmyrepo]=file:///home/myrepo;Never;All ## REPOSITORY[myrepo]=/home/myrepo/mirrorlist exec_01_repository(){ - repository_enable_only(){ + repository_enable(){ local FILE_SOURCE_DEFAULT="/usr/lib/ublinux/default" local FILE_SOURCE_UPDATE="${SYSCONF}/update" local FILE_PACMAN_CONF="${ROOTFS}/etc/pacman.conf" - local REPOSITORY_LIST= local PACMAN_CONF_DATA= + local ARG_UBCONFIG= # Удалим все действующие репозитории awk -i inplace -v b=2 '/^\[.*\]$/{f=1; c++} !(f && c>=b); /^\s*$/{f=0}' ${FILE_PACMAN_CONF} # Удалить в конце файла все пустые строки sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' -i ${FILE_PACMAN_CONF} - [[ ${REPOSITORY[0]} == "enable" ]] && REPOSITORY_LIST+=$(grep -oE "^[[:blank:]]*REPOSITORY\[.*]=" ${FILE_SOURCE_DEFAULT} 2>/dev/null)$'\n' - REPOSITORY_LIST+=$(grep -oE "^[[:blank:]]*REPOSITORY\[.*]=" ${FILE_SOURCE_UPDATE} 2>/dev/null) + local REPOSITORY_LIST= REPOSITORY_LIST_DEFAULT= REPOSITORY_LIST_SOURCE= + REPOSITORY_LIST_SOURCE=$(grep -oE "^[[:blank:]]*REPOSITORY\[.*\]" ${FILE_SOURCE_UPDATE} 2>/dev/null) + if [[ ${REPOSITORY[0]} == "enable" ]]; then + # Если включено управление репозиториями 'enable' + не заданы пользовательские репозитории + режим песочницы, то включить только модули + if [[ ${SYSTEMBOOT_STATEMODE,,} == @("sandbox"|"sandbox_ram_home"|"sandbox_hdd"|"sandbox_hdd_home") && ${REPOSITORY_LIST_SOURCE} == "" ]]; then + REPOSITORY_LIST_DEFAULT=$(grep -oE "^[[:blank:]]*REPOSITORY\[modules\]" ${FILE_SOURCE_DEFAULT} 2>/dev/null)$'\n' + else + REPOSITORY_LIST_DEFAULT=$(grep -oE "^[[:blank:]]*REPOSITORY\[.*\]" ${FILE_SOURCE_DEFAULT} 2>/dev/null)$'\n' + fi + ARG_UBCONFIG="--default" + fi + REPOSITORY_LIST="${REPOSITORY_LIST_DEFAULT}${REPOSITORY_LIST_SOURCE}" local REPOSITORY_NAME= REPOSITORY_VAR= - while IFS='=' read -u3 REPOSITORY_NAME REPOSITORY_VAR; do + while IFS='' read -u3 REPOSITORY_NAME; do [[ ${REPOSITORY_NAME} =~ ^.*'['(.*)']' ]] && REPOSITORY_NAME=${BASH_REMATCH[1]} || continue - [[ -n ${REPOSITORY[${REPOSITORY_NAME}]} ]] \ - && while IFS=';' read -u4 REPOSITORY_SERVER_PATHS REPOSITORY_SIGLEVEL REPOSITORY_USAGE REPOSITORY_DISABLE NULL; do + REPOSITORY_VAR=$(ubconfig --quiet --raw ${ARG_UBCONFIG} --source system get [update] REPOSITORY[${REPOSITORY_NAME}] 2>/dev/null) + [[ -n ${REPOSITORY_VAR} ]] \ + && while IFS=';' read -r -u4 REPOSITORY_SERVER_PATHS REPOSITORY_SIGLEVEL REPOSITORY_USAGE REPOSITORY_DISABLE NULL; do [[ ${REPOSITORY_SERVER_PATHS} =~ ^("disable"|"-") ]] && continue [[ ${REPOSITORY_DISABLE} = @("disable"|"off"|"no") ]] && continue PACMAN_CONF_DATA+=$'\n' @@ -88,7 +102,7 @@ exec_01_repository(){ [[ -n ${REPOSITORY_SIGLEVEL} ]] && PACMAN_CONF_DATA+="SigLevel = ${REPOSITORY_SIGLEVEL}"$'\n' [[ -n ${REPOSITORY_USAGE} ]] && PACMAN_CONF_DATA+="Usage = ${REPOSITORY_USAGE}"$'\n' [[ -n ${REPOSITORY_SERVER_PATHS} ]] \ - && while IFS= read -u5 REPOSITORY_SERVER_PATH; do + && while IFS= read -r -u5 REPOSITORY_SERVER_PATH; do if [[ ${REPOSITORY_SERVER_PATH} =~ ^"/" ]]; then PACMAN_CONF_DATA+="Include = ${REPOSITORY_SERVER_PATH}"$'\n' elif [[ ${REPOSITORY_SERVER_PATH} =~ ^("file:"|"ftp:"|"http:"|"https:") ]]; then @@ -96,7 +110,8 @@ exec_01_repository(){ fi done 5<<< "${REPOSITORY_SERVER_PATHS//,/$'\n'}" #echo "${REPOSITORY_NAME} == ${REPOSITORY_SERVER_PATHS} :: ${REPOSITORY_SIGLEVEL} :: ${REPOSITORY_USAGE} :: ${REPOSITORY_DISABLE} :: ${NULL}" - done 4<<< "${REPOSITORY[${REPOSITORY_NAME}]}" + done 4<<< "${REPOSITORY_VAR}" + # awk - Из списка удалить вторые дубликаты, не меняя порядок done 3< <(awk -v RS="[\n]+" '!n[$0]++' <<< "${REPOSITORY_LIST}") echo "${PACMAN_CONF_DATA}" >> ${FILE_PACMAN_CONF} } @@ -114,14 +129,14 @@ exec_01_repository(){ if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${#REPOSITORY[@]} != 0 ]]; then if [[ ${REPOSITORY[0]} == @("enable"|"only") ]]; then - repository_enable_only + repository_enable elif [[ ${REPOSITORY[0]} == "disable" ]]; then repository_disable - ubconfig --noexecute remove [update] REPOSITORY + ubconfig --quiet --nocolor --noexecute remove [update] REPOSITORY fi elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then if [[ ${REPOSITORY[0]} == @("enable"|"only") ]]; then - repository_enable_only + repository_enable elif [[ ${REPOSITORY_NAME} == "REPOSITORY" ]]; then # Удаление параметра REPOSITORY= . Отключить управление репозиториями repository_disable @@ -131,18 +146,18 @@ exec_01_repository(){ ## pacredir (https://github.com/eworm-de/pacredir) ## Опубликовать локальный репозиторий в локальной сети и подключиться к сети распределённых репозиториев -## При установке пакета пакет ищется в распределённой сети репозиториев и устанавливается самой последней доступной версией +## При установке, пакет ищется в распределённой сети репозиториев и устанавливается самой последней доступной версией ## REPOPUBLIC_NET=disable|no|none|enable|yes,db,,..., ## disable|no|none # Отключить все репозитории от сети распределённых репозиториев -## enable|yes # Подключить все репозитории к сети распределённых репозиториев +## enable|yes # Подключить репозитории к сети распределённых репозиториев. Если не указаны конкретные имена, то будут подключены все ## db # Получать БД пакетов pacman от сети распределённых репозиториев -## # Подключенное имя репозитория, например: core,extra,community,multilib,modules +## # Подключить только выбранные имена репозиториев, например: core,extra,community,multilib,modules ## REPOPUBLIC_NET=enable,db -## REPOPUBLIC_NET=db,community,modules +## REPOPUBLIC_NET=enable,db,community,modules exec_02_repopublic_net(){ disable_pacredir(){ - systemctl disable pacserve.service pacredir.service - systemctl stop pacserve.service pacredir.service + systemctl --quiet disable pacserve.service pacredir.service + systemctl --quiet stop pacserve.service pacredir.service sed -E "/Include = \/etc\/pacman.d\/pacredir/d" -i ${FILE_PACMAN_CONF} } [[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift @@ -151,32 +166,36 @@ exec_02_repopublic_net(){ local FILE_PACREDIR_CONF="${ROOTFS}/etc/pacman.d/pacredir" if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${#REPOPUBLIC_NET[@]} != 0 ]]; then local DB_CACHE= - local REPOPUBLIC_NET_DISABLE= + local REPOPUBLIC_NET_ENABLE= + local REPOPUBLIC_NET_ENABLE_MANUAL= local DATA_PACMAN_CONF=$(cat ${FILE_PACMAN_CONF}) #sed -E "/Include = \/etc\/pacman.d\/pacredir/d" <<< ${DATA_PACMAN_CONF} local DATA_PACMAN_CONF=${DATA_PACMAN_CONF//$'\n'Include = \/etc\/pacman.d\/pacredir/} while IFS= read -u3 REPOPUBLIC_NET_REPOSITORY; do if [[ ${REPOPUBLIC_NET_REPOSITORY,,} == @("disable"|"no"|"none") ]]; then # Отключить управление - REPOPUBLIC_NET_DISABLE=yes + REPOPUBLIC_NET_ENABLE= break + elif [[ ${REPOPUBLIC_NET_REPOSITORY,,} == @("enable"|"yes") ]]; then + # Включить управление + REPOPUBLIC_NET_ENABLE=yes elif [[ ${REPOPUBLIC_NET_REPOSITORY,,} == "db" ]]; then # Включить запрос БД pacman из кеш сервера DB_CACHE=yes - elif [[ ${REPOPUBLIC_NET_REPOSITORY,,} == @("enable"|"yes") ]]; then - # Добавить ко всем репозиториям в pacman.conf: Include = /etc/pacman.d/pacredir - DATA_PACMAN_CONF=$(sed -E "0,/^\[.*\]$/! s/(^\[.*\]$)/\1\nInclude = \/etc\/pacman.d\/pacredir/" <<< ${DATA_PACMAN_CONF}) #" else + REPOPUBLIC_NET_ENABLE="manual" # Добавить к указанному репозиторию, работать через кеш сервер DATA_PACMAN_CONF=$(sed -E "/\[${REPOPUBLIC_NET_REPOSITORY}\]/a Include = \/etc\/pacman.d\/pacredir" <<< ${DATA_PACMAN_CONF}) fi done 3<<< "${REPOPUBLIC_NET//,/$'\n'}" - if [[ -n ${REPOPUBLIC_NET_DISABLE} ]]; then + if [[ -z ${REPOPUBLIC_NET_ENABLE} ]]; then disable_pacredir else + # Если не укзаны репозитории, то добавить ко всем репозиториям в pacman.conf: Include = /etc/pacman.d/pacredir + [[ ${REPOPUBLIC_NET_ENABLE} == "manual" ]] && DATA_PACMAN_CONF=$(sed -E "0,/^\[.*\]$/! s/(^\[.*\]$)/\1\nInclude = \/etc\/pacman.d\/pacredir/" <<< ${DATA_PACMAN_CONF}) #" [[ -n ${DB_CACHE} ]] && sed -E "s/^#(Server = )/\1/" -i ${FILE_PACREDIR_CONF} || sed -E "s/^(Server = )/#\1/" -i ${FILE_PACREDIR_CONF} echo "${DATA_PACMAN_CONF}" > ${FILE_PACMAN_CONF} - systemctl restart pacserve.service pacredir.service + systemctl --quiet restart pacserve.service pacredir.service fi elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then disable_pacredir @@ -192,7 +211,7 @@ exec_02_repopublic_net(){ ## enable|yes # Включить публикацию ## disable|no|none # Выключить публикацию ## listing # Включить WEB обозреватель файлов. Не обязятельный -## # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный +## # Порт по которому доступен репозиторий. По умолчанию: 80. Не обязательный ## # Параметры авторизации, имя пользователя. Не обязательный ## # Параметры авторизации, открытый пароль или тип хеша. Не обязательный ## # Не зашифрованный пароль @@ -295,42 +314,278 @@ exec_03_repopublic_web(){ ## pacoloco (https://github.com/anatol/pacoloco) ## Опубликовать ленивое зеркало подключенных репозиториев в виде локального WEB ресурса. ## Получая запрос от пользователя, загружает с удалённого репозитория пакет и сохраняет в кеше передавая его пользователю. -## REPOPUBLIC_CACHE[]=enable|disable::@,...,@ -## # Путь до каталога файлов кеша, если не указан, то по умолчанию: /mnt/livedata/ublinux-data/repopublic_cache -## enable # Включить публикацию -## disable # Выключить публикацию -## # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный -## -## # Произвольное имя репозитория -## # Полный адрес репозитория URL или файл -## # Если не указано @, то по умолчанию системные /etc/pacman.d/mirrorlist -## # Возможно указать несколько, через запятую. -## # Файл списка зеркал, подключается как список зеркал с синтаксисом /etc/pacman.d/mirrorlist -## # Важно: в подключенном списке не должно быть адреса текущего сервера -## http:// # URL префикс для репозитория на HTTP -## https:// # URL префикс для репозитория на HTTPS -## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable -## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable:80:myrepo@http://192.168.0.1:8080/repo/2204 +## REPOPUBLIC_CACHE=enable|yes|disable|no|none +## enable|yes # Включить ленивое зеркало +## disable|no|none # Выключить ленивое зеркало +## +## Если задано только "REPOPUBLIC_CACHE=enable" без указания рпозиториев пользователем, то создаётся зеркало по умолчанию, где "2204" версия текущего дистрибутива: +## : REPOPUBLIC_CACHE[ublinux_2405]=url@http://repo.ublinux.ru/2405,url@https://repo.ublinux.ru/2405 +## На клиенте необходимо указать: +## либо в файле "/etc/pacman.conf" у каждого репозитория: Server=http://ipadress:8080/repo/ublinux_2204/$repo/$arch +## либо в файле "/etc/pacman.d/mirrorlist" для всех репозиториев: Server=http://ipadress:8080/repo/ublinux_2204/$repo/$arch +## либо параметры в конфигурации REPOSITORY[core]='http://ipadress:8080/repo/ublinux_2204/$repo/$arch' +## +## REPOPUBLIC_CACHE[]= +## : # Параметр управления, возможные варианты: +## port # Порт сервиса, по умолчанию: 80 +## cache_dir # Каталог кэша, по умолчанию: /memory/layer-base/1/repopublic_cache +## purge_files_after # Продолжительность бездействия (в секундах), по истечении которой файл должен быть удален из кэша, по умолчанию: 360000 +## # =360000 секунд или 100 часов, =0 никогда не выполнять +## download_timeout # Таймаут (в секундах) для загрузки интернет-кэша, по умолчанию: 3600 +## http_proxy # Работать через прокси. Пример: http://foo.company.com:8989 +## user_agent # Пользовательский агент, используемый для извлечения файлов из репозиториев, по умолчанию: repopublic/1.0 +## prefetch.cron # Cтандартное выражение cron, пример: 0 0 3 * * * * +## # (https://en.wikipedia.org/wiki/Cron#CRON_expression) (https://github.com/gorhill/cronexpr#implementation ) +## prefetch.ttl_unaccessed_in_days # Количество дней подряд, в течение которых не обновляются системы в сети, по умолчанию: 30 +## # Удалять и останавливать пакеты предварительной выборки (и ссылки на базы данных), если они не загружены после ttl_unaccessed_in_days дней, после обновления +## prefetch.ttl_unupdated_in_days # Количество дней подряд, в течение которых не было запрошено обновление, по умолчанию: 300 +## # Удалять и останавливать пакеты предварительной выборки, которые не были обновлены в исходной версии или запрошены в течение ttl_unupdated_in_days +## REPOPUBLIC_CACHE[]=@ +## # Имя репозитория, для подключения клиентов +## : # Тип подключаемого репозитория +## url # Вэб ссылка на репозиторий +## http_proxy # Прокси-сервер, может быть включен для каждого репозитория, затеняя глобальный 'http_proxy' +## mirrorlist # Файл зеркал. Будьте осторожны! Убедитесь, что URL текущего сервера НЕ включен в этот файл! +## # Ресурс, можно указать несколько черз зпятую (,) +## REPOPUBLIC_CACHE[ublinux_2405]="url@http://repo.ublinux.ru/2405,url@https://repo.ublinux.ru/2405" +## REPOPUBLIC_CACHE[myrepo_x86_64]="url@http://my.repo.ru/myrepo/x86_64" +## REPOPUBLIC_CACHE[newrepo]="http_proxy@http://proxy.localnet.ru:8080,url@http://192.168.1.1/newrepo/x86_64" +## REPOPUBLIC_CACHE[ublinux-reflector]="mirrorlist@/etc/pacman.d/reflector_mirrorlist" exec_04_repopublic_cache(){ - true + enable_pacoloco(){ + local FILE_PACOLOCO_CONF="${ROOTFS}/etc/pacoloco.yaml" + local REPOPUBLIC_CACHE_REPO_MANUAL= + [[ -d ${REPOPUBLIC_CACHE[cache_dir]} ]] || install -dm755 ${REPOPUBLIC_CACHE[cache_dir]} + chown -R pacoloco:pacoloco ${REPOPUBLIC_CACHE[cache_dir]} + true > ${FILE_PACOLOCO_CONF} + [[ ${REPOPUBLIC_CACHE[port]} ]] && yq '.port = '${REPOPUBLIC_CACHE[port]}'' --inplace ${FILE_PACOLOCO_CONF} + [[ ${REPOPUBLIC_CACHE[cache_dir]} ]] && yq '.cache_dir = "'${REPOPUBLIC_CACHE[cache_dir]}'"' --inplace ${FILE_PACOLOCO_CONF} + [[ ${REPOPUBLIC_CACHE[purge_files_after]} ]] && yq '.purge_files_after = '${REPOPUBLIC_CACHE[purge_files_after]}'' --inplace ${FILE_PACOLOCO_CONF} + [[ ${REPOPUBLIC_CACHE[download_timeout]} ]] && yq '.download_timeout = '${REPOPUBLIC_CACHE[download_timeout]}'' --inplace ${FILE_PACOLOCO_CONF} + [[ ${REPOPUBLIC_CACHE[user_agent]} ]] && yq '.user_agent = "'${REPOPUBLIC_CACHE[user_agent]}'"' --inplace ${FILE_PACOLOCO_CONF} + [[ ${REPOPUBLIC_CACHE[http_proxy]} ]] && yq '.http_proxy = "'${REPOPUBLIC_CACHE[http_proxy]}'"' --inplace ${FILE_PACOLOCO_CONF} + [[ ${REPOPUBLIC_CACHE[prefetch.cron]} ]] && yq '.prefetch.cron = "'${REPOPUBLIC_CACHE[prefetch.cron]}'"' --inplace ${FILE_PACOLOCO_CONF} + [[ ${REPOPUBLIC_CACHE[prefetch.ttl_unaccessed_in_days]} ]] && yq '.prefetch.ttl_unaccessed_in_days = '${REPOPUBLIC_CACHE[prefetch.ttl_unaccessed_in_days]}'' --inplace ${FILE_PACOLOCO_CONF} + [[ ${REPOPUBLIC_CACHE[prefetch.ttl_unupdated_in_days]} ]] && yq '.prefetch.ttl_unupdated_in_days = '${REPOPUBLIC_CACHE[prefetch.ttl_unupdated_in_days]}'' --inplace ${FILE_PACOLOCO_CONF} + while IFS= read -u3 SELECT_REPOPUBLIC_CACHE; do + if [[ ${SELECT_REPOPUBLIC_CACHE,,} == @(0|"port"|"cache_dir"|"purge_files_after"|"download_timeout"|"user_agent"|"http_proxy"|"prefetch.cron"|"prefetch.ttl_unaccessed_in_days"|"prefetch.ttl_unupdated_in_days") ]]; then + # Название параметра, не репозиторий + true + else + # Имя репозитория + REPOPUBLIC_CACHE_REPO_MANUAL=yes + REPOPUBLIC_CACHE_URL_LIST=() + while IFS= read -u4 SELECT_REPOPUBLIC_CACHE_URL; do + if [[ ${SELECT_REPOPUBLIC_CACHE_URL} =~ (.*)"@"(.*) ]]; then + REPOPUBLIC_CACHE_TYPE=${BASH_REMATCH[1]} + REPOPUBLIC_CACHE_URL=${BASH_REMATCH[2]} + if [[ ${REPOPUBLIC_CACHE_TYPE} == @("url"|"urls") ]]; then + REPOPUBLIC_CACHE_URL_LIST+=(${REPOPUBLIC_CACHE_URL}) + else + yq -p yaml -o yaml '.repos.'${SELECT_REPOPUBLIC_CACHE}'.'${REPOPUBLIC_CACHE_TYPE}' = "'${REPOPUBLIC_CACHE_URL}'"' --inplace ${FILE_PACOLOCO_CONF} + fi + fi + done 4<<< "${REPOPUBLIC_CACHE[${SELECT_REPOPUBLIC_CACHE}]//,/$'\n'}" + if [[ ${#REPOPUBLIC_CACHE_URL_LIST[@]} -ge 2 ]]; then + REPOPUBLIC_CACHE_TYPE="urls" + for SELECT_REPOPUBLIC_CACHE_URL in ${REPOPUBLIC_CACHE_URL_LIST[@]}; do + yq -p yaml -o yaml '.repos.'${SELECT_REPOPUBLIC_CACHE}'.'${REPOPUBLIC_CACHE_TYPE}' += ["'${SELECT_REPOPUBLIC_CACHE_URL}'"]' --inplace ${FILE_PACOLOCO_CONF} + done + else + REPOPUBLIC_CACHE_TYPE="url" + yq -p yaml -o yaml '.repos.'${SELECT_REPOPUBLIC_CACHE}'.'${REPOPUBLIC_CACHE_TYPE}' = "'${REPOPUBLIC_CACHE_URL}'"' --inplace ${FILE_PACOLOCO_CONF} + fi + fi + done 3< <(printf "%s\n" "${!REPOPUBLIC_CACHE[@]}") + if [[ ${REPOPUBLIC_CACHE_REPO_MANUAL} == "" ]]; then + VERSION_ID=$(grep "VERSION_ID" ${ROOTFS}/etc/os-release | cut -d= -f2) + yq -p yaml -o yaml \ + '.repos.ublinux_'${VERSION_ID}'.urls += ["http://repo.ublinux.ru/'${VERSION_ID}'"] | + .repos.ublinux_'${VERSION_ID}'.urls += ["https://repo.ublinux.ru/'${VERSION_ID}'"]' --inplace ${FILE_PACOLOCO_CONF} + fi + systemctl --quiet restart pacoloco.service + } + disable_pacoloco(){ + systemctl --quiet disable pacoloco.service + systemctl --quiet stop pacoloco.service + find ${ROOTFS}/memory/bundles -maxdepth 3 -path "*/etc/*" -type f -name "pacoloco.yaml" -exec cp -af {} "/etc/" \; -quit + } + [[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift + [[ -n ${COMMAND} ]] || COMMAND="set=" + local PARAM="$@" + if [[ -n ${PARAM} ]]; then + REPOPUBLIC_CACHE_NAME=${PARAM%%=*} + REPOPUBLIC_CACHE_VAR=${PARAM#*=} + fi + if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]] && [[ ${#REPOPUBLIC_CACHE[@]} != 0 ]]; then + if [[ ${REPOPUBLIC_CACHE[0]} == @("enable"|"yes") ]]; then + # Включить управление + enable_pacoloco + elif [[ ${REPOPUBLIC_CACHE[0]} == @("disable"|"no"|"none") ]]; then + # Отключить управление + disable_pacoloco + fi + elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then + if [[ ${REPOPUBLIC_CACHE[0]} == @("enable"|"yes") ]]; then + # Включить управление + enable_pacoloco + elif [[ ${REPOPUBLIC_CACHE_NAME} == "REPOPUBLIC_CACHE" ]]; then + # Отключить управление + disable_pacoloco + fi + fi } ## Настройка автообновления системы -## AUTOUPDATE=enable | :: -## enable # Включает автообновление с параметрами modsys:boot:core,extra,community,multilib,ublinux,modules -## # Режимы обновления -## *modsys # Вначале обновлять все модули и после систему -## module # Обновлять только модули -## system # Обновлять всё в порядке указанных репозиториев -## # Интервал обновления +## AUTOUPDATE=enable +## enable # Включает автообновление. Параметрами по умолчанию: modsys boot core,extra,community,multilib,modules +## Настройка режимов обновления +## AUTOUPDATE[mode]=*modsys|modules|system +## *modsys # Вначале обновлять все модули и после систему. Использует [update] REPOSITORY[modules]= +## modules # Обновлять только модули. Использует [update] REPOSITORY[modules]= +## system # Обновлять всё в порядке указанных репозиториев +## Настройка интервала обновления +## AUTOUPDATE[interval]=*boot,30min|12h|*7d|1M ## *boot # Каждую загрузку -## 12h # Каждые 12 часов -## 7d # Каждые 7 дней -## 1m # Один раз в месяц -## # Имена репозиториев с которых будет происходить обновление. Если не указано, то по умолчанию: core,extra,community,multilib,ublinux,modules +## 30min # Каждые 30 минут, возможно указать любую цифру +## 12h # Каждые 12 часов, возможно указать любую цифру +## *7d # Каждые 7 дней, возможно указать любую цифру +## 1M # Один раз в месяц, возможно указать любую цифру +## Настройка репозиториев обновления +## AUTOUPDATE[repos]= +## # Имена репозиториев с которых будет происходить обновление. Если не указано, то по умолчанию системные ## AUTOUPDATE=enable exec_autoupdate(){ - true + enable_autoupdate(){ + ONBOOTSEC= + ONACTIVESEC= + AUTOUPDATE_INTERVAL_SEC= + while read -u3 AUTOUPDATE_INTERVAL; do + [[ ${AUTOUPDATE_INTERVAL} == "boot" ]] && ONBOOTSEC="OnBootSec=" || ONACTIVESEC="OnActiveSec=" + if [[ ${AUTOUPDATE_INTERVAL} =~ ^([[:digit:]])"min"$ ]]; then + AUTOUPDATE_INTERVAL_SEC="${BASH_REMATCH[1]}min" + elif [[ ${AUTOUPDATE_INTERVAL} =~ ^([[:digit:]])"h"$ ]]; then + AUTOUPDATE_INTERVAL_SEC="${BASH_REMATCH[1]}h" + elif [[ ${AUTOUPDATE_INTERVAL} =~ ^([[:digit:]])"d"$ ]]; then + AUTOUPDATE_INTERVAL_SEC="$((${BASH_REMATCH[1]}*24))h" + elif [[ ${AUTOUPDATE_INTERVAL} =~ ^([[:digit:]])"M"$ ]]; then + AUTOUPDATE_INTERVAL_SEC="$((${BASH_REMATCH[1]}*24*30))h" + fi + done 3<<< ${AUTOUPDATE[interval]//,/$'\n'} + ONUNITACTIVESEC="OnUnitActiveSec=${AUTOUPDATE_INTERVAL_SEC}" + [[ -n ${ONBOOTSEC} ]] & ONBOOTSEC+="${AUTOUPDATE_INTERVAL_SEC}" + [[ -n ${ONACTIVESEC} ]] & ONACTIVESEC+="${AUTOUPDATE_INTERVAL_SEC}" + + cat <<-EOF > "${PATH_AUTOUPDATE_SERVICE}" +[Unit] +Description=Automatic Update UBLinux +After=network-online.target + +[Service] +Type=simple +SyslogIdentifier=autoupdate +ExecStart=${FILE_LIVE_AUTOUPDATE} +TimeoutStopSec=300 +KillMode=process +KillSignal=SIGINT + +[Install] +WantedBy=multi-user.target +EOF + cat <<-EOF > "${PATH_AUTOUPDATE_TIMER}" +[Unit] +Description=Automatic Update UBLinux + +[Timer] +${ONBOOTSEC} +${ONACTIVESEC} +${ONUNITACTIVESEC} +Unit=${AUTOUPDATE_SERVICE} + +[Install] +WantedBy=multi-user.target +EOF + systemctl --quiet daemon-reload + systemctl --quiet restart ${AUTOUPDATE_TIMER} + } + disable_autoupdate(){ + systemctl --quiet disable ${AUTOUPDATE_TIMER} ${AUTOUPDATE_SERVICE} 2>/dev/null + systemctl --quiet stop ${AUTOUPDATE_TIMER} ${AUTOUPDATE_SERVICE} 2>/dev/null + rm -f "${PATH_AUTOUPDATE_SERVICE}" "${PATH_AUTOUPDATE_TIMER}" + systemctl --quiet daemon-reload + } + [[ $1 == @("set="|"set+="|"set++="|"set-="|"set--="|"remove") ]] && COMMAND=$1 && shift + [[ -n ${COMMAND} ]] || COMMAND="set=" + local PARAM="$@" + if [[ -n ${PARAM} ]]; then + AUTOUPDATE_NAME=${PARAM%%=*} + AUTOUPDATE_VAR=${PARAM#*=} + fi + FILE_LIVE_AUTOUPDATE="/usr/lib/ublinux/rc.local.d/43-repository live_autoupdate" + AUTOUPDATE_SERVICE="ubconfig-autoupdate.service" + PATH_AUTOUPDATE_SERVICE="/usr/lib/systemd/system/${AUTOUPDATE_SERVICE}" + AUTOUPDATE_TIMER="ubconfig-autoupdate.timer" + PATH_AUTOUPDATE_TIMER="/usr/lib/systemd/system/${AUTOUPDATE_TIMER}" + if [[ ${COMMAND} == @("set="|"set+="|"set++=") ]]; then + if [[ ${AUTOUPDATE[0]} == @("enable"|"yes") ]]; then + enable_autoupdate + elif [[ ${AUTOUPDATE[0]} == @("disable"|"no") ]]; then + disable_autoupdate + fi + elif [[ ${COMMAND} == @("set-="|"set--="|"remove") ]]; then + if [[ ${AUTOUPDATE[0]} == @("enable"|"yes") ]]; then + enable_autoupdate + elif [[ ${AUTOUPDATE_NAME} == "AUTOUPDATE" ]]; then + disable_autoupdate + fi + fi +} + +# Обновление системы, выполняемое сервисом "ubconfig-autoupdate.service" по таймеру "ubconfig-autoupdate.timer" +live_autoupdate(){ + autoupdate_only_modules(){ + # Обновить систему только из репозитория [modules] + # Соханить параметры до обновления + SAVE_REPOSITORY=$(ubconfig --nocolor --source system get [update] REPOSITORY) + SAVE_REPOSITORY_ARRAY=$(ubconfig --nocolor --source system get [update] REPOSITORY[*]) + REPOSITORY_MODULES=$(ubconfig --nocolor --source system get [update] REPOSITORY[modules]) + [[ ${REPOSITORY_MODULES} == @(""|"(null)") ]] && REPOSITORY_MODULES="REPOSITORY[modules]=/etc/pacman.d/mirrorlist" + ubconfig --quiet --nocolor --target system set [update] REPOSITORY=disable + ubconfig --quiet --nocolor --target system remove [update] "REPOSITORY[*]" + ubconfig --quiet --nocolor --target system set [update] ${REPOSITORY_MODULES} + ubconfig --quiet --nocolor --target system set [update] REPOSITORY=only + /usr/bin/nice -n 19 /usr/bin/pacman -Syuwq --noconfirm + /usr/bin/nice -n 19 /usr/bin/pacman -Suu --noconfirm + ubconfig --quiet --nocolor --target system set [update] REPOSITORY=disable + ubconfig --quiet --nocolor --target system remove [update] "REPOSITORY[*]" + # Восстановить параметры после обновления + [[ ${SAVE_REPOSITORY} == @(""|"(null)") ]] || ubconfig --quiet --nocolor --target system set [update] ${SAVE_REPOSITORY} + [[ ${SAVE_REPOSITORY_ARRAY} == @(""|"(null)") ]] || ubconfig --quiet --nocolor --target system set [update] ${SAVE_REPOSITORY_ARRAY} + } + if [[ ${AUTOUPDATE[0]} == @("enable"|"yes") ]]; then + FILE_LOG_AUTOUPDATE="/var/log/ubconfig_autoupdate.log" + exec &> >(tee -a "${FILE_LOG_AUTOUPDATE}") + echo + date + if [[ ${AUTOUPDATE[mode]} == "modsys" ]]; then + # Обновить систему из репозитория [modules] + autoupdate_only_modules + # Обновить систему из всех подключеных репозиториев + /usr/bin/nice -n 19 /usr/bin/pacman -Syuwq --noconfirm + /usr/bin/nice -n 19 /usr/bin/pacman -Suu --noconfirm + elif [[ ${AUTOUPDATE[mode]} == "modules" ]]; then + # Обновить систему из репозитория [modules] + autoupdate_only_modules + elif [[ ${AUTOUPDATE[mode]} == "system" ]]; then + # Обновить систему из всех подключеных репозиториев + /usr/bin/nice -n 19 /usr/bin/pacman -Syuwq --noconfirm + /usr/bin/nice -n 19 /usr/bin/pacman -Suu --noconfirm + fi + UPDATE_TIMESTAMP=$(date +'%Y-%m-%d %H:%M') + ubconfig --quiet --nocolor set [update] AUTOUPDATE[timestamp]="${UPDATE_TIMESTAMP}" + #notify_send "Update ${UPDATE_TIMESTAMP}" -i dialog-warning + #notify-send --action 'STOPUPDATE=Остановить обновление' test + fi } ## Удалить старые версии дубликато пакетов в базе pacman diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index d04c511..3cc5ab0 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -9,7 +9,7 @@ # UBLinux настройка системы ################################################################################ -# How it works. +# How it works # Краткое описание как работает этот файл конфигурации # [/path/filename]755 # select file for changing. if its not exists it will be created with 755 permisions # [/path/filename]a+x # выбор файла для изменений, если файла нет, он будет создан с правами по умолчанию плюс chmod a+x @@ -17,16 +17,20 @@ # # [/bin/bash/] запустит с башем # # [.] выполнить как часть init # # [chroot . ] сделать чрут в sysroot и выполнить там -# Parameter=value # it will change string Parameter=* in file to Parameter=value. If there is no parameter the string will be added to end of file. -# Параметр=значение # меняет параметр в файле на нужное значение. Если параметра нет, строка будет добавлена в конец файла. -# +string # add string to end of file in case it's not already in file. -# +строка # добавит строку в файл, если она ещё не прописана в нём. -# |string # add string to end of file in any case. -# |строка # добавит строку в файл без проверки. -# -expression # remove all string with expression (see info sed). symbols .* matches all strings in file. -# -выражение # удаляет строки соответствующие выражению (см info sed). Если указать .* то будут удалены все строки. +# Parameter=value # it will change string Parameter=* in file to Parameter=value. If there is no parameter the string will be added to end of file +# Параметр=значение # меняет параметр в файле на нужное значение. Если параметра нет, строка будет добавлена в конец файла +# +string # add string to end of file in case it's not already in file +# +строка # добавит строку в файл, если она ещё не прописана в нём +# |string # add string to end of file in any case +# |строка # добавит строку в файл без проверки +# -expression # remove all string with expression (see info sed). symbols .* matches all strings in file +# -выражение # удаляет строки соответствующие выражению (см info sed). Если указать .* то будут удалены все строки ################################################################################ - +# Примеры: +# ubconfig set [/etc/pacman.d/ub-mirrorlist] '|SERVER=http://repo.ublinux.ru/2405/$repo/$arch' '|SERVER=https://repo.ublinux.ru/2405/$repo/$arch' +# +# +# ################################################################################ # Поддерживаемые параметры Grub # services_enable=item_1,item_2,...,item_n # Перечень сервисов/юнитов которые должны быть запущены, разделитель (,) или (;). Пример: services_enable=sbm,nmb,cockpit.socket @@ -312,11 +316,12 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups ## Настройка репозиториев и обновления системы ################################################################################ ## Настройка подключения репозиториев -## REPOSITORY=disable|enable +## REPOSITORY=disable|enable|only ## *disable # Отключить управление списком репозиториев, по умолчанию ## # Используются репозитории из пакета pacman, по умолчанию: core,extra,community,multilib,modules ## enable # Включить управление списком репозиториев ## # Используются системные репозитории core,extra,community,multilib,modules и указанные в параметре REPOSITORY[*] +## # Если не указаны дополнитеьные репозитории в параметре REPOSITORY[*] и включен любой режим песочницы, то активен только репозиторий 'modules' ## only # Включить управление списком репозиториев ## # Используются только репозитории указанные в параметре REPOSITORY[*] ## Порядок указания репозиториев важен @@ -356,23 +361,25 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups ## Install # Включать установку пакетов из этого репозитория во время операции --sync ## Upgrade # Позволить этому репозиторию быть действительным источником пакетов при выполнении --sysupgrade ## disable # Временно отключить управление репозиторием, либо после = указать - пример: REPOSITORY[modules]=-/etc/pacman.d/mirrorlist +## Если требуется создать файл зеркала в пакетном режиме, то пример: ubconfig set [/etc/pacman.d/ub-mirrorlist] "|SERVER=http://repo.ublinux.ru/2405/\$repo/\$arch" "|SERVER=https://repo.ublinux.ru/2405/\$repo/\$arch" +## ## REPOSITORY[core]=/etc/pacman.d/mirrorlist;;;disable ## REPOSITORY[modules]="https://repo.ublinux.ru/2405/\$repo/\$arch" ## REPOSITORY[modules]='https://repo.ublinux.ru/2405/$repo/$arch' ## REPOSITORY[mymodules]=http://192.168.0.1:8080/repo/2204;;;disable -## REPOSITORY[webmyrepo]=http://myweb.org/myrepo;never -## REPOSITORY[localmyrepo]=file:///home/myrepo;never;All +## REPOSITORY[webmyrepo]=http://myweb.org/myrepo;Never +## REPOSITORY[localmyrepo]=file:///home/myrepo;Never;All ## REPOSITORY[myrepo]=/home/myrepo/mirrorlist ## Опубликовать локальный репозиторий в локальной сети и подключиться к сети распределённых репозиториев -## При установке пакета пакет ищется в распределённой сети репозиториев и устанавливается самой последней доступной версией +## При установке, пакет ищется в распределённой сети репозиториев и устанавливается самой последней доступной версией ## REPOPUBLIC_NET=disable|no|none|enable|yes,db,,..., ## disable|no|none # Отключить все репозитории от сети распределённых репозиториев -## enable|yes # Подключить все репозитории к сети распределённых репозиториев +## enable|yes # Подключить репозитории к сети распределённых репозиториев. Если не указаны конкретные имена, то будут подключены все ## db # Получать БД пакетов pacman от сети распределённых репозиториев -## # Подключенное имя репозитория, например: core,extra,community,multilib,modules +## # Подключить только выбранные имена репозиториев, например: core,extra,community,multilib,modules ## REPOPUBLIC_NET=enable,db -## REPOPUBLIC_NET=db,community,modules +## REPOPUBLIC_NET=enable,db,community,modules ## Опубликовать хранилище или репозиторий в виде локального WEB ресурса ## Если необходимо опубликовать выборочные репозитории, то создать новый каталог хранилища в который переместить симлинки выбранных репозиториев. Опубликовать новый каталог хранилища. @@ -382,7 +389,7 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups ## enable|yes # Включить публикацию ## disable|no|none # Выключить публикацию ## listing # Включить WEB обозреватель файлов. Не обязятельный -## # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный +## # Порт по которому доступен репозиторий. По умолчанию: 80. Не обязательный ## # Параметры авторизации, имя пользователя. Не обязательный ## # Параметры авторизации, открытый пароль или тип хеша. Не обязательный ## # Не зашифрованный пароль @@ -395,45 +402,55 @@ SERVICES_ENABLE=dbus-broker,NetworkManager,sshd,swapspace,systemd-timesyncd,cups ## REPOPUBLIC_WEB[/home/storage:repo-1,repo-2]=enable:listing::ublinux:sha512:123 ## REPOPUBLIC_WEB[/home/storage:repo-1,repo-2]=enable:listing::ublinux:sha256:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3 -## Опубликовать ленивое зеркало подключенных репозиториев в виде локального WEB ресурса +## Опубликовать ленивое зеркало подключенных репозиториев в виде локального WEB ресурса. ## Получая запрос от пользователя, загружает с удалённого репозитория пакет и сохраняет в кеше передавая его пользователю. -## REPOPUBLIC_CACHE[]=enable|disable::@,...,@ -## # Путь до каталога файлов кеша, если не указан, то по умолчанию: /mnt/livedata/ublinux-data/repopublic_cache -## enable # Включить публикацию -## disable # Выключить публикацию -## # Порт по которому доступен репозиторий. По умолчанию: 8080. Не обязательный -## -## # Произвольное имя репозитория -## # Полный адрес репозитория URL или файл -## # Если не указано @, то по умолчанию системные /etc/pacman.d/mirrorlist -## # Возможно указать несколько, через запятую. -## # Файл списка зеркал, подключается как список зеркал с синтаксисом /etc/pacman.d/mirrorlist -## # Важно: в подключенном списке не должно быть адреса текущего сервера -## http:// # URL префикс для репозитория на HTTP -## https:// # URL префикс для репозитория на HTTPS -## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable -## REPOPUBLIC_CACHE[/mnt/livedata/ublinux-data/repopublic_cache]=enable:80:myrepo@http://192.168.0.1:8080/repo/2204 +## REPOPUBLIC_CACHE=enable|yes|disable|no|none +## enable|yes # Включить ленивое зеркало +## disable|no|none # Выключить ленивое зеркало +## +## Если задано только "REPOPUBLIC_CACHE=enable" без указания рпозиториев пользователем, то создаётся зеркало по умолчанию, где "2204" версия текущего дистрибутива: +## : REPOPUBLIC_CACHE[ublinux_2405]=url@http://repo.ublinux.ru/2405,url@https://repo.ublinux.ru/2405 +## На клиенте необходимо указать: +## либо в файле "/etc/pacman.conf" у каждого репозитория: Server=http://ipadress:8080/repo/ublinux_2204/$repo/$arch +## либо в файле "/etc/pacman.d/mirrorlist" для всех репозиториев: Server=http://ipadress:8080/repo/ublinux_2204/$repo/$arch +## либо параметры в конфигурации REPOSITORY[core]='http://ipadress:8080/repo/ublinux_2204/$repo/$arch' +## +## REPOPUBLIC_CACHE[]=@ +## # Имя репозитория, для подключения клиентов +## : # Тип подключаемого репозитория +## url # Вэб ссылка на репозиторий +## http_proxy # Прокси-сервер, может быть включен для каждого репозитория, затеняя глобальный 'http_proxy' +## mirrorlist # Файл зеркал. Будьте осторожны! Убедитесь, что URL текущего сервера НЕ включен в этот файл! +## # Ресурс, можно указать несколько черз зпятую (,) +## REPOPUBLIC_CACHE[ublinux_2405]="url@http://repo.ublinux.ru/2405,url@https://repo.ublinux.ru/2405" +## REPOPUBLIC_CACHE[myrepo_x86_64]="url@http://my.repo.ru/myrepo/x86_64" +## REPOPUBLIC_CACHE[newrepo]="http_proxy@http://proxy.localnet.ru:8080,url@http://192.168.1.1/newrepo/x86_64" +## REPOPUBLIC_CACHE[ublinux-reflector]="mirrorlist@/etc/pacman.d/reflector_mirrorlist" ## Настройка автообновления системы -## AUTOUPDATE=enable | :: -## enable # Включает автообновление с параметрами modsys:boot:core,extra,community,multilib,modules -## # Режимы обновления -## *modsys # Вначале обновлять все модули и после систему -## module # Обновлять только модули -## system # Обновлять всё в порядке указанных репозиториев -## # Интервал обновления +## AUTOUPDATE=enable +## enable # Включает автообновление. Параметрами по умолчанию: modsys boot core,extra,community,multilib,modules +## Настройка режимов обновления +## AUTOUPDATE[mode]=*modsys|modules|system +## *modsys # Вначале обновлять все модули и после систему. Очищает параметр [update] REPOSITORY= +## modules # Обновлять только модули. Очищает параметр [update] REPOSITORY= +## system # Обновлять всё в порядке указанных репозиториев +## Настройка интервала обновления +## AUTOUPDATE[interval]=*boot,30min|12h|*7d|1M ## *boot # Каждую загрузку -## 12h # Каждые 12 часов -## 7d # Каждые 7 дней -## 1m # Один раз в месяц -## # Имена репозиториев с которых будет происходить обновление. Репозитории из списка по умолчанию или параметра REPOSITORY -## # Если не указано, то по умолчанию: core,extra,community,multilib,modules +## 30min # Каждые 30 минут, возможно указать любую цифру +## 12h # Каждые 12 часов, возможно указать любую цифру +## *7d # Каждые 7 дней, возможно указать любую цифру +## 1M # Один раз в месяц, возможно указать любую цифру +## Настройка репозиториев обновления +## AUTOUPDATE[repos]= +## # Имена репозиториев с которых будет происходить обновление. Если не указано, то по умолчанию системные ## AUTOUPDATE=enable ## ## Врямя проведения последнего обновления -## AUTOUPDATE_TIMESTAMP= -## # Дата и время, в формате: DD/MM/YYYY HH:MM -## AUTOUPDATE_TIMESTAMP="31/12/2023 12:00" +## AUTOUPDATE[timestamp]= +## # Дата и время, в формате: DD-MM-YYYY HH:MM +## AUTOUPDATE[timestamp]="31-12-2023 12:00" [/etc/ublinux/mount] ## Настройка подключения сетевых ресурсов