Contents

在无网络的ubuntu server安装图形化界面

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. 将打包文件传输到无网络的服务器

使用 scprsync 或 U 盘等方式:

scp ~/ubuntu-desktop-offline/ubuntu-desktop-offline.tar.gz user@no-internet-server:/tmp/

(替换 userno-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