20

Я делаю RPM, в котором все содержится в файле .spec (не спрашивайте :-). Для rpmbuild требуется файл "Source", поэтому я пытался создать пустой файл tar. Однако, если я не даю никаких имен файлов, tar жалуется:

tar: Cowardly refusing to create an empty archive
Try `tar --help' or `tar --usage' for more information.

Как мне создать действительно пустой файл tar?

4 ответа4

23

Вы можете заставить GNU и BSD tar создать пустой архив с:

tar -cf tarfilename.tar -T /dev/null
5

BSD: tar cvf empty.tar --from-file /dev/null

GNU (Linux): tar cvf empty.tar --files-from /dev/null

Solaris: tar cvf empty.tar -I /dev/null

3

Мне удалось создать пустой архив, заархивировав один файл, а затем удалив его из архива.

tar cf empty.tar somefile                   # creates archive
tar --delete -f empty.tar somefile          # remove the file
tar tf empty.tar                            # list contents of archive

Это работает для меня.

1

Пустой tar-файл - это просто файл с 10240 NUL-байтами. Таким образом, чтобы создать пустой файл tar, вам даже не нужен tar но вместо этого вы можете использовать любой из них:

$ head --bytes=10240 /dev/zero > empty.tar
$ truncate --size=10240 empty.tar
$ fallocate --length=10240 empty.tar
$ dd if=/dev/zero bs=10240 count=1 iflag=fullblock > empty.tar
$ dd if=/dev/zero bs=1 count=10240 > empty.tar

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .