Как мне узнать размер (deb) файла по ссылке / URL для загрузки?

[113293] Для преобразования раздела в ВМ можно использовать [113756] VMware Converter[113757]. После этого вам все равно нужно будет удалить раздел Кали и расширить раздел Windows. Если Windows не видит раздел Windows, попробуйте QTParted с Knoppix LiveCD. Когда раздел будет удален, вы сможете расширить раздел Windows. Я делал это несколько раз, и я не думаю, что расширение раздела Windows связано с большими рисками. Если вы хотите быть действительно уверены, сначала сделайте резервную копию[113296].
1
23.06.2015, 17:06
2 ответа

Типичный способ получить размер файла без его загрузки - это отправить запрос HTTP HEAD и надеяться, что сервер отправит размер обратно в заголовке Content-Length . Для статических файлов, таких как файлы deb , серверы обычно отправляют эту информацию обратно, хотя нет никакой гарантии.

Существуют различные инструменты, которые могут отправлять эти HTTP-запросы HEAD.Вот пример функции, которая делает это с помощью утилиты curl :

get_size() { # arg: URI
  curl -sI "$1" | sed -n 's/^Content-Length: \([0-9]\{1,\}\).*/\1/p'
}

Обратите внимание, что она вернет Content-Length независимо от того, был ли запрос выполнен успешно или с ошибкой. (например, 404 Not found , где Content-Length будет размером сообщения об ошибке).

Альтернативы curl включают:

  • GNU wget : wget -qSO- --max-redirect = 0 --method = HEAD "$ 1" . Он вернется со статусом «Неуспешный выход», если запрос не будет успешным (например, для использования в сочетании с set -o pipefail ).
  • Perl LWP HEAD команда: HEAD "$ 1" . Этот также будет сообщать об ошибках запроса, но следует перенаправлениям HTTP, и, похоже, вы не можете это отключить.

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

$ lftp -c 'du -h http://mirror.fsf.org/trisquel/pool/main/s/sdl-net1.2/libsdl-net1.2_1.2.8-4_i386.deb'
12K     /trisquel/pool/main/s/sdl-net1.2/libsdl-net1.2_1.2.8-4_i386.deb
4
27.01.2020, 23:20

В производных Debian размер каждого файла .deb хранится в списке пакетов, поэтому вы можете получить его, не загружая вообще ничего.

Фактически apt-get --print-uris дает вам информацию напрямую:

$ apt-get install nginx --print-uris -qq
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
'http://ftp.fr.debian.org/debian/pool/main/n/nginx/nginx-common_1.9.1-1_all.deb' nginx-common_1.9.1-1_all.deb 96110 MD5Sum:fc64530dcd5a4d50a36b9f2423fcf6c2
'http://ftp.fr.debian.org/debian/pool/main/n/nginx/nginx-full_1.9.1-1_amd64.deb' nginx-full_1.9.1-1_amd64.deb 471998 MD5Sum:6392f45e4e376ea3be2e60949dd80fe0
'http://ftp.fr.debian.org/debian/pool/main/n/nginx/nginx_1.9.1-1_all.deb' nginx_1.9.1-1_all.deb 75882 MD5Sum:ab5fa732657fba06544b353572967383

Третье поле - это размер файла .deb .

Пока я занимаюсь этим, вам не нужно запускать apt-get от имени root , чтобы определить список пакетов для загрузки!

0
27.01.2020, 23:20

Теги

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