Ubuntu : apt-get 命令
apt-get 命令是 Ubuntu 系统中的包管理工具,可以用来安装、卸载包,也可以用来升级包,还可以用来把系统升级到新的版本。本文介绍 apt-get 命令的基本用法,演示环境为 Ubuntu 18.04。
基本语法
语法格式:
apt-get [options] command
配置文件:
早期 apt-get 默认的配置文件为 /etc/apt/apt.conf,但是当前的 Ubuntu 系统中默认没有这个文件。
如果 /etc/apt/apt.conf 文件存在,apt-get 仍然会读取它。但现在的设计思路是把配置文件分隔后放置在 /etc/apt/apt.conf.d 目录下,这样更容易管理。
常用选项:
-h, --help // 查看帮助文档
-v, --version // 查看 apt-get 的版本
-y // 在需要确认的场景中回应 yes
-s, --dry-run // 模拟执行并输出结果
-d, --download-only // 把包下载到缓存中而不安装
--only-upgrade // 更新当前版本的包而不是安装新的版本
--no-upgrade // 在执行 install 命令时,不安装已安装包的更新
-q, --quiet // 减少输出
--purge // 配合 remove 命令删除包的配置文件
--reinstall // 重新安装已安装的包或其新版本
常用子命令:
update
update 命令用于重新同步包索引文件,/etc/apt/sources.list 文件中的配置指定了包索引文件的来源。更新了包索引文件后就可以得到可用的包的更新信息和新的包信息。这样我们本地就有了这样的信息:有哪些软件的哪些版本可以从什么地方(源)安装。
update 命令应该总是在安装或升级包之前执行。
install
install 命令用来安装或者升级包。每个包都有一个包名,而不是一个完全限定的文件名(例如,在 Debian 系统中,提供的参数是 apt-utils,而不是 apt-utils_1.6.1_amd64.deb)。被安装的包依赖的包也将被安装。配置文件 /etc/apt/sources.list 中包含了用于获取包的源(服务器)。install 命令还可以用来更新指定的包。
upgrade
upgrade 命令用于从 /etc/apt/sources.list 中列出的源安装系统上当前安装的所有包的最新版本。在任何情况下,当前安装的软件包都不会被删除,尚未安装的软件包也不会被检索和安装。如果当前安装的包的新版本不能在不更改另一个包的安装状态的情况下升级,则将保留当前版本。必须提前执行 update 命令以便 apt-get 知道已安装的包是否有新版本可用。
注意 update 与 upgrade 的区别:
update 是更新软件列表,upgrade 是更新软件。
dist-upgrade
除执行升级功能外,dist-upgrade 还智能地处理与新版本包的依赖关系的变化。apt-get 有一个 "智能" 的冲突解决系统,如果有必要,它将尝试升级最重要的包,以牺牲不那么重要的包为代价。因此,distr -upgrade 命令可能会删除一些包。因此在更新系统中的包时,建议按顺序执行下面的命令:
$ apt-get update
$ apt-get upgrade -y
$ apt-get dis-upgrade -y
remove
remove 与 install 类似,不同之处是删除包而不是安装包。注意,使用 remove 命令删除一个包会将其配置文件留在系统上。
purge
purge 命令与 remove 命令类似,purge 命令在删除包的同时也删除了包的配置文件。
autoremove
autoremove 命令用于删除自动安装的软件包,这些软件包当初是为了满足其他软件包对它的依赖关系而安装的,而现在已经不再需要了。
download
download 命令把指定包的二进制文件下载到当前目录中。注意,是类似 *.deb 这样的包文件。
clean
clean 命令清除在本地库中检索到的包。它从 /var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/ 目录删除除锁文件之外的所有内容。
autoclean
与 clean 命令类似,autoclean 命令清除检索到的包文件的本地存储库。不同之处在于,它只删除不能再下载的软件包文件,而且这些文件在很大程度上是无用的。这允许长时间维护缓存,而不至于大小失控。
source
source 命令下载包的源代码。默认会下载最新可用版本的源代码到当前目录中。
changelog
changelog 命令尝试下载并显示包的更新日志。
常见用法
查看帮助文档
$ apt-get -h
更新包索引文件
$ sudo apt-get update
安装包
$ sudo apt-get install nginx
在需要确认的场景中回应 yes
多数包在安装前都需要与用户交互,在用户确认后才继续安装。而在自动化的任务中是没办法与用户交互的。-y 选项可以在这样的场景中发挥作用,其效果就像是用户确认了安装操作一样:
$ sudo apt-get install -y nginx
安装系统中有更新的包
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get dis-upgrade -y
重新安装已安装的包
如果我们认为一个包工作不正常,可以尝试重新安装它,为 install 命令添加 --reinstall 选项就可以了。另外,如果已安装的包有了更新或新版本,也可以用这个方法把包升级到最新的版本:
$ sudo apt-get install --reinstall curl
更新指定的包
比较奇怪的是更新指定的包居然不是通过 upgrade 命令完成的,而是使用 intall 命令,注意:是 install 命令:
$ sudo apt-get install vim
模拟执行命令并输出结果
应用 -s 选项后命令并不会真正执行,但是会模拟执行并输出结果,比如下面的例子:
$ sudo apt-get update
$ sudo apt-get -s upgrade
添加 -s 选项后,upgrade 命令会输出将要被更新的软件但不会真的执行升级操作。
检查某个包的版本
通过下面的命令可以查看已安装包或即将安装包的版本:
$ sudo apt-get -s install vim
下面是一个已安装包的例子:
下面是一个未安装包的例子:
安装指定版本的包
注意,这里指的是包的版本号:
$ sudo apt-get install tree=1.7.-
把包下载到缓存中而不安装
选项 -d, --download-only 告诉命令只把包下载到缓存中而不安装它们,主要用在把下载包和安装包分开的场景,比如系统默认的自动化更新:
$ sudo apt-get install -d nginx
$ sudo apt-get upgrade -d
$ sudo apt-get dist-upgrade -d
删除包
remove 命令的特点是只删除程序文件,保留相关的配置文件:
$ sudo apt-get remove vim
如果要彻底清除包,可以使用 purge 命令,它会同时删除程序文件及其配置文件:
$ sudo apt-get purge vim
autoremove 命令用于删除自动安装的软件包,这些软件包当初是为了满足其他软件包对它的依赖关系而安装的,而现在已经不再需要了。因此在删除包后执行一下 autoremove 是个不错的选择:
$ sudo apt-get autoremvoe
清除系统中缓存的包安装文件
安装包的过程实际上是先把包安装文件下载到缓存目录,然后执行安装。久而久之系统中会存在大量无用的包安装文件,clean 命令可以清除这些缓存的包安装文件:
$ sudo apt-get clean
clean 命令从 /var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/ 目录删除除锁文件之外的所有内容。
autoclean 命令与 clean 命令类似。不同之处在于,它只删除不能再下载的软件包文件,而且这些文件在很大程度上是无用的。这允许长时间维护缓存,而不至于大小失控:
$ sudo apt-get autoclean
在执行 remove 命令时使用 --purge 选项的效果等同于执行 purge 命令:
$ sudo apt-get remove --purge vim
在执行 install/remove 命令时使用 --autoremove 选项,可以同时删除无用的依赖包,类似在执行完 install/remove 命令后再执行一次 autoremove 命令:
$ sudo apt-get remove --autoremove vim
在执行 install/upgrade 命令时显示更详细的版本信息
通过 -V 选项,可以让 install/upgrade 命令输出包的具体版本,下面是默认的输出:
$ sudo apt-get upgrade -s
下面是添加 -V 选项后的输出:
$ sudo apt-get upgrade -V -s
减少输出
既然可以增加详细的输出信息,也可以灵活地使用 -q 选项来减少输出的信息:
$ sudo apt-get install -q curl
$ sudo apt-get install -q= curl
查看已安装包的更改日志
可以通过 changelog 命令来查看包的更新记录:
$ apt-get changelog tree
下载包的源代码(source code)
apt-get source 命令用来下载包的源代码。要让 apt-get source 命令起作用需要先更新 /etc/apt/sources.list 文件,添加 deb-src 配置,其实就是取消掉原本被注释掉的以 deb-src 开头的行。在 desktop 版的系统中,还可以通过 "Software & Updates" UI 来做同样的事情,在 "Ubuntu Software" 选项卡中选中 "Source code" 项即可:
现在再执行 apt-get source 命令并指定包的名称,就可以下载到该包的源代码了:
$ apt-get source tree
查看 apt-get 的版本
$ apt-get -v
这里显示的居然是 apt,太奇葩了!接着看:
原来 apt-get、apt-cache 和 apt-config 的功能都是由 apt 命令提供的。
查看系统的更新记录
日志文件 /var/log/apt/history.log 记录了系统的更新历史记录。通过它可以查看所有通过 apt 命令执行的安装、升级、删除记录:
$ less /var/log/apt/history.log
参考:
apt-get man page
apt.conf man page
Ubuntu : apt-get 命令的更多相关文章
- Ubuntu apt 常用命令
APT(the Advanced Packaging Tool)是Ubuntu 软件包管理系统的高级界面,Ubuntu 是基于Debian的,APT由几个名字以“apt-”打头的程序组成.apt-g ...
- ubuntu apt常用命令
apt-cache search packagename 搜索包 apt-cache show packagename 获取包的相关信息,如说明.大小.版本等 apt-get install pack ...
- ubuntu apt 主要命令及参数
1. apt-cache search package 搜索安装包 2. apt-cache search all 搜索所有安装包 3. apt-cache show package 显示安装包信息 ...
- ubuntu apt 相关命令
sudo apt-get update 更新源sudo apt-get install package 安装包sudo apt-get remove package 删除包sudo apt-cach ...
- ubuntu apt 命令参数(转)
apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索.安装.升级.卸载软件或操作系统. apt-get update 在修改/etc/apt/sou ...
- Ubuntu : apt 命令
apt 命令是一个功能强大的命令行工具,它不仅可以更新软件包列表索引.执行安装新软件包.升级现有软件包,还能够升级整个 Ubuntu 系统(apt 是 Debian 系操作系统的包管理工具).与更专业 ...
- Ubuntu常用shell命令
目录 ls cd mkdir mv cp scp rm df du chmod chown chgrp head tail screen apt-get Ubuntu常用shell命令 Ubuntu作 ...
- ubuntu下apt-get 命令参数
转载:https://blog.csdn.net/linuxzhouying/article/details/7192612 ubuntu下apt-get 命令参数 常用的APT命令参数 apt-ca ...
- Ubuntu apt update卡在Connecting to security.ubuntu.com解决方法
Ubuntu操作系统运行apt update命令时会卡在Connecting to security.ubuntu.com,搭了梯子也无法解决 尝试了网络上的方法,如: https://blog.cs ...
- ubuntu终端常用命令及solarized配色(护眼)
ubuntu终端常用命令及solarized配色(护眼) ubuntu 终端 命令 1.常用命令 ctrl + l - 清屏 . cLear ctrl + c - 终止命令. ctrl + d ...
随机推荐
- redis 命令的调用过程
参考文献: Redis 是如何处理命令的(客户端) 我是如何通过添加一条命令学习redis源码的 从零开始写redis客户端(deerlet-redis-client)之路--第一个纠结很久的问题,r ...
- scrapy基础知识之 处理Redis里的数据:
数据爬回来了,但是放在Redis里没有处理.之前我们配置文件里面没有定制自己的ITEM_PIPELINES,而是使用了RedisPipeline,所以现在这些数据都被保存在redis的xx:items ...
- .Net Core Api 授权认证
一.所使用到的NuGet: 1. System.IdentityModel.Tokens.Jwt 2. Microsoft.AspNetCore.Authentication.JwtBearer 二. ...
- JS获取display为none的隐藏元素的宽度和高度的解决方案
有时候,我们一进入页面,就需要获取display为none元素的物理尺寸(宽高),或获取display为none元素的子元素的物理尺寸(宽高),本篇文章就如何解决以上问题给出自己的解决方案 <h ...
- spring系列(一):超级经典入门
一 spring是什么 Spring是一个开源框架,它由RodJohnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情. ...
- MyBatis从入门到精通(十三):使用discriminator鉴别器映射
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解鉴别器映射discri ...
- 2017-10271weblogic漏洞exp测试及补丁测试
靶机:weblogic12.1.3.0 战斗机:kali 导弹:burpsuite 1.首先开启kali某端口监听 2.向靶机发送exp 3.查看kali监听 打码保平安~~ 4.打上补丁 5.验证补 ...
- java反射构建对象和方法的反射调用
Java反射技术应用广泛,其能够配置:类的全限定名,方法和参数,完成对象的初始化,设置是反射某些方法.可以增强java的可配置性. 1.1 通过反射构建对象(无参数): 例如我们使用 ReflectS ...
- hdu3416+hdu6582(最短路+最大流)
题意 hdu3416: 给一个图,边不能重复选,问有多少个最短路 hdu6582: 给一个图,问最少删除边权多少的边后,最短路长度增加 分析 边不能重复选这个条件可以想到边权为1,跑最大流,所以我们可 ...
- 动态规划_Apple Catching_POJ-2385
It and ) in his field, each full of apples. Bessie cannot reach the apples when they are on the tree ...