问题:当我在Linux上安装或更新软件包时,我想看看这个软件包有哪些改变(添加了什么新特性、修复了什么bug等),然后再决定安不安装这个软件包。那么问题来了,怎么查看Deb/RPM(Debian, Ubuntu, CentOS, Fedora)软件包的changelog呢?
当一个软件或库使用Deb或RPM打包发布时,包中包含一些元数据(metadata)文件。其中有一个就是更新日志,里面按顺序记录了每次软件更新的changelog。
下面使用几个例子说明:
基于Debian的发型版(Deb包)
在基于Debian的发型版上有几种方法查看软件包更新日志(安装的或没安装的)。
方法一:apt-get 或 aptitude
使用apt-get,使用命令如下:
1 |
$ sudo apt-get changelog <软件包的名字> | more |
aptitude是另一个包管理工具,它使用的选项和apt-get一样。aptitude处理Ubuntu都是预装的。
1 2 |
$ sudo apt-get install aptitude $ aptitude changelog <软件包的名字> | more |
aptitude的优点是支持基于ncurses的用户图形接口。打开:
1 |
$ aptitude-curses |
方法二:Synaptic
如果你想使用带图形界面的工具,可以使用Synaptic, Deb包的图形管理工具。安装
1 |
$ sudo apt-get install synaptic |
方法三:/usr/share/doc
对于已安装的软件包,可以查看/usr/share/doc/中的文档,例如:
1 |
$ zless /usr/share/doc/<软件包的名字>/changelog.Debian.gz |
1 |
$ zless /usr/share/doc/python/changelog.Debian.gz |
基于Red Hat的发型版(RPM包)
在基于Red Hat的发型版上有几种方法查看软件包更新日志(安装的或没安装的)。
方法一:rpm命令
对于安装的包,使用rpm命令:
1 |
$ sudo rpm -q --changelog <软件包的名字> | more |
方法二:repoquery
如果软件包还没安装,想要查看远程仓库中软件包,可以使用repoquery命令。
安装repoquery:
1 |
$ sudo yum install yum-utils |
查看更新日志:
1 |
$ repoquery --changelog <软件包的名字> | more |
方法三:yum-changelog
安装yum-changelog:
1 |
$ sudo yum install yum-changelog |
查看更新日志:
1 |
$ yum changelog <软件包的名字> |
查看最近的5条记录:
1 |
$ yum changelog 5 <软件包的名字> |
指定从某个日期开始的更新日志:
1 |
$ yum changelog "2015-05-05" <软件包的名字> |
方法四:dnf,针对Fedora
1 |
$ dnf updateinfo info | more |