Ubuntu软件包管理

Ubuntu下对软件管理工具有:apt,dpkg,tasksel,aptitude等,我们常用的就是前三个工具。下面就介绍这三个工具的用法。

dpkg

在Linux发展之初,安装软件的时候是需要下载以tar.gz结尾的软件源码包,然后对源码包进行编译安装。这是极其麻烦的使用。后来Debian(Ubuntu是基于Debian系统的)开发了dpkg(Debian Package)管理工具来管理软件,软件都是以deb结尾的编译好的二进制包,通过dpkg命令可以安装软件和卸载软件(CentOS中使用rpm包管理器)。

dpkg常用命令

  • 安装软件:dpkg -i
  • 移除软件:dpkg -r
  • 查看某个软件包是否已经安装:dpkg -l
  • 查看某个软件包中都包含哪些文件:dpkg -L
  • 查看系统中的某个文件是由哪个软件包提供的: dpkg -S /path/to/file
  • 查看哪些软件包未完成安装:dpkg -C
  • 重置软件配置文件 dpkg-reconfigure

dpkg是底层的包管理工具,不太常用,最常用的是apt

apt

​ dpkg不够人性化的一点就是不能自动解决依赖问题,比如A软件包依赖于B软件包,那么你先得安装B才能安装A。而且使用dpkg需要将软件下载到本地才能安装。使用apt安装软件时会自动从软件仓库下载软件进行安装,并且apt能自动解决依赖问题,当有依赖的时候它也会自动从软件仓库下载依赖的包进行安装。当然apt底层还是调用dpkg来进行软件安装的。

apt相关文件

  • /etc/apt/source.list 配置软件包来源,也就是上面说的软件仓库
  • /ect/apt/apt.conf.d 存在apt的零碎配置文件
  • /ect/apt/preferences 制定软件包的版本参数
  • /var/cache/apt/archives 存放已下载的软件包
  • /var/cache/apt/archives/partial 存放正在下载的软件包
  • /var/lib/apt/lists 存放已下载的软件包详细信息

软件源

软件源(软件仓库)中存放这大量的软件包,apt会从软件源中下载软件。在/ect/apt/soure.list中可以为apt配置软件源。在这个文件中deb关键字定义已编译的软件包来源,deb-src定义源码包的来源。每一行的格式如下:

deb(或deb-src) 软件源地址  主版本代号  软件仓库1 软件仓库2 软件仓库3 ...

下面时我的source.list中的内容,我是用的时网易的软件源镜像

deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse

Ubuntu的软件仓库被分为4个部分,分别是main,restricted,universemultiverse

  • main:软件包是自由软件,Ubuntu提供及时性,安全性支持****
  • restricted:不是完全的自由软件,但是由于被广泛使用,所以Ubuntu也提供及时性,安全性支持****
  • universe:一般由社区维护的软件,但Ubuntu不提供安全性的支持
  • multiverse:非自由软件,不被Ubuntu认可,不建议使用

apt-get 命令

apt-get 命令一般用于软件包的安装,更新和移除,下面是它的一些常用命令

命令 功能介绍
update 将软件仓库中的软件包列表更新到本地,一般我们在安装软件之前需要执行该操作
upgrade 升级系统中的所有软件包,如果一个软件包在升级时会导致其他已安装的软件包被删除,那么这个软件包将不会被升级
dist-upgrade 该命令时upgrage的升级版,它会尝试去解决安装时出现冲突,比如会删除已安装的软件包,所以慎用
remove 卸载软件包(保留配置文件),同时也会卸载依赖于该软件的包,A依赖于B,卸载B时也会卸载A
install 安装软件包
source 下载源码包
clean 删除本地缓存的所有软件安装包
check 检查是否存在有问题的依赖关系

当然,在使用apt-get时还可以带一些选项,关于apt-get的详细说明可以查看手册man apt-get

安装MySQL数据库
#apt-get install mysql 升级软件
#apt-get update && apt-get upgrade

apt-cache命令

apt-cache一般用于软件包查找和显示软件包信息

当我们安装某个软件包时,但是却不知道具体包名时可以使用apt-cache进行查找

查找mysql数据库安装包的包名
# apt-cache search mysql 显示mysql-server(也就是mysql数据库)的安装包信息
#apt-cache show mysql-server

tasksel

tasksel命令是用来安装“任务”的,任务就是一些软件的组合,比如LAMP这个任务,就是由apache,php,MySQL等软件包组成,tasksel安装任务就是安装一系列的软件包而已。

查看系统提供的任务

# tasksel  --list-tasks
u manual Manual package selection
u dns-server DNS server
u edubuntu-desktop-gnome Edubuntu desktop
u kubuntu-desktop Kubuntu desktop
u kubuntu-full Kubuntu full
i lamp-server LAMP server
u lubuntu-core Lubuntu minimal installation
u lubuntu-desktop Lubuntu Desktop
u mail-server Mail server

