47 lines
1.3 KiB
Bash
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" |