Опираясь на ответ Луки и комментарии...
На момент написания этой статьи repotrack
будет соответствовать всем следующим архитектурам, если указано x86_64
:x86_64
, athlon
, i686
, i586
, i486
, i386
и noarch
. ].
Для моих целей меня интересуют только пакеты x86_64
и noarch
, и я знаю, что в моем дистрибутиве нет пакетов athlon
.
Следующая команда получает список URL-адресов пакетов, отфильтровывает i?86
архитектуры и распечатывает имена пакетов по мере их загрузки:
repotrack --arch=x86_64 --urls gs1000-server \
| sed '/\.i[3-6]86\.rpm$/d' \
| xargs -I {} sh -c 'curl -s -O {}; echo {} | rev | cut -d '/' -f 1 | rev'
Обратите внимание, что repotrack
не предупреждает вас, если не может найти пакет, который удовлетворяет зависимости в ваших включенных репозиториях. Он молча пропускает его.
Это невозможно сделать так, как вы описываете. Размер сектора — это свойство блочного устройства, которого файлы по своей сути не имеют. Файл — это просто последовательность определенного количества байтов, то, как они хранятся, — это деталь реализации...
Итак, если вам нужен определенный размер сектора, вам нужно блочное устройство. И Linux предлагает петлевые устройства только для этой цели, поэтому используйте losetup
для создания виртуального блочного устройства с файлом -с определенным размером сектора.
Тестовый файл:
# dd if=/dev/zero of=empty4k.img bs=4096 count=8192
Обычное петлевое устройство:
# losetup --find --show empty4k.img
/dev/loop0
# fdisk -l /dev/loop0
Disk /dev/loop0: 32 MiB, 33554432 bytes, 65536 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
4096 -Устройство петли байтовых секторов:
# losetup --find --show --sector-size=4096 empty4k.img
/dev/loop1
# fdisk -l /dev/loop1
Disk /dev/loop1: 32 MiB, 33554432 bytes, 8192 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
В обоих случаях файл полностью идентичен, свойство размера сектора обеспечивается уровнем устройства блочного цикла.
Значение bs
, заданное для dd
, просто указывает, насколько большим должен быть буфер при создании файла. В итоге файл состоит только из нуля -байт, информации о выравнивании нет.
Вы должны использовать специальный параметр для fdisk
, то есть -b
, в соответствии со страницейman
-fdisk(8)
:
-b, --sector-size sectorsize
Specify the sector size of the disk. Valid values are 512, 1024, 2048, and 4096. (Recent kernels know the sector size. Use this option only on old kernels or to override the kernel's
ideas.) Since util-linux-2.17, fdisk differentiates between logical and physical sector size. This option changes both sector sizes to sectorsize.
Размер блока до dd
просто просит его читать/записывать кусками этого размера. Раньше было уместно записывать на диск -куски размера сектора для повышения производительности, учитывая сегодняшний диск и гораздо более умную операционную систему, обрабатывающую ввод-вывод, это мало (, если вообще )разницы.