Нет такого файла или каталога при установке пакета .deb

У меня действительно странное поведение с пакетом .deb.

Когда я пытаюсь установить с помощью dpkg -i package.deb, я получаю эту ошибку:

iPadAir:/tmp root# dpkg -i packagename.deb
(Reading database ... 4239 files and directories currently installed.)
Preparing to replace packagename 0.0.0-0 (using packagename.deb) ...
Unpacking replacement packagename ...
dpkg: error processing packagename.deb (--install):
unable to create `PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite': No such file or directory
dpkg-deb: subprocess paste killed by signal (Broken pipe: 13)
Errors were encountered while processing:
 packagename.deb

Но файл .deb содержит другой путь! Правильный путь — /Library/Application Support/PACKAGENAME:

iPadAir:/tmp root# dpkg-deb -c packagename.deb
drwxr-xr-x dok/staff         0 2014-11-20 12:46 ./
drwxr-xr-x dok/staff         0 2014-11-20 12:46 ./Library/
drwxr-xr-x dok/staff         0 2014-11-20 12:46 ./Library/Application Support/
drwxr-xr-x dok/staff         0 2014-11-20 12:46 ./Library/Application Support/PACKAGENAME/
drwxr-xr-x dok/staff         0 2014-11-20 12:46 ./Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/
-rw-r--r-- dok/staff    184320 2014-11-20 12:46 ./Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite

Используя отладку (1100, потому что мне нужен только вывод файловой системы), я получил еще более странную ситуацию:

iPadAir:/tmp root# dpkg -D1110 -i packagename.deb
D000010: ensure_pathname_nonexisting `/var/lib/dpkg/tmp.ci'
(Reading database ... 4239 files and directories currently installed.)
[....]
[All directories are correctly processed and created...]
[....]
D000010: tarobject ti->Name=`./Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist' Mode=644 owner=501.20 Type=48(-) ti->LinkName=`' namenode=`/Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist' flags=2 instead=`<none>'
D000100: setupvnamevbs main=`/Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist' tmp=`/Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist.dpkg-tmp' new=`/Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist.dpkg-new'
D000100: tarobject nonexistent
D000010: ensure_pathname_nonexisting `/Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist.dpkg-new'
D000010: ensure_pathname_nonexisting `/Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist.dpkg-tmp'
D000100: tarobject NormalFile[01] open size=479
D000100: tarobject new - no backup
D000100: tarobject done and installed
D000010: tarobject ti->Name=`PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite' Mode=644 owner=501.20 Type=48(-) ti->LinkName=`' namenode=`/PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite' flags=2 instead=`<none>'
D000100: setupvnamevbs main=`/PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite' tmp=`/PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite.dpkg-tmp' new=`/PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite.dpkg-new'
D000100: tarobject nonexistent
D000010: ensure_pathname_nonexisting `/PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite.dpkg-new'
D000010: ensure_pathname_nonexisting `/PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite.dpkg-tmp'
dpkg: error processing packagename.deb (--install):
 unable to create `PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite': No such file or directory
D000010: cu_installnew `/PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite' flags=2
D000100: setupvnamevbs main=`//PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite' tmp=`//PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite.dpkg-tmp' new=`//PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite.dpkg-new'
D000100: cu_installnew not restoring
D000100: unlinkorrmdir `//PACKAGENAME/AviarySDKResources.bundle/AviaryContentPackCompiledDatabase.sqlite.dpkg-new' rmdir No such file or directory
D000010: cu_installnew `/Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist' flags=52
D000100: setupvnamevbs main=`//Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist' tmp=`//Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist.dpkg-tmp' new=`//Library/Application Support/PACKAGENAME/AviarySDKResources.bundle/AviaryColorPalatte.plist.dpkg-new'

Как вы видите, dpkg пытается создать каталог PACKAGENAME в «корневом» каталоге вместо «/Library/Application Support». Я попытался пересобрать свой пакет debian, но ничего не изменилось (и да, у пакета debian правильный путь в tar-архиве).

Кто-нибудь может мне помочь ?

спасибо много

PS: даже если вы видите iPadAir, я пробовал те же команды dpkg на коробке Ubuntu. Та же ошибка :(


person DoK    schedule 20.11.2014    source источник


Ответы (2)


После нескольких недель исследований я наконец обнаружил, что использую ошибочную версию dpkg-deb (1.13.25). После обновления до последней (на данный момент 1.14.25) все ошибки исчезли!

person DoK    schedule 30.01.2015

Если кто-то остановится, потому что столкнулся с той же проблемой:

dpkg-deb: error: unable to create temporary directory: No such file or directory

Это может быть связано с тем, что папка /tmp недоступна должным образом. Он был случайно удален на сервере, поэтому dpkg-deb негде было хранить временные файлы.

Так что просто восстановите его:

mkdir /tmp
chmod 1777 /tmp
person thomasstephn    schedule 03.04.2018