我在Android设备上的chroot中(使用armhf架构)安装了xenial(Ubuntu 16.04)。一切正常。所有本地命令以及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- *程序进行suid: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(可以测试的唯一手臂设备)对此进行了测试。
可能属于askubuntu.com
根据我的经验,有两个可能的原因可能会导致apt *无法在仿生环境下工作。
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 :: /不存在:/ bin / false"。 apt-get将其从当前用户更改为文件passwd中分配的用户。但是在android下,作为inet成员的用户可以正常访问套接字,请参阅'system / core / include / private / android_filesystem_config.h'了解详细信息。因此将apt组更改为inet(此处为3003)可以解决此问题。
如帮助中心所定义,问题不是Stack Overflow的主题。 请不要回答这些问题; 相反,您应该标记它们以引起注意,它们将被关闭或适当迁移。
托比(Toby),您可以指出此处未涉及的内容吗? 这个问题是关于aptitude无法在Android设备上的沙盒环境中运行的Ubuntu上更新的问题。 这个问题有足够的细节可以在给定的设置下重现,而且似乎并不仅限于Ubuntu或Android论坛。 假设您的担心是真实的,那么我想改善问题。 你能指出吗?
换小组工作了!
什么会导致socket()"权限被拒绝"错误?
和
回声'名称服务器8.8.8.8'> /etc/resolv.conf
为我工作。
基本上,这是一个问题,因为没有将root添加到正确的组中。