#!/bin/sh set -e if [ $# -lt 2 ]; then echo "Usage: $0 [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"