Моя хост-система представляет собой док-контейнер Ubuntu: 18.04. Там я построил корневую файловую систему для архитектуры x86_64, используя проект yocto. Расположение корневой файловой системы определяется переменной ${IMAGE_ROOTFS}. Я делаю chroot в системе и пытаюсь установить пакет dos2unix. Мой код выглядит так:
mount --bind /proc ${IMAGE_ROOTFS}/proc
mount --bind /dev ${IMAGE_ROOTFS}/dev
# copy host files to make network function in chroot
sudo cp /etc/resolv.conf ${IMAGE_ROOTFS}/etc/resolv.conf
# configure apt
sudo mkdir -p ${IMAGE_ROOTFS}/log/apt
# set time
sudo cp ${IMAGE_ROOTFS}/usr/share/zoneinfo/Europe/Berlin ${IMAGE_ROOTFS}/etc/localtime
#######################
#### Entering Chroot
#######################
# chroot into the target system
sudo chroot ${IMAGE_ROOTFS}/bin/bash
# install packages
apt-get install -y dos2unix
Но я получаю следующую ошибку:
bash-4.4# apt-get install dos2unix
Reading package lists... Done
Building dependency tree
Reading state information... Done
dos2unix is already the newest version (7.3.4-3).
0 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
E: Can not write log (Is /dev/pts mounted?) - posix_openpt (2: No such file or directory)
Setting up sysvinit-inittab (2.88dsf-r10) ...
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
dpkg: error processing package sysvinit-inittab (--configure):
installed sysvinit-inittab package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
sysvinit-inittab
E: Directory '/var/log/apt/' missing
E: Sub-process /usr/bin/dpkg returned an error code (1)
Похоже, root-fs не полностью настроен для запуска apt. Какие дополнительные пакеты мне нужно добавить в yocto?
ОБНОВЛЕНИЕ-1: Немного контекста: я не знал, как устанавливать пакеты deb из подходящих источников в yocto во время сборки образа. Поэтому я приступил к созданию сценария постобработки для корневой файловой системы, чтобы выполнить apt и установить пакеты. Там я использую apt для установки пакетов из различных источников apt, включая пользовательский источник apt.