安装 .deb 包时“没有这样的文件或目录”

问题描述 投票:0回答:3

我对 .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 尝试在“根”目录而不是“/Library/Application Support”中创建目录 PACKAGENAME。 我尝试重建我的 debian 软件包,但没有任何变化(是的,debian 软件包在 tar 存档中具有正确的路径)。

有人可以帮助我吗?

Tnx很多

PS:即使你看到 iPadAir,我也在 ubuntu 盒子上尝试了相同的 dpkg 命令。同样的错误:(

linux theos dpkg
3个回答
1
投票

经过几周的研究,我终于发现我使用的是有缺陷的 dpkg-deb 版本(1.13.25)。更新到最新版本(目前为 1.14.25)后,所有错误都消失了!


0
投票

如果有人因为面临同样的问题而过来:


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

可能是因为

/tmp
文件夹无法正常访问。它在服务器上被意外删除,因此
dpkg-deb
没有地方存储临时文件。

所以只需恢复它:

mkdir /tmp
chmod 1777 /tmp

0
投票

我最近在 Gdebi 上遇到了同样的问题。但是,在我的下载文件夹中找到了 Gdebi 包。我可以右键单击并从那里安装软件包。我能够登录 ZM,打开浏览器,仅此而已。只有一个空白页面,没有控制台。我是从源代码安装的。但没有喜悦。会尝试另一种方式。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.