上面显示LAMP已经安装

使用tasksel安装和卸载任务

安装LAMP
# tasksel install lamp-server 移除LAMP
# tasksel remove lamp-server

Ubuntu软件包管理器的更多相关文章

  1. Ubuntu 18.04图形化软件包管理器

    1.ubuntu软件这个管理工具提供了一种管理您系统中软件的好方法,通过他可以很直观的查找软件安装很简单,打开终端,输入以下命令:----------------------------------- ...

  2. BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]

    4196: [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1352  Solved: 780[Submit][Stat ...

  3. [BZOJ4196][NOI2015]软件包管理器

    4196: [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1040  Solved: 603[Submit][Stat ...

  4. Mac 系统下类似于 apt-get 的软件包管理器 -- Homebrew

    对于一个习惯了在 Ubuntu 的终端上通过 apt-get 来安装工具软件的我来说,也希望在Mac上找到类似的工具,能很方便的一条命令就能安装所需的软件,而不用手工的去查找下载编译,或者是折腾安装所 ...

  5. BZOJ4196 软件包管理器

    Description Linux用户和OSX用户一定对软件包管理器不会陌生. 通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖 ...

  6. 【NOI2015】软件包管理器

    NOI难得的水题,话说还是T2诶……又学到了线段树的一种新的魔性使用 看sxysxy大神的代码才写出来的,sxysxy_orz 原题: Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包 ...

  7. Ubuntu 软件包管理详解

    原文转载自:http://www.cppblog.com/jb8164/archive/2009/01/09/71583.html Ubuntu 方便宜用,最值得让人称道的便是其安装软件的方式, 一条 ...

  8. BZOJ_4196_[NOI2015]_软件包管理器_(树链剖分)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=4196 给出一棵树,树上点权为0或1.u权值为1的条件是从根节点到u路径上的所有点权值都为1.u ...

  9. Bzoj 4196: [Noi2015]软件包管理器 树链剖分

    4196: [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 721  Solved: 419[Submit][Statu ...

随机推荐

  1. socket网络编程【python】

    转自:http://www.jb51.net/article/19751.htm socket 是网络连接端点. 一.网络知识的一些介绍 socket 是网络连接端点.例如当你的Web浏览器请求www ...

  2. NUC970烧录文件系统

    燒錄U-Boot依照下列步驟將編譯完成的U-Boot燒錄至NAND Flash/SPI Flash/eMMC 中.U-Boot的編譯方法請參考4.3章節.3.11.1 燒錄所需檔案4. u-boot. ...

  3. OpenGL 4.0 GLSL 基础教程概览——VAO和VBO常用操作接口

    (一) OpenGL  4.3 最新渲染管线图 从OpenGL 2.0 到 OpenGL 3.0变化非常大,但从OpenGL 3.0 到OpenGL 4.0 变化不是太大. 着色器程序直接运行在GPU ...

  4. java基础----->TCP和UDP套接字编程

    这里简单的总结一下TCP和UDP编程的写法,另外涉及到HttpUrlConnection的用法 . TCP套接字 一.项目的流程如下说明: .客户输入一行字符,通过其套接字发送到服务器. .服务器从其 ...

  5. synchronized同步方法

    “非线程安全”其实会在多个线程对同一个对象中的实例变量进行并发访问的时候产生,产生的后果是脏读,也就是取到的数据是被更改过的.而“线程安全”就是以获得的实例变量的值是经过同步处理的,不会出现脏读的现象 ...

  6. 如何查找元素对应事件的js代码

    以chrome的firebug为例 1.找到其dom元素,然后右键"break on"-->"subtree modification"等,设置后元素旁边 ...

  7. C++,一些常用的知识点

    用typedef定义数组.指针.结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读 性. C++中是用关键字typedef定义一个标识符来代表一种数据类型,该标识符可以象 ...

  8. oracle日常函数汇总(转载)

    第一篇 著名函数之单值函数 注:N表示数字型,C表示字符型,D表示日期型,[]表示内中参数可被忽略,fmt表示格式 数值类型函数 数值型函数输入数字型参数并返回数值型的值.多数该类函数的返回值支持38 ...

  9. Webservice实践(七)CXF 与Spring结合+tomcat发布

    上一节介绍了如何使用CXF 来发布服务,但是没有介绍使用web 容器来发布,很多项目需要用tomcat 这样的容器来发布.另外本节将介绍CXF 与spring 结合的方法. 一 目标: 1.利用spi ...

  10. python面向对象(类的成员及类方法)

    类的普通成员 字段 方法 属性 类的高级成员 静态字段 静态方法 属性方法   类方法 类成员修饰符 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中, ...