Flutter Doctor在Doctor上运行的CentOS Linux 7 GTK 3.0显示问题

nmpmafwu  于 2023-06-24  发布在  Flutter
关注(0)|答案(4)|浏览(252)

目标:在CentOS 7 docker容器上编译并运行flutter示例,模拟Linux Desktop
(Note:无法使用snapd -Docker中不支持)手动安装
所有的事情都解决了,除了这个:

GTK 3.0 development libraries are required for Linux development.
  They are likely available from your distribution (e.g.: apt install
  libgtk-3-dev)
The others show OK:
Γú[Γ£ù] Linux toolchain - develop for Linux desktop
    ΓÇó clang version 3.4.2 (tags/RELEASE_34/dot2-final)
    ΓÇó cmake3 version 3.17.5
    ΓÇó ninja version 1.10.2
    ΓÇó pkg-config version 0.29.2

Γú[Γ£ô] Connected device (1 available)
    ΓÇó Linux (desktop) ΓÇó linux ΓÇó linux-x64 ΓÇó CentOS Linux 7 (Core)
      4.19.76-linuxkit

另一个线程在诊断时要求提供特定的版本。以下是:
pkg-config --modversion gtk+-3.0 3.22.30
pkg-config --modversion glib-2.0 2.56.1
pkg-config --modversion gio-2.0 2.56.1
pkg-config --modversion blkid 2.23.0
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/local/lib/pkg config:
我希望能有一些帮助来解决这个问题!!!!

wn9m85ua

wn9m85ua1#

我将Ubuntu更新到22.04 LTS版本,当我需要安装Flutter和Android Studio时,我在flutter doctor输出中遇到了类似的错误:

GTK 3.0 development libraries are required for Linux development.
They are likely available from your distribution (e.g.: apt install libgtk-3-dev)

命令apt install libgtk-3-dev返回了各种错误,首先是类似于:

libgtk-3-dev is already the newest version

然后我试着更新所有的包:

sudo apt-get update
sudo apt-get autoremove
dpkg --get-selections | grep hold

这些命令没有一个是无效的
因此,我尝试删除libgtk-3-dev,然后重复自动删除并尝试再次安装libgtk-3-dev。但现在它向我展示了它有一些未满足的依赖性(看起来它依赖于libpcre3和\或libpcre3-dev的某些版本),并且由于某种原因apt拒绝安装它。
我试了很多方法来删除这个该死的包,但我做不到。据我所知,最初的问题是,这个糟糕的软件包(libpcre3)的版本,我已经从Ubuntu 18开始扩展,并且有32位版本和x64版本,其中一些依赖关系是扭曲的。好吧,或者其他一些问题-也许在下一次更新时有些东西没有删除,尽管它应该被删除。
最后,我使用图形化shell通过apt-synaptic解决了这个问题(它很棒,我推荐给大家)。这很容易设置:

sudo apt install synaptic

之后,我在列表中找到了amd64版本libpcre3,标记为安装并安装了它。之后,只需通过控制台安装即可

sudo apt install libgtk-3-dev

它工作得很好,更新了所有依赖项。

  • P.S.我想指出的第一件事是Flutter是令人难以置信的弯曲狗屎(只有我的意见)。如果你还没有开始在上面开发,不要开始,选择更稳定的东西。如果有可能使用这些垃圾,那么最多也就五年……*
  • 其次,我花了很多时间搜索和解决库的问题,这本质上是perl依赖。尽管我自己根本不使用Perl。看起来臭名昭著的“依赖地狱”已经在这里了。
s6fujrry

s6fujrry2#

看起来大部分都与路径有关,一些库的名称略有不同(gtk 3-devel,libblkid-devel,xz-devel)。cmake 3周围的一些烦恼,并获得更多的pkg-config,xproto,kbproto,xextproto的最新版本,以及所述包的配置。至少我现在有个干净的扑动医生了
现在,我们来尝试运行它……

