因为我使用的homestead,所以自带的有这个工具,大家使用的时候,还是需要先安装的,安装的教程,等我的私人电脑来了,我再补写一篇分享,先分享一篇安装apt-get的文章 : CentOS 下安装apt-get

背景

今天看怎么再linux上安装git时候,可以直接使用命令

sudo apt-get install git

然后我就好奇这个apt-get是什么工具,然后我就去百度了一下,

apt-get简介

apt-get,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统,是一款适用于Unix和Linux系统的应用程序管理器

apt-get常用命令

apt-get install
一键安装软件包,与源码安装不同的是,这个指令会自动检测并安装依赖,而且用apt-get安装的包都是成熟的软件包,基本不存在安装包有严重bug或者文件缺失的情况。

sudo apt-get install -y
这里主要将的就是-y选项,添加这个选项就相当于不需要重复地确认安装

sudo apt-get install -q
即-quiet,静默安装,当然也不是完全静默,会将低等级的log信息屏蔽。

sudo apt-get remove
既然有安装就会有卸载,remove指令就是卸载,值得注意的是,remove仅仅卸载软件,但是并不卸载配置文件

sudo apt-get purge
卸载指令,同时卸载相应的配置文件

sudo apt-get autoremove
在卸载软件的时候同时卸载那些当初作为依赖但是现在并不需要的包。

看起来非常完美的指令,但是博主建议慎用!!这条指令很可能将你要用的依赖包同时卸载,有时候你的安装包并没有通过apt-get指令来管理,apt-get管理工具不会加入这些包的信息,所以在检索包的依赖关系时可能出问题.
又或者是另一种情况:举个例子:在安装某个包时,这个包依赖git,但是git并非你主动下载的,而是作为依赖下载的,包安装完之后系统可能就会提示git作为依赖不再需要使用,它并不知道你是不是正在使用这个软件包。

apt-get update
将所有包的来源更新,也就是提取最新的包信息,这一条我们经常使用到。

apt-get upgrade
这条指令一般执行在apt-get update之后,它的作用是将系统中旧版本的包升级成最新的,慎用!
因为在linux下,由于大部分为非商业软件,所以稳定性并没有得到很好的验证,升级到最新版本需要十分慎重!

apt-get执行安装包原理
  • 安装的软件从哪里来?

所有的deb包由官方统一管理,那为什么我们能定位到这些软件包呢?这里就涉及到一个软件源的概念,在/etc/apt/目录下有一个sources.list文件,安装的时候也会用到这个文件,这里就直接看homestead配置好的文件内容:

cat /etc/apt/sources.list //查看文件内容

在这里插入图片描述
由于条目太多,这里只贴出一部分。可以看出来的是,这里都是一些资源网站,软件包资源当然就是出自这里。

所以当你指定安装某个扩展的时候,在 /etc/apt/sources.list 添加相应的资源网站,知道了这个,就可以直接在文件中添加源,但是要记住linux下最基本的一个习惯:操作系统文件时先备份

  • 安装前,都做了什么?

sudo apt-get install diodon // 安装某个包

当输入命令执行时,会打印一些log

Reading package lists... Done     #从sources.list文件中是检索可用的源中是否有这个diodon包
Building dependency tree   # 生成软件依赖树,将需要的依赖包提前列出来,在安装所需软件之前进行安装
Reading state information... Done   #读取状态信息
The following additional packages will be installed: #将安装以下附加软件包
  libappindicator3-1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libdee-1.0-4 libdiodon0 libindicator3-7
  libpeas-1.0-0 libpeas-common libxapian30 libzeitgeist-2.0-0 zeitgeist-core
Suggested packages: #建议包
  indicator-application xapian-tools zeitgeist-datahub
The following NEW packages will be installed: #将安装以下新包
  diodon libappindicator3-1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libdee-1.0-4 libdiodon0
  libindicator3-7 libpeas-1.0-0 libpeas-common libxapian30 libzeitgeist-2.0-0 zeitgeist-core
0 upgraded, 12 newly installed, 0 to remove and 252 not upgraded.
Need to get 1,242 kB of archives. 
After this operation, 5,656 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

在这里插入图片描述

  • 遇到问题

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

解决方法:
这种问题的原因是apt-get被占用,无法再次使用apt-get命令操作。解决办法分为两种:
1、在终端输入,ps -ef | grep “apt-get”,这个指令找出占用apt-get应用的进程,然后用sudo kill -9 PID强制结束进程

2、但是也有可能找不到这个占用的进程,很可能你在上一次安装操作的时候意外断电,没有正常退出导致的,这个时候需要做的操作就是强制删除以下文件就可以:
sudo rm /var/cache/apt/archives/lock /var/lib/dpkg/lock
从这里可以看出,其实就是删除两个锁文件;
系统在执行apt-get指令安装时,会在/var/lib/dpkg/和/var/cache/apt/archives/下生成lock文件,当指令正常退出时,系统会删除这个lock文件。

想了解具体的安装时lock文件的事情,可以再安装需要用户输入确认时,不点击,打开两外一个终端,然后使用命令cat /proc/locks 查看系统中被锁定的文件,你会发现,是会产生lock文件的,所以异常退出时,还未来得及删除锁文件,这时候直接将文件删除,锁的状态也是可以释放的,然后重新操作就可以

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