如何在 Ubuntu 18.04 中安装 gnome 3.29.92 或 3.30?

Jua*_*eni 18 gnome ppa 18.04

是否可以在 ubuntu 18.04 中安装 gnome 3.29.92 或 3.30?

是否有 PPA 可用?

更新:https : //mail.gnome.org/archives/devel-announce-list/2018-September/msg00003.html

the*_*les 9

在此处输入图片说明

是的,如果您愿意做一些非常规的事情并且不得不处理更多的复杂性、潜在风险和兼容性问题,则可以从任何 ubuntu 版本升级您想要的任何软件。

我也无法升级到 18.10,因为它破坏了我的一些基本软件。另一方面,Gnome 3.30 在稳定性和性能方面远远优于 3.28 和 3.26。对于 Gnome Wayland 尤其如此,它从 3.30 开始从灾难性变为实际可用......

这是我所做的一般要点:

  1. 临时修改 apt repo list 以使用 cosmic 的 repos 而不是 bionic。
  2. 仅将 gnome shell 更新到 3.30 以及它需要以稳定方式运行的文件,仅此而已。
  3. 列出 2 中更新的文件。
  4. 撤消第 1 步,以便机器上的其余软件包可以使用 LTS 更新
  5. 其余的包可以正常更新,但我在 2 中更新的文件需要通过脚本手动更新,该脚本将使用步骤 3 中的列表构建。

我已经就如何做到这一点做了一个非常详尽的教程。如果您密切关注这一点,您应该不会遇到任何麻烦,但要知道没有任何保证,并且您正在使用可能会破坏安装的东西,因此请在执行此操作之前备份您的安装或在虚拟机上执行此操作以查看它是如何进行的为你而去。


详细说明(数字与上面的列表不符):

准备

除非我另有说明,否则假设所有命令都具有提升的权限,并且我不想输入sudo100 次。要进入sudo模式,请输入:

sudo -H bash #or sudo su 
Run Code Online (Sandbox Code Playgroud)

在做任何事情之前,请通过运行以下命令确保一切正常:

apt-get --fix-broken install
Run Code Online (Sandbox Code Playgroud)

第1步

制作原始副本并临时修改 apt 存储库列表,以便它检查 Cosmic 存储库的更新而不是 Bionic 存储库:

cp /etc/apt/sources.list /etc/apt/sources.list.bionic
#make a cosmic version of the apt list
cat /etc/apt/sources.list.bionic| sed 's/bionic/cosmic/g' > /etc/apt/sources.list.cosmic
# set the apt list to cosmic
cp /etc/apt/sources.list.cosmic /etc/apt/sources.list

# backup your two list files to another directory - just in case some smart ass updater decides to delete them.
mkdir /etc/apt.bak
cp /etc/apt/sources.* /etc/apt.bak
Run Code Online (Sandbox Code Playgroud)

第2步

更新软件包列表并检查可升级的软件包:

apt update
apt list --upgradable > upgradable
Run Code Online (Sandbox Code Playgroud)

第 3 步

使用grep,对数字 3.30 和 3.28 运行基于文本的搜索。这应该只显示与 Gnome Shell 相关的更新。此外,您可以搜索与 Wayland(必不可少!)和glib, gir, gtk(由您决定)相关的软件包。我真的不关心 Xorg,因为我认为它非常不安全,但是如果你想使用gnome-x11,你也可以搜索xorg要更新的包。这种方法背后的想法是避免将太多软件包升级到 Cosmic 分支,因为 Cosmic 只有 9 个月的修复期,而 Bionic 将有 5-10 年的安全更新和修复期,因此保留尽可能多的软件包符合您的利益您的系统尽可能在 Bionic 线上。

#updates directly related to 3.30 or needed by it.
cat upgradable | grep "3.30" | grep --color=NEVER "3.28" > upgradable-3.30 #this got me 78 packages
cat upgradable | grep --color=NEVER -i "nautilus" >> upgradable-3.30 #if you endup choosing to do step 9, don't do this
cat upgradable | grep --color=NEVER -i "gdm" >> upgradable-3.30
cat upgradable | grep --color=NEVER -i "gnome-shell-extension-appindicator" >> upgradable-3.30
cat upgradable | grep --color=NEVER -i "gnome-shell-extension-ubuntu-dock" >> upgradable-3.30
cat upgradable | grep --color=NEVER -i "gvfs" >> upgradable-3.30 
cat upgradable | grep --color=NEVER -i "network-manager" >> upgradable-3.30

#wayland
cat upgradable | grep --color=NEVER -i "wayland" > upgradable-wayland

#x11
cat upgradable | grep --color=NEVER -i "xorg" > upgradable-xorg
cat upgradable | grep --color=NEVER -i "x11" >> upgradable-xorg
Run Code Online (Sandbox Code Playgroud)

不确定以下升级的必要性。我想如果我将文件安装在uprgradable-3.30. 我会说,尝试不使用它们,如果您觉得它不稳定,请安装它们。

