Ubuntu-无网络环境下快速部署开发环境(gcc、make、dkms等)
1. 为什么需要离线部署开发环境最近给一台老笔记本装Ubuntu系统时遇到了一个典型问题装完系统发现无线网卡驱动不兼容根本连不上WiFi。没有网络意味着没法用apt-get安装gcc、make这些基础工具更别提编译网卡驱动了。这种场景在嵌入式开发、服务器机房或者特殊网络环境中很常见。其实Ubuntu安装U盘里就藏着完整的软件仓库只是很多人不知道如何利用。我后来发现通过挂载安装镜像的U盘可以直接从里面提取所有需要的开发工具包。这种方法比单独下载deb包要可靠得多因为所有包的版本都是匹配当前系统的不会出现依赖地狱。2. 准备工作找到你的离线软件仓库2.1 确认U盘设备路径插入Ubuntu安装U盘后先别急着点开文件管理器。在终端输入sudo fdisk -l你会看到类似这样的输出关键信息已加粗Disk /dev/sdc: 14.9 GiB, 15938355200 bytes, 31129600 sectors Device Boot Start End Sectors Size Id Type /dev/sdc4 * 256 31129599 31129344 14.9G c W95 FAT32这里**/dev/sdc4**就是U盘的设备路径你的可能不同。注意这个路径后面挂载要用到。2.2 正确挂载U盘新建挂载点并挂载注意替换你的实际设备名sudo mkdir /mnt/usb sudo mount -t vfat -o iocharsetutf8 /dev/sdc4 /mnt/usb挂载后进入目录查看内容cd /mnt/usb ls关键目录是pool/main这里存放着所有软件包。你可以把它理解为一个离线版的软件仓库。3. 实战安装开发工具链3.1 安装gcc及其依赖进入pool/main目录后先查找gcc相关包cd pool/main find -name gcc*典型输出会显示多个目录比如./g/gcc-7 ./g/gcc-8 ./g/gcc-defaults安装顺序很重要我建议按这个步骤来先安装基础库注意替换实际路径sudo dpkg -i /mnt/usb/pool/main/g/glibc/lib*.deb安装内核头文件编译必备sudo dpkg -i /mnt/usb/pool/main/l/linux/linux-libc-dev*.deb最后安装gcc主包sudo dpkg -i /mnt/usb/pool/main/g/gcc-7/gcc-7_*.deb如果遇到依赖错误可以用apt-get -f install尝试修复虽然没网络但这个命令有时能解决部分问题。3.2 安装make工具make的安装相对简单cd /mnt/usb/pool/main/m/make-dfsg sudo dpkg -i make_*.deb3.3 安装DKMS框架DKMSDynamic Kernel Module Support对于需要编译内核模块的设备驱动特别重要cd /mnt/usb/pool/main/d/dkms sudo dpkg -i dkms_*.deb4. 常见问题解决方案4.1 依赖缺失问题处理离线安装时最头疼的就是依赖关系。我总结了几种应对方法递归查找法用dpkg -I查看deb包的依赖项然后去pool/main里搜索对应包dpkg -I package.deb | grep Depends批量安装法对已知的依赖目录直接安装所有相关包sudo dpkg -i /mnt/usb/pool/main/g/glibc/*.deb强制安装法最后手段sudo dpkg -i --force-all package.deb4.2 版本冲突处理如果遇到类似but version X is to be installed的错误可以尝试sudo dpkg --configure -a sudo apt-get --fix-broken install即使没有网络这些命令有时也能解决部分问题。5. 扩展应用安装其他开发工具同样的方法可以用来安装更多工具构建工具cd /mnt/usb/pool/main/b/build-essential sudo dpkg -i build-essential_*.deb调试工具cd /mnt/usb/pool/main/g/gdb sudo dpkg -i gdb_*.deb版本控制cd /mnt/usb/pool/main/g/git sudo dpkg -i git_*.deb6. 终极技巧创建本地软件仓库如果你经常需要离线安装可以考虑把U盘里的pool目录复制到本地然后创建本地仓库sudo cp -r /mnt/usb/pool /var/local/repo sudo apt-cdrom -m -d /var/local/repo add sudo apt-get update这样就能用apt-get直接安装离线包了系统会自动解决依赖关系。我在公司的内网开发机上就用这个方法维护了一套完整的开发环境。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2430544.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!