Вопрос или проблема
Я в настоящее время портирую Arch Linux на мой телефон и пытаюсь правильно настроить rootfs – установил его на внешнюю SD-карту и использую busybox для chroot в него с помощью
busybox chroot /data/local/mnt sh
Я вижу, что pacman существует, когда ищу его:
/usr/bin # type -a pacman возвращает
/sbin/pacman
но всякий раз, когда я пытаюсь установить базовую систему с помощью:
pacman -S base-devel lightdm xorg-xinit xfce4 networkmanager --needed
, я
получаю
sh: pacman: не найден
Я сделал следующее на своем телефоне Arm7:
mkfs.ext4 /dev/block/mmcblk1p1
mount /dev/block/mmcblk1p1 /data/local/mnt
cd /data/local/mnt
curl -O http://fl.us.mirror.archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz
tar xvpf ArchLinuxARM-armv7-latest.tar.gz
chroot /data/local/mnt
export PATH=/bin:/usr/bin
rm -f /etc/resolv.conf && echo 'nameserver 8.8.8.8' > /etc/resolv.conf
pacman -Sy
# работает!
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что после выполнения команды chroot
вы не можете найти команду pacman
, даже если она, кажется, существует в вашей системе. Давайте разберёмся с решением этой проблемы по шагам.
-
Правильный контекст выполнения: Убедитесь, что вы действительно находитесь внутри chroot окружения. Когда вы выполните команду
chroot
, вы должны работать в контексте корневой файловой системы, которую вы настраиваете. Для начала выполните командуchroot /data/local/mnt
, чтобы перейти в новое окружение. -
Установите переменную PATH: После входа в chroot окружение, вам, возможно, нужно будет установить переменную PATH, чтобы она включала в себя директории, в которых находятся исполняемые файлы. Вы уже сделали это с помощью команды:
export PATH=/bin:/usr/bin
Убедитесь, что эта команда была выполнена после
chroot
. -
Проверка доступа к pacman: Если вы вводите команду
pacman
и видите сообщение об ошибке "sh: pacman: not found", проверьте, действительно ли файл существует и доступен. Выполните следующую команду внутри chroot:ls -l /sbin/pacman
Убедитесь, что файл существует и имеет необходимые разрешения для выполнения. Если файл отсутствует, возможно, вы неправильно установили/распаковали систему.
-
Настройка сети: Если вы хотите установить пакеты, убедитесь, что у вас есть доступ к интернету внутри chroot. Если вы не выполнили команду для настройки DNS, сделайте это:
rm -f /etc/resolv.conf && echo 'nameserver 8.8.8.8' > /etc/resolv.conf
-
Проблемы с совместимостью и архитектурой: Убедитесь, что версия pacman сопоставима с вашей архитектурой (ARM в данном случае). Если вы пытаетесь запустить неподходящую версию или неправильный бинарный файл, команда также не будет найдена.
-
Обновление базы данных пакетов: Перед установкой пакетов не забудьте обновить базу данных pacman с помощью:
pacman -Sy
Убедитесь, что эта команда отработала успешно, и база данных обновилась.
-
Установка пакетов: Теперь вы можете попробовать снова запустить установку необходимых пакетов:
pacman -S base-devel lightdm xorg-xinit xfce4 networkmanager --needed
Если вы всё правильно сделали, команда должна выполниться без ошибок, и пакеты будут успешно установлены.
Если проблема сохраняется, проверьте технику выполнения шагов или предоставьте более подробную информацию об ошибках, которые вы получаете, чтобы мы могли оказать дополнительную помощь.