在将 Chromium 从 34 升级到 35 后,Chromium 的可用性开始下降。因此,我决定降级 Chromium。幸运的是,之前版本的 Chromium 仍在我的磁盘上,因此降级(在 ArchLinux 中)非常简单:
sudo pacman -U /var/cache/pacman/pkg/chromium-34.0.1847.137-1-x86_64.pkg.tar.xz
运行上述命令后,Chromium 确实启动了,但不幸的是,我在启动时一直被以下消息困扰:
您的配置文件来自较新版本的 Google Chrome,因此无法使用。某些功能可能不可用。请指定其他配置文件目录或使用较新版本的 Chrome。
摆脱这个消息的一种方法是删除~/.config/chromium/Default/Web Data
,但这也导致我的搜索引擎关键词消失。
如何在不丢失任何数据的情况下降级 Chromium?
注意:我使用的是 Linux,但这个问题与平台无关。欢迎从非 Linux 操作系统(例如 Windows)的角度来回答。
答案1
注意:在使用 Chrome 之前,请关闭它并备份您的个人资料!
Web Data
是一个 SQLite 数据库,所以我使用了sqlite3 程序打开数据库。
“Web 数据”数据库的当前版本是什么?(运行
SELECT * from meta;
)sqlite> 从元中选择*; 默认搜索提供商 ID|34 最新兼容版本|55 版本|55 内置关键字版本|70
上一个输出中突出显示的行指的是 Chromium 中的内部数据库版本号。对于每个版本,您都可以在以下位置找到相关的迁移代码:Chromium 的源代码(autofill_table.cc)。具体来说,看看
AutofillTable::MigrateToVersion
方法。由于我的数据库版本是 55,所以我查看了“案件 55”案例55: *更新兼容版本 = 真; 返回MigrateToVersion55MergeAutofillDatesTable();
找到这个方法后,我几乎准备编写一个 SQLite 查询来逆转迁移。
利用上一步中的知识(以及另一台计算机上不同表的原始模式),我构建了以下查询(将查询复制粘贴到
sqlite3
):
注意:此查询专门用于将 Chrome 35 降级到 34!CREATE TABLE autofill_v54 ( name VARCHAR, value VARCHAR, value_lower VARCHAR, pair_id INTEGER PRIMARY KEY, count INTEGER DEFAULT 1); CREATE TABLE autofill_dates ( pair_id INTEGER DEFAULT 0, date_created INTEGER DEFAULT 0); INSERT INTO autofill_v54 ( name, value, value_lower, count ) SELECT name, value, value_lower, count FROM autofill; INSERT INTO autofill_dates ( pair_id, date_created ) SELECT pair_id, date_created FROM autofill_v54 a54 JOIN autofill a USING (name, value); DROP TABLE autofill; ALTER TABLE autofill_v54 RENAME TO autofill; CREATE INDEX autofill_name ON autofill (name); CREATE INDEX autofill_name_value_lower ON autofill (name, value_lower);
恢复迁移后,您可以安全地降低数据库版本:
UPDATE meta SET value='54' WHERE key='version' OR key = 'last_compatible_version';
使用以下方法关闭数据库
.quit
完成所有这些步骤后,我启动了 Chromium,没有烦人的弹出窗口,并且所有配置文件数据仍然完好无损!
答案2
我确认:使用 sqlite3 的解决方案运行良好!
我是一个 Ubuntu 用户 (14.04),但是我尝试了这种方法,不是使用 chromium,而是使用 google-chrome-stable。
我已将 chrome 从 35 降级到 34,因为在 35 版本中无法运行 java 小程序。:-(
sudo apt-get purge google-chrome-stable
sudo rm -f /etc/apt/sources.list.d/google-chrome.list*
sudo apt-get update
cd ~/Downloads
wget http://95.31.35.30/chrome/pool/main/g/google-chrome-stable/google-chrome-stable_34.0.1847.137-1_amd64.deb
删除此源后,google-chrome 将不再自动更新。我已使用 gdebi 从 nautilus 安装了版本 34。您可以使用以下命令安装 gdebi:
sudo apt-get install gdebi
问题从这里开始...消息 ='您的配置文件无法使用,因为它来自较新的...'
您可以像这样安装 sqlite3:
sudo apt-get install sqlite3
要执行上述解决方案(由 Rob W 提供),请执行以下操作:
cd ~/.config/google-chrome/Default
sqlite3 Web\ Data
之后,只需复制/粘贴 Rob W. 给出的步骤 1、3、4、5。
希望这会有所帮助。;-)