1. 为什么需要离线安装?聊聊Jetson与RealSense的“离线联姻”
大家好,我是老张,一个在嵌入式视觉领域摸爬滚打了十来年的工程师。今天咱们不聊那些有网环境下“一键安装”的轻松活儿,专门来啃一块硬骨头:在完全没有互联网连接的Jetson设备上,手动编译安装Intel RealSense SDK(librealsense)。
你可能要问,都什么年代了,还有没网的环境?嘿,这场景还真不少。比如在工厂的封闭产线上调试视觉质检设备、在野外部署的移动机器人、或者在涉密的内网环境中进行开发。在这些场景下,你的Jetson Nano、NX、Orin NX就像一座“信息孤岛”,没法直接sudo apt-get install,也没法git clone。这时候,传统的在线安装教程就全都失效了,你得靠自己把整个“软件生态”搬过去。
我印象最深的一次,是在一个大型自动化仓库里部署基于Jetson Xavier NX和D435i的货架盘点机器人。现场为了安全,生产网络和外部完全物理隔离。我抱着一台笔记本和一堆U盘,硬是把整个编译环境“搬”了进去,折腾了大半天才搞定。踩过的坑多了,也就总结出了一套可靠的离线安装方法论。这篇文章,就是把我这些经验毫无保留地分享给你,让你在遇到类似情况时,能从容应对,而不是对着命令行干瞪眼。
简单来说,离线安装的核心思路就三步:在有网的机器上准备好所有“食材”(源码和依赖包),打包带走,然后在离线环境里“开火烹饪”(编译安装)。听起来简单,但魔鬼全在细节里。接下来,我就带你一步步走通这个流程。
2. 战前准备:打造你的离线“补给包”
工欲善其事,必先利其器。在断开网络之前,我们必须在一台有网的、系统版本尽可能与目标Jetson设备一致的电脑上(最好就是另一台同型号的Jetson,或者至少是相同架构aarch64的Ubuntu系统),准备好所有必需的安装包和源码。这一步做得好,后面的工作就成功了一大半。
2.1 确定系统版本与依赖清单
首先,通过lsb_release -a和uname -m命令,精确记录下你的目标Jetson设备上运行的Ubuntu版本(如18.04、20.04)和架构(肯定是aarch64)。然后,我们需要获取librealsense编译所需的所有依赖包。
在有网的机器上,创建一个工作目录,并尝试模拟安装来获取依赖包列表。虽然不能直接安装,但我们可以利用apt的--print-uris功能来“侦察”:
# 切换到工作目录
mkdir ~/offline_librealsense
cd ~/offline_librealsense
# 创建一个获取依赖的脚本 get_deps.sh
cat > get_deps.sh << 'EOF'
#!/bin/bash
# 这个脚本用于分析并下载所有依赖包的下载链接
DEPS="git cmake libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev"
# 对于JetPack 4.x (Ubuntu 18.04) 和 JetPack 5.x (Ubuntu 20.04),基础包名一致,但版本可能不同。
# 我们使用--print-uris来获取下载URL和包名,而不实际安装。
for dep in $DEPS; do
apt-get download --print-uris $dep 2>/dev/null | grep -E "^'" | awk '{print $1}' | tr -d "'" >> package_urls.txt
apt-cache depends $dep | grep -E "Depends|PreDepends" | awk '{print $2}' | xargs -I {} apt-get download --print-uris {} 2>/dev/null | grep -E "^'" | awk '{print $1}' | tr -d "'" >> package_urls.txt
done
# 去重
sort -u package_urls.txt -o package_urls.txt
echo "依赖包URL列表已保存到 package_urls.txt"
EOF
chmod +x get_deps.sh
./get_deps.sh
执行后,你会得到一个package_urls.txt文件,里面是类似http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl-dev_1.1.1f-1ubuntu2.19_arm64.deb的链接。但是,这个方法在跨版本时可能不准确,最稳妥的方式是直接在另一台同版本Jetson上执行apt-get download。
因此,更推荐的做法是,如果你有另一台联网的同版本Jetson,直接在上面运行:
# 在联网的同版本Jetson上执行
mkdir -p ~/offline_pkgs
cd ~/offline_pkgs
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances git cmake libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev libgl1-mesa
340



被折叠的 条评论
为什么被折叠?



