Почему моя рука создает Deb Package сбое при установке с «невозможно создавать» в файлах?

StackOverflow https://stackoverflow.com/questions/4564434

  •  14-10-2019
  •  | 
  •  

Вопрос

Я сделал сценарий Perl, который создает бинарный пакет Deb с нуля. Я создал данные, управление и т. Д. Но когда я запускаю dpkg -i в своем пакете Deb, он жалуется, что он не может файлов из данных. Пример: невозможно создать «.dpkg-new» (при обработке ''): нет такого файла или каталога.

Я загрузил несколько пакетов.

Я думаю, что делаю что -то не так, я думаю, что необходимо создать свои собственные каталоги в Preinst, но это кажется не правильным ... возможно, я что -то упускаю?

Должен ли я создавать каталоги, в которых мои файлы из данных будут скопированы в Preinst SH, или DPKG должен сделать это, и я делаю что -то не так?

Это было полезно?

Решение

Вы не должны пытаться вручную создавать двоичный пакет .deb вручную. А Debian New Savingerding 'Guide Охватывает, как начать создание пакета Debian, используя правильные инструменты.

Ваш пакет, созданный рукой, может выглядеть правильно для вас, но поскольку он не устанавливает его, очевидно, ошибочна либо незначительным способом, который вы не заметили, либо более серьезным способом, который вам не виден (например, большинство людей не понимают А .deb на самом деле архив AR).

Другие советы

У меня была та же проблема в сценарии рубин, который я написал.

Я генерировал список файлов для передачи в TAR при создании архива data.tar.gz. Когда я разворачивался и не разжигал архив вручную, он сдувается нормально, но DPKG потерпит неудачу.

Оказывается, что список файлов также должен также включать каждый каталог для создания.

Обратите внимание, что когда я создал data.tar.gz, я построил его почти с теми же параметрами, что и DPKG-deb/build.c в источнике DPKG-1.15.8.11.

execlp(TAR, "tar", "-cf", "-", "--format=gnu", "--null", "-T", "-", "--no-recursion", NULL);

Вместо этого я использовал

IO.popen("gnutar -czf - --format=gnu -T - --no-recursion", "r+")

В дополнение к тому, что сказал @arrowmaster, проверьте http://www.debian.org/doc/debian-policy/ Для некоторого подробного объяснения файлов. После того, как вы построите саму посылку, вы можете проверить его с помощью lintian Инструмент, чтобы увидеть, есть ли что -то очевидное, что вы, возможно, пропустили.

Если кто -то ищет решение проблемы:
«Создайте пакет Deb из файла спецификации RPM».
Смотри сюда http://www.deepnet.cx/debbuild/

Я сделал свой собственный скрипт Perl Build намного простым, чем упомянутый, чтобы я мог легко поддерживать его.

Некоторые полезные знания, полученные в процессе:
0. Деб является архивом AR, который содержит 3 файла, порядок файлов важен.
1. Сценарии от control.tar.gz должны быть выполнены.
2. Хорошо иметь предварительный сценарий для создания каталогов, если Dirs не существует.
3. Иногда DPKG решает расслабиться на разарки ваших ZIP (это произошло, если ZIP был единственным файлом в data.tar.gz), поэтому проверьте это в сценарии Postinstall.
4. Когда вы смотрим.

Есть много причин для этого. Вам действительно нужно запустить:

dpkg -i -D1110 mydeb.deb

И опубликуйте результат, чтобы иметь какую -либо надежду на то, что кто -то сможет решить проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top