Как добраться, снимок загружают URL

Есть ли способ получить URL снимка для загрузки, вместо того, чтобы использовать snap download команда?, таким образом, это могло быть загружено wget/aria2c или другими программами?

1
задан 16 September 2018 в 10:53

3 ответа

Я нашел этот сайт https://uappexplorer.com/повторно добавляющий эту Загрузку вопроса только со снимком, как это говорит

Проводник uApp является неофициальным средством просмотра для снимков и Сенсорных приложений Ubuntu.

Необходимо будет, вероятно, установить его с --dangerous флаг, snap install --dangerous <snap>

Вот некоторые ссылки по теме:

1
ответ дан 7 December 2019 в 15:14

Получить информацию с,

curl -H 'Snap-Device-Series: 16' http://api.snapcraft.io/v2/snaps/info/anbox # | jq
# "anbox" is the name of the snap package. change it to what you want.

, которая может содержать несколько записей для каналов и архитектур. Один из них будет,

"download": {
        "deltas": [],
        "sha3-384": "b105626b35dbba5eb990125adf557c5a38bf1a793256f35ca89f3d33d81caa608084606f2d39569475f8d880088f79d2",
        "size": 391696384,
        "url": "https://api.snapcraft.io/api/v1/snaps/download/Nr9K6UJaIOD8wHpDEQl16nabFFt9LLEQ_185.snap"
      },

, и вы его поняли.

См. Также документацию по API для моментального хранилища ( https://api.snapcraft.io/docs/info.html ).

11
ответ дан 16 December 2019 в 02:56

Расширяя предыдущий ответ ...

Если это машина, на которой вы не устанавливали привязки раньше, вам сначала понадобится основная оснастка.

Для любого ПАКЕТА оснастки, который вы хотите установить, вам понадобится файл PACKAGE.assert, чтобы выполнять обновления и избегать использования параметра --dangerous install.

После того, как у вас есть PACKAGE.snap и PACKAGE.assert, вам нужно будет использовать команду snap, чтобы подтвердить PACKAGE.assert, а затем установить PACKAGE.snap.

snap ack PACKAGE.assert
snap install PACKAGE.snap

Вы можете использовать оснастку Педрониса assert-fetcher для получения файла PACKAGE.assert. Если вы загрузите это, используя пример фрагмента, как показано ниже, вам нужно будет изменить RELEASE со стабильной на бета-версию. Затем вы можете извлечь .snap, чтобы получить исполняемый файл assert-fetcher . Исполняемый файл скомпилирован для Ubuntu 16, но я обнаружил, что он работает и в Debian 10 (buster). Если этот исполняемый файл не работает в вашем дистрибутиве, исходный код доступен на панели запуска . Он будет в каталоге ~ / assert-fetcher / bin. unsquashfs -d ~ / assert-fetcher / assert-fetcher.snap Синтаксис использования следующий: ~ / assert-fetcher / bin / assert-fetcher PACKAGE.snap . Измените 3-ю строку фрагмента ниже, чтобы она указывала на исполняемый файл assert-fetcher.

Сценарий, который я написал ниже, snap-download.sh, загружает PACKAGE.json, PACKAGE.snap и PACKAGE.assert. Я написал этот удобный сценарий, чтобы возобновить неудачные загрузки из-за нестабильного сетевого подключения.Он будет извлекать и анализировать метаданные для ПАКЕТА, чтобы получить URL-адрес. Затем он загружает или возобновляет частичную загрузку PACKAGE.snap. После успешной загрузки PACKAGE.snap получит файл PACKAGE.assert. Он получит пакеты и данные для 64-битных стабильных выпусков. Если вы хотите чего-то другого, измените значения в первых двух строках.

Пример установки sublime-text на машине, на которой установлен snapd, но никогда не устанавливались никакие привязки

snap-download.sh assert-fetcher # Download assert-fetcher.snap and assert-fetcher.json. Getting the assert file will fail.
unsquashfs -d ~/assert-fetcher/ assert-fetcher.snap # Extract the assert-snapper snap to use the executable
~/assert-fetcher assert-fetcher # Download the assert file for assert-fetcher
snap ack assert-fetcher.assert # Register the assert file
snap install assert-fetcher.snap # Install the snap
rm -rf ~/assert-fetcher/ assert-fetcher.assert assert-fetcher.snap assert-fetcher.json # Don't need these files anymore, it is installed as a snap now

snap-download core # Downloads core.snap, core.json, and core.assert
snap ack core.assert
snap install core.snap
rm core.assert core.snap core.json

snap-download sublime-text
snap ack sublime-text.assert
snap install sublime-text.snap
rm sublime-text.assert sublime-text.snap sublime-text.json

snap-download.sh

#!/bin/bash
ARCH=amd64
RELEASE=stable
#export PATH="$PATH:/snap/bin/"
eval assert_fetcher_path="~/assert-fetcher/bin/assert-fetcher"

PACKAGE=$1

echo "Checking for jq..."
which jq
nojq=$?

if [ $nojq -gt 0 ]; then
    echo "This snippet requires jq to function. Please install jq and try again"
    exit 1
fi

if [ -z $PACKAGE ]; then
    echo "Enter name of snap package to manually download:"
    read PACKAGE
fi

meta_url="http://api.snapcraft.io/v2/snaps/info/${PACKAGE}"
echo "Fetching metadata from ${meta_url}..."

curl -H 'Snap-Device-Series: 16' -o ${PACKAGE}.json ${meta_url}
grep -v "error-list" ${PACKAGE}.json > /dev/null
curl_stat=$?

if [ $curl_stat -gt 0 ]; then
    echo "Problem fetching ${PACKAGE} metadata."
    echo "See file ${PACKAGE}.json for details."
    exit
fi

url=$( cat ${PACKAGE}.json | jq '."channel-map"' | jq '.[]' | jq '[."channel"."architecture", ."channel"."name", ."download"."url"]' | grep -A2 ${ARCH} | grep -A1 ${RELEASE} | grep http | tr -d ' ' | tr -d '"' )

echo "Downloading '$url'..."
curl -L -o "${PACKAGE}.snap" -C - "$url"
curl2_stat=$?

ls -lh ${PACKAGE}.snap

if [ $curl2_stat -gt 0 ]; then
    echo "Download failed. Re-run this snippet to attempt to resume download"
    exit 1
fi

echo "Downloaded ${PACKAGE}.snap successfully. Attempting to fetch ${PACKAGE}.assert now."

echo "Checking for assert-fetcher..."
which ${assert_fetcher_path}
noassert_fetcher=$?
if [ $noassert_fetcher -gt 0 ]; then
    echo "assert-fetcher executable not found at ${assert_fetcher_path}. Checking system path."

    SNAP_PATH=$( which assert-fetcher )
    noassert_fetcher2=$?

    if [ $noassert_fetcher2 -gt 0 ]; then
        echo "assert-fetcher not found in system path. You will need to run asset-fetcher manually or install your snap with --dangerous (not recomended)."
        exit 1
    fi
    assert_fetcher_path="$SNAP_PATH"
fi

${assert_fetcher_path} ${PACKAGE}.snap
assert_fetcher_stat=$?
if [ $assert_fetcher_stat -gt 0 ]; then
    echo "Failed to fetch ${PACKAGE}.assert."
    exit 1
fi

ls -lh ${PACKAGE}.*
echo "Snap and Assert file for ${PACKAGE} downloaded successfully."
exit 0
3
ответ дан 12 February 2020 в 21:10

Другие вопросы по тегам:

Похожие вопросы: