apt dpkg autoremove

目录

1. apt-get autoremove 命令你敢不敢用?

2. apt和dpkg

3.apt命令


1. apt-get autoremove 命令你敢不敢用?

用apt时看到有提示,说有些软件包已经不再被需要,可以使用

autoremove

命令删除,我是一个希望保持系统简洁性的人,当然不希望系统有太多不需要而仍然存在东西,喜欢简洁性也是选择debian的一个原因嘛。看autoremove的命令,当然是自动给删除一些东西,呵呵,还真智能啊。

在使用的时候发现原来不是这么回事,有多次尴尬的经历,让人哭笑不得:
1,第一次使用autoremove,删除了我N多的软件,删除时就看到删除的软件包有gnome-theme,gnome-background,file-roller(当时有点纳闷)等,删除完再进系统,傻眼了。主题,背景,文件管理,网络管理工具等很多常用的工具没了,可是我之前却被告知“这些软件是什么什么自动安装的,已经不被需要了”,所以我才删除了。第一次产生这样的疑问:autoremove是通过什么判定这些软件不被需要了?
2:有第一次还有第二次,用完automove发现我的锐捷没办法认证了,原来是锐捷需要的libpcap0.8这个被告知“不被需要的工具”被autoremove了。我是每天都要用这个包包的……
3:这是最让人郁闷的一次(我觉得自己很笨,都被愚弄了两次,还要用第三次,大概是因为前两次后果不是很严重),就是今天,因为一些原因,切换的windows下几日。再次回到debian,因为用的是testing,有很多软件包没升级了,所以用apt升级软件包,顺便又看到一些软件包不被需要的提示,于是再次很潇洒的apt-get autoremove,这次又是删除了几个软件包。再次开机,debian警告什么守护进程无法启动,还有一些都没办法去描述的问题。这样说吧,在我自己看来我的debian系统在崩溃的边缘了,看来这次严重了。辛苦经营很久,终于让debian播放电影啊,上网阿,什么什么都弄好了,又出现这样的问题,郁闷死了。我只有打算重新安装debian了,这次安装stable的吧。刚刚硬盘安装也没成功,再试。
 

那么,autoremove这到底是怎么回事,为什么让我这么受伤害?

2. apt和dpkg

在吐槽我使用autoremove命令之前,先讲一下咱们的apt和dpkg

1)区别:

    a).

    两者的区别是dpkg绕过apt包管理数据库对软件包进行操作,所以你用dpkg安装过的软件包用apt可以再安装一遍,系统不知道之前安装过了,将会覆盖之前dpkg的安装。

    b).

        apt是会解决和安装模块的依赖问题,并会咨询软件仓库,是在线安装。

        dpkg只能安装本地的deb文件,不会关心Ubuntu的软件仓库内的软件,不会解决模块的依赖关系。

2)常用命令:

    安装:

    dpkg -i package.deb //本地安装

    apt-get install package //在线安装

   aptitude install package //同上

    

    卸载:

    dpkg -r package //删除软件

    apt-get remove package //同上

    aptitude remove package //同上

    dpkg -P package //删除软件和配置文件

    apt-get remove package --purge //同上

    aptitude purge package //同上

 

    remove – 卸载软件包
    autoremove – 卸载所有自动安装且不再使用的软件包

    purge – 卸载并清除软件包的配置

    

    单独使用 apt-get autoremove天知道会发生什么,我有一次就傻傻地用了一次,然后就把我一直在用的搜狗输入法和昨天安装的pycharm给卸载了;还可以apt-get autoremove package,它会删除和该包相关的包,我没有看文档,具体也不太清楚,但是我是不敢再用了。

    一.linux下安装包,为什么会显示需要安装有依赖关系的包

            1.我们清楚的知道,linux是的包是开源的,所以这些包的编辑者大多是一些程序员大神。

            2.所谓的包实际上就是执行某种功能的代码。

            3.一个要完成复杂功能的代码,肯定包含许许多多小功能的代码。

            4.恰好之前有人写过完成你的复杂功能里面需要的小功能的代码。那你是用还是不用?程序员是一定会用的。

            5.所以这些被依赖的包就是你这个包里需要用到,但是未写入,就像是程序员在这告诉你,去,去调用某个包。

       二.APT包管理工具

            1.在这里我们要先引入一个概念,即apt包管理工具。什么是APT包管理工具?

               1.1.ubuntu上用与Debian一样的Deb软件包来管理软件,而apt-get是ubuntu的Deb软件包管理工具。即我们所谓的APT包管理工具。

            2.那么问题来了,这个APT包管理工具是干嘛用的?

               2.1.apt-get会从ubuntu的软件源库里调用安装你需要安装的包,而且,系统可以自动分析和解决依赖关系,并且将所依赖的软件都搞定。这个东西是不是很牛逼!按理说这样的话所有的问题不都解决了吗?原理是这样子的,可是坑爹的是,系统软件源库本身的源里面的包不太多,特别是针对于我们这些搞生信的人所需的包。

               2.2.那么我们在系统的软件源库里面加几个丰富的源不就行了。本站的paincupid大神,在他的文章[Ubuntu16.04几个国内更新源]中提到了加源的方法和一些源。http://blog.csdn.net/paincupid/article/details/52895676

       其实  ,写到这里,我们已经解释了为什么可以利用#sudo apt-get install为什么可以直接安装,而不许要下载,因为相关信息都是由APT包管理工具从系统的软件源库里面调用的,包括包的依赖性什么的,他都捎带手解决了。但是需要注意的是,这样的安装方法,一般会先敲个#sudo apt-get update,让系统更新一下库里面的软件资源。
                   3.#sudo dpkg -i 文件.deb与 #sudo gdebi 文件.deb

               3.1 我们在上面提到了用#sudo apt-get install来从库里面调用资源,但很还是有点漏洞的,万一你的源里面都没有,你也不能不下啊,所以,你就只能手动下载下来,然后手动安装。这时候在敲下这两个命令。就能安装了。这一种方法采用本地已经下载好的软件包,并以此为基础,分析其以依赖关系,然后从软件源上下载相应的包来解决依赖(这句话来自本站的wenwenxiong大神)。

      写道这里,我们其实提出了解决软件包安装依赖性问题的主流方法,说到底还是APT包管理工具对系统软件源的调取,所以核心还是你要有个资源丰富的源。

3.apt命令

       好了,在文章的最后我记录了一些使用的APT命令(来自本站的苏州-微尘大神)

1.apt-cache search package #搜索包

2.apt-cache show package #获取包的相关信息,如说明,大小,版本。

3.apt-cache depends package #了解使用依赖

4.apt-get rdepends package #查看该包被那些包依赖

5.sudo apt-get install package #安装包

6.sudo apt-get install package=version #安装制定版本的包

7.sudo apt-get install package --reinstall #重新安装包

8.sudo apt-get -f install #修复安装(17.10.31,之前小看这个东东了,这个是启动APT自动安装依赖关系的一个功能键,换句话说,你更新完源之后,如果APT还不能自行解决依赖关系,就可以执行一下这个命令)

9.apt-get source package #下载该包的源代码

10.sudo apt-get remove package #删除包

11.sudo apt-get remove package --purge #删除包,包括删除配置文件等

12.sudo apt-get update #更新apt软件源数据库

13.sudo apt-get upgrade #更新以安装的包

14.sudo apt-get dist-upgrade #升级系统

15.sudo apt-get dselect-upgrade #使用dselect升级

16.sudo apt-get build-dep package #安装相关的编译环境

17.sudo apt-get clean & sudo apt-get autoclean #清理无用的包

18.sudo apt-get check #检查是否有损坏的依赖
 

你可能感兴趣的:(Linux,apt,dpkg,autoremove)