在gnome桌面显示的 “Software Updates Available” 来自那里?
1. 消息来自哪里?
- 其实gnome里面有个小应用, 叫”gnome-software” 它来给我们发了这个通知, 里面有段这样的信息.
1
2title = _("Software Updates Available");
body = _("Important OS and application updates are ready to be installed");2. “gnome-software”又是怎么跑起来的?
- 我们可以通过xdg的配置,配置应用跟随桌面环境自动启动. 例如 gnome,kde,xfce,lxde 等都可以支持xdg标准. 应用安装好后, 将配置文件放在”/etc/xdg/autostart/“下面. 比如这里的”gnome-software”, 对应的配置文件”gnome-software-service.desktop”
1
2
3
4
5
6[Desktop Entry]
Type=Application
Name=GNOME Software
Exec=/usr/bin/gnome-software --gapplication-service
OnlyShowIn=GNOME;Unity;
NoDisplay=true3. 消息怎么输出,根源在那里?
- 这个小应用以”yum.repos.d”作为参考, 通过一系列函数,定时器对当前系统安装的包的metadata信息与repos检测到的作对比. 下列的一些函数被调用了.
1
2
3
4
5
6gs_update_monitor_init (GsUpdateMonitor *monitor)
g_timeout_add_seconds (60, check_updates_on_startup_cb, monitor);
check_updates_on_startup_cb (gpointer data)
restart_updates_check (monitor);
check_updates (monitor);
g_timeout_add_seconds (3600, check_hourly_cb,monitor);4. 用什么样的区间作检查呢?
- 通过GsUpdateMonitor结构, 里面有检查区间成员; 开机之后,通过调用g_timeout_add_seconds (60, check_updates_on_startup_cb, monitor), 60秒做第一次检查; 之后每个小时,之后每天
1
2
3guint check_startup_id;
guint check_hourly_id;
guint check_daily_id;