Эксперимент с командой pkg fetch (версия pkg 1.10.5):
Код:
pkg fetch -r FreeBSD -o . mc
В подкаталог All текущего каталога загружается файл mc-4.8.22_1.txz
1. Изменяю содержимое загруженного файла (например, заменив какой-либо символ в файле). Размер файла и имя остаются прежними, но архив .txz уже поврежден.
Код:
pkg fetch -r FreeBSD -U -o . mc
Number of packages to be fetched: 1
No packages are required to be fetched.
Check the integrity of packages downloaded? [y/N]: y
Integrity check was successful.
Загрузки не происходит. Файл остается поврежденным.
2. Уменьшаю размер загруженного файла (например, удалив в файле какой-либо символ). Имя файла остается прежним, размер уменьшен, архив .txz оказывается поврежденным.
Код:
pkg fetch -r FreeBSD -U -o . mc
The following packages will be fetched:
New packages to be FETCHED:
mc-4.8.22_1 (2 MiB: 100.00% of the 2 MiB to download)
Number of packages to be fetched: 1
2 MiB to be downloaded.
Proceed with fetching packages? [y/N]: y
Fetching mc-4.8.22_1.txz: 100% 2 MiB 1.8MB/s 00:01
pkg: mc-4.8.22_1 failed checksum from repository
Поврежденный файл удаляется. Если загружался не только файл mc, то дальнейшей загрузки не происходит так как работа pkg прерывается.
3. Увеличиваю размер загруженного файла (например, добавив в файл какой-либо символ). Имя файла остается прежним, размер увеличен, архив .txz оказывается поврежденным.
Код:
pkg fetch -r FreeBSD -U -o . mc
The following packages will be fetched:
New packages to be FETCHED:
mc-4.8.22_1 (2 MiB: 100.00% of the 2 MiB to download)
Number of packages to be fetched: 1
2 MiB to be downloaded.
Proceed with fetching packages? [y/N]: y
pkg: cached package mc-4.8.22_1: size mismatch, fetching from remote
Fetching mc-4.8.22_1.txz: 100% 2 MiB 873.3kB/s 00:02
Файл загружается, исправляя поврежденный файл. Если загружался не только файл mc, то загрузка продолжается.
Таким образом, pkg fetch хорошо загружает файлы в пустой каталог, но работает «странно», если файлы с такими именами уже есть. Получается, что для обновления существующего локального репозитория, команда pkg fetch в чистом виде не подходит.