大家都熟悉通过网络upgrade升级Linux系统,这里要介绍的是如何downgrade降级系统。背景情况是这样的:我将系统升级到feisty h3之后,发现libvte-0.15.3有个bug,会影响gnu screen的正常使用。虽然看见bugzilla@gnome已经有了report不过好像还没有啥正式resolv的希望,就只好希望能回滚到edgy的libvte9对应版本。 
  大概过程是这样,首先是修改/etc/apt/sources.list,添加对应的edgy source。这个步骤比较简单,用vim吧feisty源先复制一遍,然后将feisty替换成edgy就可以了。修改完了
  apt-get update
  更新一下数据。这么做的目的,就是希望package database里面同时包括新老两个版本的包版本信息。这里说一下,目前就我的实际经验看,好像也没有什么负面影响,因为apt会尽力把包升级到最新的版本,也就是说,一般情况下,老版本的包数据并不会影响新版本的升级。完成第一步之后,就是请出aptitude这个工具。原来只是简单的认为aptitude只是一个apt的简单壳子,今天深入研究一下,才发现aptitude扩展功能相当的强大,算是等同于dselect吧,用起来比dselect顺手不少。言归正传,首先用
  apt-cache showpkg libvte9
  察看一下可用的package版本。这时候可以看到libvte9的两个版本,一个对应feisty一个对应edgy。看清版本号之后,使用
  aptitude upgrade libvte9=1:0.14.1-0ubuntu1
  这样的写法,强制升级制定版本号的包,设置版本的写法还有其他,可以man一下详细信息。aptitude会自动计算依赖关系,如果一切顺利,libvte9以及相关的包,就会降级到老的edgy版本。做完之后,可以使用
  aptitude hold libvte9
  来保持这个包的状态,避免在以后upgrade过程中被升回feisty的版本。最后要记得的事情,如果想让libvte9重新可以升级,需要unhold这个包。命令行是aptitude keep libvte9,这样就可以继续正常升级libvte9到最新版本了。这里有个比较奇怪的事情,就是我用aptitude unhold libvte9好像没有什么用,到使用aptitude keep libvte9可以清除包的hold标志。另外一个推荐的方法,就是用aptitude upgrade libvte9=xxx强制将包升级到指定版本,这个就和前面说的一样,需要先showpkg看一下可用版本。
  顺便说两句,可以用aptitude search libvte9来察看当前包的状态。aptitude本身就提供一个字符交互界面,如果命令行没有参数,就会进入这个界面,操作也是很直观的。折腾了这么一轮,对deb/apt/aptitude这个debian系的包管理系统了解又进了一层,对这样现代科技真实叹为观止。整个包系统也能像cvs/svn管理代码这样来回翻滚版本,还真是很方便。计划过年无事的时候,稍微深入了解一下deb相关的包系统。

Ubuntu 如何downgrade降级系统的更多相关文章

  1. Ubuntu进不入系统,一直停留在ubuntu图标画面(转)

    Ubuntu进不入系统,一直停留在ubuntu图标画面(转) 在VMware中对Ubuntu进行“关闭电源”后,再次进入,一直停留在ubuntu的图标画面,无法进入系统了!网上也有别的网友碰到这个问题 ...

  2. Ubuntu Vim 复制到系统粘贴板

    /************************************************************************* * Ubuntu Vim 复制到系统粘贴板 * 说 ...

  3. Windows XP硬盘安装Ubuntu 12.04双系统图文详解

    Windows XP硬盘安装Ubuntu 12.04双系统图文详解 Ubuntu 12.04 LTS版本于2012年4月26日发布,趁着五一放假,赶紧在自己的Windows XP的电脑上安装下Ubun ...

  4. Ubuntu和win10双系统Grup无法引导解决方案

    通常我们经常安装双系统, 但是有时候安装完系统无法正常引导, 以下就说明Ubuntu和win10双系统, win10在grub界面不断循环的解决方案 直接在win10启动项目上按e进入编辑模式 在文档 ...

  5. win7 下安装 ubuntu 16.04双系统

    Ubuntu 每年发布两个版本,目前最新正式版版本也升到了 16.04.Ubuntu 16.04 开发代号为"Xenial Xerus",为第六个长期支持(LTS)版本,其主要特色 ...

  6. 沉淀,再出发——安装windows10和ubuntu kylin15.04双系统心得体会

    安装windows10和ubuntu kylin15.04双系统心得体会 一.安装次序      很简单,两种安装次序,"先安装windows后安装linux:先安装linux后安装wind ...

  7. 树莓派Ubuntu 16.04 MATA系统 修改用户文件夹名后,提示configure it with blueman-service

    自从修改了树莓派的Ubuntu 16.04 MATA 系统的 /home/ 下的用户文件夹名后,使用vncserver远程操作,看到桌面每次都提示 Configured directory for i ...

  8. 树莓派3b+ Ubuntu 16.04 MATA系统 ssh远程登陆后修改主机名、用户密码和用户名

    写在前面: 刚刚开始写博客,记录下自己的学习过程,备忘. 最近在使用树莓派做智能小车的开发,使用的是树莓派3b+,安装的是Ubuntu 16.04 MATA 系统,安装系统后需要修改主机名,登陆密码以 ...

  9. ubuntu window 10 双系统

    https://rufus.ie/ U盘制作工具 http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso   ubuntu ...

随机推荐

  1. 强制windows系统重启at命令

    at 02:00 /every:m,t,w,th,f,s,su shutdown -r -f -t 0

  2. Direct I/O,Synchronous I/O的概念

    Direct I/O概念: Direct I/O is a way to avoid entire caching layer in the kernel and send the I/O direc ...

  3. Android -- setWillNotDraw()

    干货 处理onDraw()方法不被执行的解决方法: setWillNotDraw(false); 官方文档的解释: If this view doesn't do any drawing on its ...

  4. Android OpenGL ES和OpenGL一起学(二)------理解Viewport(视口)和坐标系Android OpenGL ES篇(转帖)

      来自:http://www.cnblogs.com/xiaobo68688/archive/2011/12/01/2269985.html   首先我们在屏幕中心显示一个矩形,效果如图: // 代 ...

  5. MFC中调用web api

    使用COM组件来调用,需要catch com error. IXMLHTTPRequestPtr pIXMLHTTPRequest = NULL; BSTR bstrString = NULL; HR ...

  6. OpenGL ES3.0

    到今天,喜欢上了非常酷的图片处理和游戏,经了解,大部分都要使用opengl es,所以准备开始学习,然后深入学习cocos2d,GPUImage.平台为IOS OpenGL ES OpenGL ES ...

  7. JavaScript 从闭包可以做什么开始,将有助于理解闭包

    本文内容 函数内部访问全局变量 函数外部不能直接访问局部变量 函数外部访问局部变量 保护私有成员 持久性 模块化 抽象性 闭包是 JavaScript 的重要特性,非常强大,可用于执行复杂的计算,可并 ...

  8. java报错综合

    1.java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 方法一:这是因为在struts2自带的antlr-2.7.2.jar包的 ...

  9. Office办公 如何给WPS 的文字添加黑框

    双击文本框,弹出的设置对象格式中选择线条颜色和样式即可   要做成虚线框也是可以的   弄完之后字体也可以改大一点   还有一种需要时文本不在黑框的中间位置,比如顶部的某个位置,可以设置文字锁定点是顶 ...

  10. 【转】java 线程的几种状态

    java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常 ...