这个教学的应用前景是为了消除我们论坛现在的一种很不负责任的说法:
更新解决!
因为 openSUSE 开发的哲学是 upstream fisrt,来看我们帖子的是整个互联网上的广大 Linux 众,有些人可能根据你的上下文基本可以断定你们遇到的就是同一个问题,然后翻了好几页,最后发现这样的字符串:更新解决!
他们可能很囧,「卧槽老子不是 openSUSE 啊怎么装你的更新啊!」
于是我们需要更细致的工作,因为即使我用的 openSUSE,我的软件和你装的软件也是不同的,而没装那个软件是不会收到那个软件的更新的,于是需要一个解决问题后的 afterwork:
告诉大家究竟是哪个更新的什么内容解决了问题。
===========================================================
先来点简单的开胃菜:
假如我们装了二十个最近的更新,而我们又忘了这些都是什么的更新,只能记住它们大概的安装时间,这很常见吧。
首先,openSUSE 的更新都是以 drpm 的形式分发的,目标是为了减少下载流量。而 drpm 其实是一种补丁(patch)。
于是,第一个命令叫做 zypper patches
$ su
$ zypper patches
软件名录 | 名称 | Version | 类别 | 状态
-----------------------------+-------------------+---------+-------------+--------
openSUSE-12.3-Update | openSUSE-2013-163 | 1 | recommended | 已安装
openSUSE-12.3-Update | openSUSE-2013-673 | 1 | recommended | 需要
openSUSE-12.3-Update | openSUSE-2013-672 | 1 | recommended | 不适用
刷更新的时候,别的软件源可以不用开启,但 repo-oss repo-non-oss repo-update repo-update-non-oss 这四个一定要开启。具体可以用 zypper lr 查看你系统中的软件源,zypper mr -da 禁用全部,zypper mr -e 开启你需要的软件源。
我列出了三种不同的补丁状态,「已安装」、「需要」、「不适用」。
- 不适用 很简单,这个更新补丁不会装到你电脑上去,也不会提示你它的存在。比如你没装 apache2,那所有的 apache2 更新补丁对你来说都是不适用,直到你装了 apache2,它们会像雨后春笋一样纷纷跳出来。
- 需要 这是你的系统需要安装,但是还没有安装的补丁。如果是准备安装更新的话需要看这个状态。
- 已安装 我们要看的是这个状态,因为更新解决了问题,那么解决问题的东西一定在已安装的更新里面。
于是我们来过滤下:
$ su
$ zypper patches | grep " 已安装"
openSUSE-12.3-Update | openSUSE-2013-629 | 1 | recommended | 已安装
openSUSE-12.3-Update | openSUSE-2013-630 | 1 | recommended | 已安装
openSUSE-12.3-Update | openSUSE-2013-631 | 1 | recommended | 已安装
openSUSE-12.3-Update | openSUSE-2013-645 | 1 | security | 已安装
openSUSE-12.3-Update | openSUSE-2013-649 | 1 | recommended | 已安装
openSUSE-12.3-Update | openSUSE-2013-650 | 1 | security | 已安装
openSUSE-12.3-Update | openSUSE-2013-651 | 1 | security | 已安装
openSUSE-12.3-Update | openSUSE-2013-652 | 1 | security | 已安装
openSUSE-12.3-Update | openSUSE-2013-652 | 1 | security | 已安装
openSUSE-12.3-Update | openSUSE-2013-675 | 1 | recommended | 已安装
现在缺的是一个,更新时间!
但是这个完全不需要忧虑,因为 openSUSE-2013- 675 这个编号是根据时间排列的,距离你的时间越近,编号越大。
于是上面那个列表可以看作是按照时间先后排序的已安装更新列表了。
下面是第二个命令:zypper info -t patch
$ zypper info -t patch openSUSE-2013-675
补丁 openSUSE-2013-675 的信息:
-------------------------------
名称:openSUSE-2013-675
版本:1
架构:noarch
厂商:maint-coord@suse.de
状态: 已安装
类别: recommended
创建于: 2013 年 09 月 02 日 星期一 22 时 44 分 04 秒
需要重启: 否
需要重启软件包管理器: 否
交互的:否
摘要:libQtWebKit4: Rebuild with debuginfo
描述:
This update fixes the following issue with libQtWebKit4:
- bnc#835317: Rebuild libQtWebKit4 with debuginfo
提供:
patch:openSUSE-2013-675 == 1
冲突:
libQtWebKit-devel.i586 < 4.8.4+2.2.0-3.5.1
libQtWebKit4-32bit.x86_64 < 4.8.4+2.2.0-3.5.1
libQtWebKit4.i586 < 4.8.4+2.2.0-3.5.1
srcpackage:libQtWebKit4 < 4.8.4+2.2.0-3.5.1
libQtWebKit4-debuginfo-32bit.x86_64 < 4.8.4+2.2.0-3.5.1
libQtWebKit4-debuginfo.i586 < 4.8.4+2.2.0-3.5.1
libQtWebKit4-debugsource.i586 < 4.8.4+2.2.0-3.5.1
libQtWebKit-devel.x86_64 < 4.8.4+2.2.0-3.5.1
libQtWebKit4.x86_64 < 4.8.4+2.2.0-3.5.1
libQtWebKit4-debuginfo.x86_64 < 4.8.4+2.2.0-3.5.1
libQtWebKit4-debugsource.x86_64 < 4.8.4+2.2.0-3.5.1
我们需要的是这个:
描述:
This update fixes the following issue with libQtWebKit4:
- bnc#835317: Rebuild libQtWebKit4 with debuginfo
从下往上一个个看过来就行了。你只要能记住你上次大概做了几个更新就行:
- 如果使用 Apper 的话,很简单,它全屏时候不滚动的话,一屏幕是 20 个更新
- 如果使用 zypper up 的话,命令行一行大概是 6~7 个更新(不管全屏不全屏),如果你再对比如有几个软件包的名字是比较像的,比如 xxx 和 xxx-lang,有印象的话,那就更好了,因为:
openSUSE 的更新补丁是论「类」,而不是论「软件包个数」的,比如一个 kde 4.11 更新只有一个 openSUSE-2013-xxx 的补丁,但是可以升级 400 多个软件包。
再根据你的一些肉眼推断,比如我是 USB 的问题,那肯定不可能是这个 libQtWebKit4 的更新解决的,因为 webkit 是浏览器用的东西啊。这样范围就更小了。
最后你就能非常自信地给出断言:就是 bnc#835317 修复了我的问题。
然后更碉堡的话,你还可以贴个链接,格式是这样的:
bugzilla.novell.com/show_bug.cgi? id=<bugzilla_number>
就是那个 835317。