cat upgradable | grep --color=NEVER -i "gnome-bluetooth" >> upgradable-3.30 #version change doesn't seem very for this one, maybe keep it on bionic
cat upgradable | grep --color=NEVER -i "gnome-keyring" >> upgradable-3.30 #version change doesn't seem very for this one, maybe keep it on bionic
cat upgradable | grep --color=NEVER -i "gnome" >> upgradable-3.30 
cat upgradable  | grep --color=NEVER -i "gtk" > upgradable-libs
cat upgradable  | grep --color=NEVER -i "glib" >> upgradable-libs
cat upgradable  | grep --color=NEVER -i "gir" >> upgradable-libs
Run Code Online (Sandbox Code Playgroud)

每个upgradable列表应如下所示:

adwaita-icon-theme/cosmic,cosmic 3.30.0-0ubuntu1 all [升级自:3.28.0-1ubuntu1] baobab/cosmic 3.30.0-1 amd64 [升级自:3.28.0-1] cheese/cosmic 3.30.0 -0ubuntu1 amd64 [升级自:3.28.0-1ubuntu1] cheese-common/cosmic,cosmic 3.30.0-0ubuntu1 all [升级自:3.28.0-1ubuntu1] 等等...等等...等等...

您应该最多将 1500 个软件包中的 100 个升级到 250 个

第四步

使用sed,重新格式化在步骤 3 中创建的列表以将其转换为:

