在无网络的ubuntu server安装图形化界面
Contents
1. 在有网络的服务器上下载 ubuntu-desktop 及其依赖(必须同版本,小版本号也必须相同)
1.1 更新软件包列表
sudo apt update
1.2 下载 ubuntu-desktop 及其所有依赖(不安装)
sudo apt install --download-only ubuntu-desktop -y
--download-only让 APT 只下载.deb包,不安装。
1.3 复制 .deb 包到指定目录
APT 下载的包默认存放在 /var/cache/apt/archives/,复制到自定义目录:
mkdir ~/ubuntu-desktop-offline
sudo cp /var/cache/apt/archives/*.deb ~/ubuntu-desktop-offline/
1.4 生成依赖清单(可选)
apt-cache depends --recurse ubuntu-desktop | grep "^\w" | sort -u > ~/ubuntu-desktop-offline/dependencies.txt
1.5 打包成 .tar.gz(便于传输)
cd ~/ubuntu-desktop-offline
tar -czvf ubuntu-desktop-offline.tar.gz *.deb
- 现在
ubuntu-desktop-offline.tar.gz包含所有依赖包。
2. 将打包文件传输到无网络的服务器
使用 scp、rsync 或 U 盘等方式:
scp ~/ubuntu-desktop-offline/ubuntu-desktop-offline.tar.gz user@no-internet-server:/tmp/
(替换 user 和 no-internet-server 为目标服务器的用户名和 IP)
3. 在无网络的服务器上安装
3.1 解压 .tar.gz
cd /tmp
mkdir ~/ubuntu-desktop-offline
tar -xzvf ubuntu-desktop-offline.tar.gz
mv *.deb ~/ubuntu-desktop-offline
3.2 使用 dpkg 批量安装
cd ~/ubuntu-desktop-offline
sudo dpkg -i *.deb
3.3 修复可能的依赖问题(如果有)
如果 dpkg -i 报错,例如
Errors were encountered while processing: apport-gtk libsasl2-modules-gssapi-mit:amd64 software-properties-gtk ubuntu-desktop ubuntu-desktop-minimal ubuntu-release-upgrader-gtk update-manager update-notifier apturl nautilus-share
则依次使用sudo dpkg -i 包名逐个安装,这个过程中会提示各个包缺少什么依赖。
在有网的机器执行apt-get download –print-uris libsasl2-modules=2.1.27+dfsg2-3ubuntu1.2 | grep -oP “(?<=’).*?(?=’)"。这里代码中的包名替换成需要的。
执行后输出类似http://cn.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules_2.1.27%2bdfsg2-3ubuntu1.2_amd64.deb
在浏览器访问这个链接下载好这个依赖包使用dpkg -i安装后再次尝试安装对应的上层包。
4. 验证安装
4.1 检查 ubuntu-desktop 是否安装成功
dpkg -l | grep ubuntu-desktop
应该能看到类似:
ii ubuntu-desktop 1.481 amd64 The Ubuntu desktop system
4.2 启动图形界面(如果服务器支持 GUI)
sudo systemctl start gdm # Ubuntu 20.04+ 使用 GDM
# 或
sudo systemctl start lightdm # 旧版可能用 LightDM
5. 注意事项
5.1 系统版本必须一致
- 确保 有网络服务器 和 无网络服务器 的 Ubuntu 版本相同(如都是 22.04),否则依赖可能不兼容。
5.2 磁盘空间
ubuntu-desktop及其依赖较大(约 1.5GB~2GB),确保/tmp或目标目录有足够空间。
6.切换
切换到多用户命令行模式(不停止 gdm)
sudo systemctl isolate multi-user.target
-
这会关闭图形界面,但
gdm服务仍在后台运行。 -
如果想重新进入图形界面:
sudo systemctl isolate graphical.target