wgmfuz8q

wgmfuz8q3#

我最近在我的机器上重新安装了操作系统,我决定通过FVM安装和使用Flutter。我有很多其他的问题。

[✓] Flutter (Channel stable, 3.0.5, on Ubuntu 20.04.3 LTS 5.15.0-41-generic, locale en_US.UTF-8)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[✓] Chrome - develop for the web
[✗] Linux toolchain - develop for Linux desktop
    ✗ clang++ is required for Linux development.
      It is likely available from your distribution (e.g.: apt install clang), or can be downloaded from https://releases.llvm.org/
    ✗ CMake is required for Linux development.
      It is likely available from your distribution (e.g.: apt install cmake), or can be downloaded from https://cmake.org/download/
    ✗ ninja is required for Linux development.
      It is likely available from your distribution (e.g.: apt install ninja-build), or can be downloaded from https://github.com/ninja-build/ninja/releases
    ✗ GTK 3.0 development libraries are required for Linux development.
      They are likely available from your distribution (e.g.: apt install libgtk-3-dev)
[✓] Android Studio (version 2021.2)
[✓] VS Code
[✓] Connected device (2 available)
[✓] HTTP Host Availability

**解决方案:**铿锵++

sudo apt-get -y install clang
  • CMake* 我正在尝试sudo snap install cmake,但它返回了一个错误,这是因为快照评论“cmake”是使用经典限制发布的,因此可以在快照通常被限制的安全沙箱之外进行任意系统更改,这可能会使系统处于风险之中。

有人建议我:“如果您理解并想继续,请重复命令,包括--classic?要解决它,我只是理解和继续

sudo snap install cmake --classic
  • GTK 3.0开发库 *
sudo apt install libgtk-3-dev

这解决了这里的一切,它没有执行顺序,每个依赖项都是独立添加的。
希望我有贡献!

toe95027

toe950274#

我在这里遇到了类似的问题,但找到了解决它的方法。所有库都已安装,但flutter doctor另有说明。

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✗] Linux toolchain - develop for Linux desktop
    • clang version 15.0.7
    • cmake version 3.17.0
    • ninja version 1.10.0
    • pkg-config version 0.29.2
    ✗ GTK 3.0 development libraries are required for Linux development.
      They are likely available from your distribution (e.g.: apt install libgtk-3-dev)

[✓] Android Studio (version 2022.2)

当我用pkg-config --list-all |grep gtk检查时,它显示“gtk+-3.0”在那里。

gtk+-3.0                       GTK+ - GTK+ Graphical UI Library
gtk+-unix-print-3.0            GTK+ - GTK+ Unix print support
gtk+-wayland-3.0               GTK+ - GTK+ Graphical UI Library
gtk+-broadway-3.0              GTK+ - GTK+ Graphical UI Library
gtk+-x11-3.0                   GTK+ - GTK+ Graphical UI Library

但是当我执行pkg-config --exists 'gtk+-3.0'; echo $?时,它总是返回1。我花了一段时间才弄明白pkg-config有额外的选项--print-errors来显示当我们使用--exists时小屋后面发生了什么。
在我的情况下做pkg-config --exists --print-errors 'gtk+-3.0'它给了我

Package wayland-client was not found in the pkg-config search path.
Perhaps you should add the directory containing `wayland-client.pc'
to the PKG_CONFIG_PATH environment variable
Package 'wayland-client', required by 'gdk-3.0', not found

这就是那个不告诉你后面发生了什么的人有多小气。
稍微挖掘一下,原来wayland-client是基于rpm的发行版中wayland-devel的一部分,我使用openSUSE btw。安装wayland-devel后,flutter doctor显示一切正常。

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • clang version 15.0.7
    • cmake version 3.17.0
    • ninja version 1.10.0
    • pkg-config version 0.29.2

[✓] Android Studio (version 2022.2)

你现在可以找出你的错误了。
希望对你有帮助。

相关问题