adwaita-icon-theme/cosmic,cosmic 3.30.0-0ubuntu1 all [升级自:3.28.0-1ubuntu1] baobab/cosmic 3.30.0-1 amd64 [升级自:3.28.0-1] cheese/cosmic 3.30.0 -0ubuntu1 amd64 [可升级自:3.28.0-1ubuntu1] cheese-common/cosmic,cosmic 3.30.0-0ubuntu1 all [upgradable etc...etc.... etc..

进入这个:

apt-get install --assume-yes adwaita-icon-theme baobab cheese cheese-common 等等...等等...等等...

cat upgradable-3.30             |  sed 's/\[//g'| sed 's/\/cosmic/\[/g'| sed 's/), /\] /g'| sed 's/)/\]/g'| sed -e 's/\[\([^]]*\)\]//g'|sed '/^\s*$/d'|sed "s/^/apt-get install --assume-yes /g" > up-3.30
cat upgradable-wayland             |  sed 's/\[//g'| sed 's/\/cosmic/\[/g'| sed 's/), /\] /g'| sed 's/)/\]/g'| sed -e 's/\[\([^]]*\)\]//g'|sed '/^\s*$/d'|sed "s/^/apt-get install --assume-yes /g" > up-wayland
#again, xorg is optional for those using it, don't upgrade it if you don't use it. You want to keep as many files as possible on the LTS track.
cat upgradable-xorg             |  sed 's/\[//g'| sed 's/\/cosmic/\[/g'| sed 's/), /\] /g'| sed 's/)/\]/g'| sed -e 's/\[\([^]]*\)\]//g'|sed '/^\s*$/d'|sed "s/^/apt-get install --assume-yes /g" > up-xorg
#same for the libs
cat upgradable-libs            |  sed 's/\[//g'| sed 's/\/cosmic/\[/g'| sed 's/), /\] /g'| sed 's/)/\]/g'| sed -e 's/\[\([^]]*\)\]//g'|sed '/^\s*$/d'|sed "s/^/apt-get install --assume-yes /g" > up-libs
Run Code Online (Sandbox Code Playgroud)

使新创建的脚本可执行

chmod +x up-*
Run Code Online (Sandbox Code Playgroud)

第 5 步

开始之前记下时间和日期,我用4的结果更新需要更新的包:

date > upgrade-start
./up-3.30
./up-wayland

#etc...

#Install the Yaru themes (they're not included in 18.04 and are need in 3.30)
apt-get install yaru-theme-*

#as regular user (non-sudo), activate themes via:
gsettings set org.gnome.desktop.interface gtk-theme 'Yaru' #or 'Yaru.dark'
gsettings set org.gnome.desktop.interface cursor-theme 'Yaru'
gsettings set org.gnome.desktop.interface icon-theme 'Yaru'
gsettings set org.gnome.desktop.sound theme-name 'Yaru'
#or use gnome-tweaks to do it


#If you get any errors, run 

apt-get --fix-broken install


date > upgrade-finished

#reboot your machine
reboot
Run Code Online (Sandbox Code Playgroud)

第 6 步

5 中升级的文件不再在 LTS 更新轨道上。这意味着,当第 1 步完成并启动更新时,正常的 Bionic 包将更新,但这些包将始终被视为更新的。此外,在第 5 步中更新或安装的任何依赖项都将处于相同的情况。更新这些包需要创建一个脚本来手动更新它们。

让我们使用apt历史日志文件来确定哪些文件需要手动更新:

cp /var/log/apt/history.log ./cosmics-upgrade.log
Run Code Online (Sandbox Code Playgroud)

执行nano cosmics-upgrade.log并删除之前upgrade-start和之后的所有条目upgrade-finished(在步骤 5 中)。

现在,让我们制作一个脚本,为我们手动升级我们的非 LTS 包:

echo '#!/bin/bash' > update-cosmics
echo 'cp /etc/apt/sources.list.cosmic /etc/apt/sources.list;apt update' >> update-cosmics
Run Code Online (Sandbox Code Playgroud)

下一步将用于sed将日志格式化为我们可以放入update-cosmics文件中的内容(与步骤 4 中的想法相同)。

cat cosmics-upgrade.log | sed 's/([^)]*)//g'| sed 's/,//g'|sed "s/End-Date:/# End-Date:/g"|sed "s/Start-Date:/\n\n\n# Start-Date:/g"|sed "s/Commandline: /# Commandline: /g"|sed 's/Install: /\napt-get install --assume-yes /g'|sed 's/Update: /\napt-get install --assume-yes /g'|sed 's/Remove: /\napt-get remove  --assume-yes /g'|sed 's/Upgrade: /\napt-get install  --assume-yes /g'|sed "s/Requested-By:/\n\n\n# Requested-By:/g" >> update-cosmics
Run Code Online (Sandbox Code Playgroud)

最后,将以下行添加到 的最后update-cosmics

echo 'cp /etc/apt/sources.list.bionic /etc/apt/sources.list;apt update' >> update-cosmics
Run Code Online (Sandbox Code Playgroud)

使脚本可执行并将其移动到 /usr/bin

chmod +x update-cosmics
cp update-cosmics /usr/bin
Run Code Online (Sandbox Code Playgroud)

第 7 步

撤消步骤 1 以允许您的系统正常执行更新。

cp /etc/apt/sources.list.bionic /etc/apt/sources.list;apt update
Run Code Online (Sandbox Code Playgroud)

第 8 步

使用update-cosmics临时切换到宇宙回购和更新软件包的宇宙轨道上。您可以手动运行它或使用 安排它cron

第 9 步:奖励回合:放弃 Nautilus 3.26

这是一个偏好问题:如果您不使用桌面图标,或者如果您想尝试桌面图标扩展,您可以摆脱过时的 Nautilus 3.26,Ubuntu 为改进后的 Nautilus 3.30 分叉。我喜欢 3.30,因为它有更好的触摸屏支持,因为 3.26 的桌面图标实现注入了一个 X11 层(实际上是 XWayland)——即使你正在运行一个 Wayland 会话。桌面图标 Gnome Shell 扩展仅适用于 3.30。它大约完成了 80% 的功能,但不会将 X11 层注入您的 Wayland 会话。

Nautilus 3.30 可以通过从 Debian 的服务器下载 deb 文件获得:

wget http://ftp.us.debian.org/debian/pool/main/n/nautilus/nautilus_3.30.4-1_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/n/nautilus/libnautilus-extension1a_3.30.4-1_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/n/nautilus/nautilus-data_3.30.4-1_all.deb
Run Code Online (Sandbox Code Playgroud)

使用dpkg安装它们:

dpkg -i *nautilus*.deb
Run Code Online (Sandbox Code Playgroud)

可以在此处找到 Nautilus 的未来更新,您必须手动安装它们(单击修改日期两次以查看最新的 deb)。

桌面图标扩展可以在这里找到。

如果您决定坚持使用 Debian 3.30 Nautilus,则必须从update-cosmics我们之前生成的脚本中删除这 3 个软件包。您还必须执行以下操作:

apt-mark hold libnautilus-extension1a nautilus-data nautilus
Run Code Online (Sandbox Code Playgroud)

这避免了 Ubuntu 的更新程序意外地将 Nautilus 从 3.30“升级”回 3.26(是的,它实际上无法判断 3.30 是比 3.26 更高的数字)。

要撤消此操作,您只需执行以下操作:

apt-mark unhold libnautilus-extension1a nautilus-data nautilus
apt-get install nautilus nautilus-data libnautilus-extension1a #and unstill the desktop-icons extension
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的努力和如此出色的答案 (3认同)

Dan*_*aei 6

好吧,我已经成功地使用 gnome 团队提供的 JHBuild 工具在 Ubuntu 18.04 上编译了它!除了一些依赖项和小的修改外,其余的都可以使用默认的仿生安装。

唯一无法编译的模块是ibus-anthy,并且我得到的错误与依赖项无关:

anthygcontext.c:55:5: error: ‘g_type_class_add_private’ is deprecated
Run Code Online (Sandbox Code Playgroud)

我尝试了一些像 gedit 这样的应用程序并且它们可以工作,但是我还没有测试整个系统以查看它是否真的可以运行!

我到家了再汇报……


好消息,编译时出现了一些问题,我现在已经设法解决了……

到目前为止,gnome 3-30 会话完全启动,应用程序运行...我现在面临的唯一问题是文件夹没有任何图标!

如果我设法修复它并且没有新问题出现,我将在此处发布指南!

  • 伟大的!!我很欣赏。 (2认同)
  • 这事有进一步更新吗。我可以在 Ubuntu 18.04 中安装 Gnome 3.30.x (2认同)