2026-04-25 02:26:46 +05:00

47 lines
1.3 KiB
Bash

#!/bin/sh
set -e
if [ $# -lt 2 ]; then
echo "Usage: $0 <repo_path> <pkg1> [pkg2 ...]"
echo "Example: $0 /usr/local/my_repo brotli expat freetype2"
exit 1
fi
REPO_PATH="$1"
shift
# Создаём структуру каталогов репозитория
mkdir -p "${REPO_PATH}/All"
mkdir -p "${REPO_PATH}/Latest"
# Скачиваем пакеты и зависимости, но не устанавливаем
echo "Fetching packages..."
pkg fetch -y -o "${REPO_PATH}/All" "$@"
# Создаём симлинки в Latest для всех скачанных пакетов
for pkg_file in "${REPO_PATH}/All/"*.pkg; do
[ -e "$pkg_file" ] || continue
pkg_name=$(basename "$pkg_file")
ln -sf "../All/${pkg_name}" "${REPO_PATH}/Latest/${pkg_name}"
done
# Создаём файл метаданных репозитория
echo "Creating repository metadata..."
pkg repo "${REPO_PATH}"
# Настраиваем локальный репозиторий
REPO_CONF="/usr/local/etc/pkg/repos/local.conf"
mkdir -p "$(dirname "${REPO_CONF}")"
cat > "${REPO_CONF}" << EOF
local: {
url: file://${REPO_PATH},
enabled: yes
}
EOF
echo "Done! Local repository created at: ${REPO_PATH}"
echo "Repository config written to: ${REPO_CONF}"
echo ""
echo "To use the repository, run: pkg update -f"