diff --git a/pack b/pack new file mode 100644 index 0000000..f304f0d --- /dev/null +++ b/pack @@ -0,0 +1,47 @@ +#!/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" \ No newline at end of file