【问题标题】:apt-get update fails on chroot ubuntu 16.04 on android [closed]apt-get update 在android上的chroot ubuntu 16.04上失败[关闭]
【发布时间】:2017-05-01 18:07:37
【问题描述】:

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

1)“sudo apt-get update”给我一个错误:Temporary failure resolve '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) 好的,那么我 suid 了所有的 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 设置(我可以测试的唯一 arm 设备)上对此进行了测试。

【问题讨论】:

标签: ubuntu debian apt-get apt


【解决方案1】:

根据我的经验,有两个可能的原因导致 apt* 在 Android 环境下无法工作。 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的组改为inet(这里是3003)就可以解决这个问题。

【讨论】:

  • 该问题与 help center 中定义的 Stack Overflow 无关。请不要回答此类问题;相反,您应该标记它们以引起注意,它们将被适当地关闭或迁移。
  • 托比,你能帮忙指出什么不是这里的主题吗?这个问题非常具体,关于 aptitude 无法在 Android 设备上的沙盒环境中运行的 Ubuntu 上更新。这个问题有足够的细节可以在给定的设置上重现,而且似乎并不局限于仅限 Ubuntu 或仅限 Android 的论坛。假设您的担忧是真实的,我想改进这些问题。你能指出来吗?
  • 换组成功了!
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2017-10-14
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多