Ошибка обновления apt-get на chroot ubuntu 16.04 на Android

Я установил xenial (Ubuntu 16.04) в chroot на своем Android-устройстве (используя архитектуру armhf). Все работает просто отлично. Все локальные команды и wget и curl работают нормально. Однако apt-get терпит неудачу. Вот проблема:

1) «sudo apt-get update» выдает ошибку: временная ошибка при разрешении «ports.ubuntu.com» (другие программы, такие как wget и curl, могут успешно получить доступ к DNS-именам)

Я пропинговал серверы и получил 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 через сам apt-get и успешно установил apt.deb через dpkg, однако проблема не устранена.

Удивительно, что эта базовая функция в Ubuntu не работает, она может быть специфичной для пакетов armhf. Кажется, я не могу найти ту же проблему, о которой сообщается на SO. Тем не менее, я нашел другого пользователя, сообщившего о чем-то похожем на Reddit /r/debian, но это не было сделано.

Какие-либо предложения? Спасибо.

PS: у меня нет причин утверждать, что это относится к системе Android, и я думаю, что это может быть общей проблемой для chroot с использованием двоичных файлов armhf. Но я только что проверил это на своей установке с Android (единственное устройство, с которым я могу протестировать).


person Manoj Raja Rao    schedule 01.05.2017    source источник
comment
может принадлежать askubuntu.com   -  person Raghunandan    schedule 01.05.2017


Ответы (2)


По моему опыту, есть две возможные причины, по которым apt* не работает в среде Android. 1 пустой DNS. Вы должны установить DNS после того, как вы выполните chroot в Ubuntu, самый простой способ - это «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, может нормально получить доступ к сокету, пожалуйста, обратитесь к 'system/core/include/private/android_filesystem_config.h' для получения подробной информации. поэтому измените группу apt на inet (здесь 3003), чтобы решить эту проблему.

person wen    schedule 19.07.2017
comment
Вопрос не относится к теме переполнения стека, как указано в справочном центре. Пожалуйста, не отвечайте на такие вопросы; вместо этого вы должны пометить их как требующие внимания, и они будут соответствующим образом закрыты или перенесены. - person Toby Speight; 19.07.2017
comment
Тоби, можешь помочь, указав, что здесь не по теме? Вопрос очень конкретен в том, что aptitude не может обновить Ubuntu, работающую в изолированной среде на устройстве Android. В этом вопросе достаточно подробностей, чтобы воспроизвести его в данной настройке, и на самом деле он не ограничивается форумами только для Ubuntu или только для Android. Предполагая, что ваше беспокойство искренне, я хотел бы улучшить вопросы. Вы можете указать? - person Manoj Raja Rao; 20.07.2017
comment
Смена группы сработала! - person ogurets; 15.09.2019

что может вызвать ошибку socket() Отказ в доступе?

а также

echo 'сервер имен 8.8.8.8' > /etc/resolv.conf

работал на меня. По сути, это оказалось проблемой, когда root не добавлялся в нужные группы.

person Manoj Raja Rao    schedule 16.05.2017