Ubuntu20.04

刚开始我的虚拟机版本为 Ubuntu20.04 ,编译某个 Yocto 工程时报错:

ERROR: The following required tools (as specified by HOSTTOOLS) appear to be unavailable in PATH, 
please install them in order to proceed:
  make_ext4fs mkimage dtc
make: *** [Makefile:6: all] Error 1

于是直接 apt install 安装  make_ext4fs mkimage dtc 这几个包,但未成功,百度一番后解决,命令如下:

sudo apt-get install android-tools-adb android-tools-fastboot android-sdk-tools
# 该命令运行后报错,原来的包出了问题,根据提示安装解决,命令如下:
sudo apt install android-sdk-libsparse-utils android-sdk-ext4-utils

sudo apt-get install u-boot-tools

sudo apt-get install device-tree-compiler

Ubuntu22.04

因为 openEuler SDK 需要的 glibc 最低是 2.34 版本的,之前搭了 22.04 的 docker 算是解决办法之一,但是今天手贱(也是感觉20.04有点老了)想把我的虚拟机升级到 22.04 。升级之后尝试编译之前的 Yocto 又报了类似的错:

ERROR: The following required tools (as specified by HOSTTOOLS) appear to be unavailable in PATH, please install them in order to proceed:
  make_ext4fs

于是按照之前 Ubuntu20.04 的安装方式输入命令,但却报错:

E: Unable to locate package android-sdk-tools
E: Unable to locate package android-sdk-ext4-utils

        查找网上资料与多次尝试无果,故打算手动编译 make_ext4fs。repo 下载 Android 源码(包含有 make_ext4fs 包),但即使换了国内镜像站也非常慢,下载完一次后检查发现没有 ext4_utils、make_ext4fs 源码,不知道是不是下载的问题。

        感觉软件包应该会有自己独立的源码 或者 编译好的包,所以百度了一下,发现 android-tools-fsutils 包含有 make_ext4fs 故打算通过安装 android-tools-fsutils 获取 make_ext4fs 。其中有一些小插曲一并写在下面:

# 直接安装在Ubuntu22.04会让你替换一个包,但是那个包安装后没有 make_ext4fs
virtual-machine:~/00.mixture$sudo apt install android-tools-fsutils
Package android-tools-fsutils is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  android-sdk-libsparse-utils

# 浏览器上,官网下载.deb包 
# 地址
https://mirrors.cqupt.edu.cn/deepin/pool/main/a/android-tools/
# 下载的包
android-tools-fsutils_5.1.1.r38-1.1_amd64.deb

# 进入刚刚下载的.deb目录安装
sudo dpkg -i android-tools-fsutils_5.1.1.r38-1.1_amd64.deb

# 报错,一个依赖一个冲突
dpkg: dependency problems prevent configuration of android-tools-fsutils:
  android-tools-fsutils depends on python:any.
  android-sdk-libsparse-utils (1:10.0.0+r36-9) breaks android-tools-fsutils and is installed.

# 删除冲突包并修复
sudo apt-get remove android-sdk-libsparse-utils
sudo apt --fix-broken install

# 再次安装
sudo dpkg -i android-tools-fsutils_5.1.1.r38-1.1_amd64.deb

# 明明已安装pyton还是报依赖问题
dpkg: dependency problems prevent configuration of android-tools-fsutils:
  android-tools-fsutils depends on python:any.

# 无意间尝试,发现有我们需要的这个包
virtual-machine:~/00.mixture$ whereis make_ext4fs
make_ext4fs: /usr/bin/make_ext4fs

# 执行修复,提示remove android-tools-fsutils,且 make_ext4fs 被删除掉了
# 故重复上述步骤安装,将 make_ext4fs 拷贝一份,执行修复,然后将备份的 make_ext4fs 拷贝到 /usr/bin/
sudo dpkg -i android-tools-fsutils_5.1.1.r38-1.1_amd64.deb
sudo cp /usr/bin/make_ext4fs ~/00.mixture/
sudo apt --fix-broken install
sudo cp ~/00.mixture/make_ext4fs /usr/bin/

# 测试,正常
virtual-machine:~/00.mixture$ whereis make_ext4fs
make_ext4fs: /usr/bin/make_ext4fs

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