ubuntu软件安装
apt和apt-get
在ubuntu安装软件时常用命令apt-get install xxx命令来安装。从字面上理解install即是安装的意思,get即获取的意思,apt此处理解为工具名称,全称 Advanced Packaging Tool(APT)字义是先进的包装工具,但在linux系统中应该理解为软件包管理工具(个人理解)。那么这个命令的含义就是利用apt这一工具获取并安装用户指定的软件。同样apt-get remove xxx则可以理解为利用apt工具获取并删除指定软件。
软件的获取方式是从指定的镜像源中获取,源镜像地址指定方式:
#用于打开指定软件源的文件
sudo gedit /etc/apt/sources.list
#用于更新软件源
sudo apt-get update
国内常用的开源源镜像网站:
阿里云开源镜像:http://mirrors.aliyun.com/
中科大开源镜像:http://mirrors.ustc.com/
清华大学开源镜像:https://mirror.tuna.tsinghua.edu.cn/
华中科技大学开源镜像:http://mirror.hust.edu.cn/
对于未安装的软件,apt指令直接会通过指定的源地址,从对应的网站中获取;对于已安装的软件,apt指令则会搜索系统内的软件列表,来进行定位。
对于早期的教程,常用的指令是apt-get而在近期的教程里,更多的则是使用apt指令。这两个指令有一定的关系,却又不尽相同。简单说,apt是apt-get指令的升级版。
在整个apt工具箱里,定义了一些基础命令,如apt-get、apt-cache、apt-config 等。这些命令都比较底层又包含众多功能。其中最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条基础命令当中。
而命令过于分散时也存在缺点,即会增加操作的复杂性,apt 命令的引入就是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。
简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。
但aptb并不能做到完全向下兼容apt-get。这就是为何这两个指令并存的原因。
常用的apt指令:
apt 命令 | apt-get命令 | 命令的功能 |
---|---|---|
apt install | apt-get install | 安装软件包 |
apt remove | apt-get remove | 移除软件包 |
apt purge | apt-get purge | 移除软件包及配置文件 |
apt update | apt-get update | 更新镜像源地址 |
apt upgrade | apt-get upgrade | 升级所有可升级的软件包 |
apt autoremove | apt-get autoremove | 自动删除不需要的软件包 |
apt full-upgrade | apt-get dist-upgrade | 在升级软件包时自动处理依赖关系 |
apt search | apt-cache search | 搜索应用程序 |
dpkg
dpkg 是Debian package的简写,为”Debian“ 操作系统专门开发的套件管理系统,用于软件的安装,更新和移除。但与apt不同的是,dpkg是针对现有的已经下载了的安装包进行安装,而apt并不直接操作 deb 安装包文件,而是从 /etc/apt/sources.list 配置文件中定义的软件镜像源里下载软件包并安装。
安装软件:dpkg -i <.deb file name>
删除软件包(保留其配置信息 ):dpkg -r <.deb file name>
删除一个包(包括配置信息):dpkg -P <.deb file name>
查找只有部分安装的软件包信息:dpkg -C package-name
搜索Deb包:dpkg -l package-name
源码安装
一般源码安装的流程是:
./configure
make
make install
./configure是为了检测目标安装平台的特征,并且检查依赖的软件包是否可用或者是否缺少依赖软件包,configure事实上是个脚本,最终的目的是生成Makefile。
如果./configure没报错,就会生成一个Makefile,make指令就是根据Makefile编译这个源码包。
编译完之后如果没有报错,就会生成可执行文件,make install指令就是将可执行文件放到指定目录并配置环境变量来允许用户在任何目录下使用这个软件。
理想情况是这样的。但往往现实不会理想,
./configure报错:一般是缺少依赖或者依赖文件的版本不匹配。
make报错:依赖库包含等内部的bug.
make install 报错,大多是没有权限,即需要加sudo,问题多出在软件卸载的时候, make uninstall指令仅仅卸载可执行文件,其他配置文件和依赖文件不作处理,搞到目录混乱。