无法在Windows上的Ubuntu中安装linux-libc-dev


4

我正在尝试使用Windows子系统Linux(ubuntu)中的apt-get安装linux-libc-dev,但是我收到一个错误,我似乎无法解决它:

dpkg: error processing archive /var/cache/apt/archives/linux-libc-dev_3.13.0-126.175_amd64.deb (--unpack):
 unable to install new version of `/usr/include/linux/netfilter/xt_DSCP.h': File exists
Errors were encountered while processing:
 /var/cache/apt/archives/linux-libc-dev_3.13.0-126.175_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

但是当我在/ usr / include /中列出文件时,linux目录甚至都不存在。

可能是什么导致了这个?当目录没有时,文件如何存在?

谢谢。


我碰到了同样的事情 - 你有没有找到解决方案?
Peter Tirrell

很不幸的是,不行。
彼得

Answers:


3

可能是安装在中途中止,让它破裂。

找到borked包:

dpkg --configure -a

这应该返回一个列表,如:

Errors were encountered while processing:
libc6-dev:amd64
libstdc++-4.8-dev:amd64
g++-4.8
g++

强制删除这些:

dpkg --remove libc6-dev
dpkg --remove g++
...

清除任何无效的已下载软件包的缓存,并清除额外的软件包:

apt-get clean
apt-get autoremove

apt-get install foo现在应该能够再次。

据我所知,apt一旦它进入这种状态就不够智能来解决这个问题,你必须回归到使用明确清除包dpkg --remove


0

我有同样的问题,发现它被触发只是因为,由于一些不幸和奇怪的原因,Ubuntu包中linux-libc-dev包含一些(标题)文件,其名称只有字母大小写,例如,/usr/include/linux/netfilter/xt_DSCP.h/usr/include/linuxnetfilter/xt_dscp.h

问题是由于WSL的一些愚蠢行为,即错误/不一致如何实现其区分大小写的文件系统。假设在某个目录中有一个文件,并且您希望在同一目录中创建另一个名称除了大小写相同的文件。除了另一个文件之外,这应该可以工作并创建第二个文件(或者可能覆盖现有文件)。然而,这失败了,更糟糕的是,产生了一个误导性错误:

touch a.txt touch A.txt 产量 touch: cannot touch 'A.txt': Input/output error

另一方面,可以用这种方式生成包含两种情况的文件: touch b.txt touch x.txt mv x.txt B.txt ls {b,B}.txt yield b.txt B.txt

以下是包含名称的包的解决方法linux-libc-dev_4.4.0-97.120_amd64.deb

cd any-temp-dir

apt-get download linux-libc-dev
ar x linux-libc-dev*deb
tar xJf data.tar.xz        # ignore all erors like ./usr/include/linux/netfilter/xt_DSCP.h: Cannot open: Input/output error
tar cJf data.tar.xz ./usr
ar rcs linux-libc-dev*.deb debian-binary control.tar.gz data.tar.xz 

sudo dpkg -i linux-libc-dev*.deb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.