首页 文章

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

提问于
浏览
1

我在我的Android设备上使用xenial(Ubuntu 16.04)安装了chroot(使用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) - socket(13:Permission denied)

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

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

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

有什么建议?谢谢 .

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

2 回答

  • 1

    根据我的经验,有两个可能的原因可能导致*在环境下无法工作 . 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)可以解决这个问题 .

  • 4

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

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

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

相关问题