WSL 新手,尝试使用 GUI 安装 Debian

WSL 新手,尝试使用 GUI 安装 Debian

我是一个 Linux 老手,对 Windows 不太熟悉,尽管从 MS-DOS 开始我就一直在使用 Windows。

我刚刚购买了一台新的 Windows 11 计算机,并尝试在 WSL 中安装具有 GUI 功能的 Debian。我成功地安装了 WSL 版本 2 的 Debian。我得到的主要只是一个 bash shell。我尝试遵循 Microsoft 的建议apt install gedit -y,但收到错误消息 ( package gedit not found)。

在另一篇文章中,我读到有必要安装“lsb-release”,但同样,当尝试安装 lsb-release 时,没有找到它。

如何在 WSL 中找到这些难以捉摸的 Debian 软件工具?我已经尝试了所有我能想到的方法,但我不想破坏我的 Windows 安装。

WSL 中带有 GUI 的 Debian 图片展示了色彩缤纷的画面以及易于查找的软件。我怎样才能加入其中?

答案1

应该至少对于初学者来说是相当简单的。我已在 WSL 上全新安装的 Debian 上重现了它。虽然我可以提供安装解决方案,但请阅读最后以了解注意事项。

全新安装后:

$ sudo apt install gedit -y
E: Unable to locate package gedit

原因是大多数 WSL 发行版(如 Docker 映像)不附带填充的存储库缓存以节省带宽。

$ sudo apt update
$ sudo apt install gedit -y

那时(大部分)按预期工作。

当然,由于这是全新安装,还建议:

sudo apt upgrade

注意事项

请注意gedit,作为 Gnome 软件,对 D-Bus 和其他默认情况下不在 WSL 下运行的服务具有高度依赖性。 D-Bus 通常由 Debian(以及大多数其他发行版)上的 Systemd 单元和进程启动,但 WSL 通常不支持 Systemd(实际上是一个单独的主题,我已经讨论过了)今天提供了另一个答案)。

当您在gedit上面运行时,如果没有 D-bus,您最终会遇到一些功能降级的情况,并且某些支持服务将无法启动。你会得到一些错误,并且全部将要运行的是gedit.这是ps -eH查看状态的单独会话:

  PID TTY          TIME CMD
    1 ?        00:00:00 init
    7 ?        00:00:00   init
    8 ?        00:00:00     init
    9 pts/0    00:00:00       bash
   11 pts/0    00:00:00         gedit
   20 ?        00:00:00   init
   21 ?        00:00:00     init
   22 pts/1    00:00:00       bash
   28 pts/1    00:00:00         ps
   29 pts/1    00:00:00         bash

虽然我还没有对此进行广泛的测试,但看起来这是可以解决的gedit,至少可以通过安装:

sudo apt install dbus-x11

然后运行gedit将使用自动启动 D-bus dbus-launch。您可以看到许多依赖的服务也因此启动:

     UID   PID  PPID  C STIME TTY      STAT   TIME CMD
       0     1     0  0 22:03 ?        Sl     0:00 /init
       0     7     1  0 22:03 ?        Ss     0:00   /init
       0     8     7  0 22:03 ?        S      0:00     /init
    1000     9     8  0 22:03 pts/0    Ss     0:00       -bash
    1000    11     9  0 22:03 pts/0    Sl+    0:00         gedit
    1000    16     8  0 22:03 pts/0    S+     0:00       dbus-launch --autolaunch=51f357b828e646fc889cfee60effb53c --binary-syntax --close-stderr
    1000    17     8  0 22:03 ?        Ss     0:00       /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7 --session
    1000    23     8  0 22:03 ?        Sl     0:00       /usr/libexec/at-spi-bus-launcher
    1000    28    23  0 22:03 ?        S      0:00         /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
    1000    30     8  0 22:03 ?        Sl     0:00       /usr/libexec/xdg-desktop-portal
    1000    35     8  0 22:03 ?        Sl     0:00       /usr/libexec/xdg-document-portal
       0    44    35  0 22:03 ?        Ss     0:00         fusermount -o rw,nosuid,nodev,fsname=portal,auto_unmount,subtype=portal -- /mnt/wslg/runtime-dir/doc
    1000    39     8  0 22:03 ?        Sl     0:00       /usr/libexec/xdg-permission-store
    1000    49     8  0 22:03 ?        Sl     0:00       /usr/libexec/xdg-desktop-portal-gtk
    1000    55     8  0 22:03 ?        Sl     0:00       /usr/libexec/at-spi2-registryd --use-gnome-session
    1000    59     8  0 22:03 ?        Sl     0:00       /usr/libexec/dconf-service
       0    68     1  0 22:03 ?        Ss     0:00   /init
       0    69    68  0 22:03 ?        S      0:00     /init
    1000    70    69  0 22:03 pts/1    Ss     0:00       -bash
    1000    93    70  0 22:05 pts/1    R+     0:00         ps n -efH
    1000    94    70  0 22:05 pts/1    D+     0:00         -bash

请注意,Gnome 和 gedit 中可能仍然有其他功能,需要额外的服务或软件包,这些服务或软件包通常在完整的“桌面”Debian 下启动安装,或者由 Systemd 启动。

例如, 中的垃圾箱功能gedit是由gio和提供的gvfs,这两个功能在 WSL 中都没有默认安装。如果没有这些,如果您尝试检查gedit.

解决

sudo apt install gvfs libglib2.0-bin

还有一件事

好吧,首先(最后?),欢迎来到 WSL。既然您提到了以前的 Linux 经验,那么了解 WSL 的重要一点是,它是不是就像物理(甚至虚拟)机器。当您在 WSL 中运行 Debian 时,它实际上是在自己的 PID 命名空间中运行里面您无法访问的虚拟机(Windows 中的“虚拟机平台”功能)。它更像是在 Docker 容器中运行的发行版。

您在“普通”Linux 和 WSL 之间遇到的大多数差异都源于此。没有关机/重新启动,没有 Systemd,事实上网络是由 Windows(而不是 Linux)提供的,你对它没有太多的控制权,等等。

相关内容