Android上的chroot ubuntu 16.04上的apt-get更新失败

时间:2017-05-01 18:07:37

标签: ubuntu debian apt-get apt

我在Android设备的chroot中安装了xenial(Ubuntu 16.04)(使用armhf架构)。一切正常。所有本地命令和wget和curl工作正常。但是,apt-get失败了。这是问题所在:

1)" sudo apt-get update"给我一个错误:临时故障解决' ports.ubuntu.com' (其他程序,如wget和curl可以成功访问dns名称)

我ping了服务器并获得了IP,所以我编辑/etc/apt/sources.list来反映这个

2)" sudo apt-get update"给我另一个错误:无法为91.189.88.150创建套接字(f = 2 t = 1 p = 6) - 套接字(13:允许拒绝)

3)好吧,那么我就把所有的apt- *程序都搞砸了:sudo chmod u + s / usr / bin / apt - *

删除有关特定apt-get版本的任何问题 我已经通过apt-get本身删除了apt并通过dpkg成功安装了 apt .deb,然而问题仍然存在。

令人惊讶的是,Ubuntu上的这个基本功能似乎被打破了,它可能是特定于armhf包。我似乎无法在SO上发现同样的问题。但是,我确实发现另一个用户在reddit' s / r / debian上报告了类似的内容但是没有得出结论。

有什么建议吗?感谢。

PS:我没有理由声称这是特定于Android系统的,我认为这可能是使用armhf二进制文件chroot的一般问题。但我刚刚使用Android(我可以测试的唯一手臂设备)在我的设置上测试了这个。

2 个答案:

答案 0 :(得分:4)

根据我的经验,有两个可能的原因导致*在环境下无法工作。 1个空DNS。一旦你chroot到ubuntu,你必须设置DNS,最简单的方法是'echo'your_number_dns'> /etc/resolv.conf' 2将apt组更改为3003. vi / etc / passwd将_apt组从65534更改为3003。结果看起来像'_apt:x:105:3003 :: / nonexistent:/ bin / false'。 apt-get会将其从当前用户更改为文件passwd中指定的用户。但在android下,作为inet成员的用户可以正常访问socket,请参考'system / core / include / private / android_filesystem_config.h'获取详细信息。所以改变apt to inet组(这里3003)可以解决这个问题。

答案 1 :(得分:1)

what can cause a socket() "Permission denied" error?

echo'nameserver 8.8.8.8'> /etc/resolv.conf中

为我工作。 基本上,这被证明是根本没有被添加到正确的组的问题。