本文主要是介绍Linux软件安装管理的三种方式——源码安装/deb/rpm/yum/apt,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Linux软件安装管理的三种方Linux软件安装管理的三种方式
Linux下常规的安装方式有三种,源码安装,二进制安装,在线使用yum和apt工具安装,三种方式各有优劣。下面逐步讲解Debian和RedHat系列的三种安装方式。
一、源码安装
源码,即程序软件的源代码(一般也叫Tarball,即将软件的源码以tar打包后再压缩的资源包)。源代码分发提供了软件所有程序源代码,需要用户自己编译成可执行的二进制代码并进行安装,根据应用环境的不同进行编译安装。
特点:
- 可以获取最新代码,及时修复bug
- 配置灵活,可以随意去掉或保留某些功能/模块
- 适应多种硬件/操作系统平台及编译环境
- 难度较大
1. *.tar.gz/*.tgz、*.bz2形式的源代码软件包
命令步骤:
cd /usr/local/src/
wget https://www.sudo.ws/dist/sudo-1.9.5p2.tar.gz
sha256sum sudo-1.9.5p2.tar.gz //验证sha256sum码(有的提供md5码),与官方对照,确定是否被篡改;
tar -zxvf sudo-1.9.5p2.tar.gz //解压,*.bz2包则执行 tar -jxvf *.bz2
cd sudo-1.9.5p2/ && ./configure #检测操作环境并生成makefile文件
make && make install #编译安装
不指定前缀,安装后
- 可执行文件默认放在/usr/local/bin
- 库文件默认放在/usr/local/lib
- 配置文件默认放在/usr/local/etc
- 其它的资源文件放在/usr/local/share
卸载:
make uninstall
或
手动删除软件在上述目录中的文件
注意事项:
- 建议解压后先阅读说明文件,可以了解安装有哪些需求,有必要时还需改动编译配置
- 为了便于删除移植,建议
./configure --prefix=目录名
,指定软件将要安装到目标路径,这样最后删除或者移动目录名,即可操作便捷干净
2. *.src.rpm形式的源代码软件包
需要先将源代码编译生成rpm二进制包,再以rpm二进制包的形式安装(参二2)
rpm -rebuild *.src.rpm
:编译源文件,并在/usr/src/dist/RPMS下生成二进制的rpm包
卸载方式参考rpm二进制安装
注意事项:
- 如果缺少编译软件
gcc,make, configure
,则可以通过yum/apt
在线安装 - 安装的同时,一定要想好如何卸载干净
计算机编译的原理
从源码安装到二进制包安装
虽然使用源码可以具有定制化设置,但是对于不同的
Linux distribution
的发行商,增加了软件管理的负担,严重影响linux
平台上软件的发行和推广。
为了解决这个问题,厂商在他们的系统上已为用户编译好了相关软件,然后将编译好可执行的软件直接发布给用户安装。
不同的linux
发行版使用不同的打包形式,不过一般分为两个包管理阵营:Debian 的”.deb“
,和Red Hat的”.rpm”
。也有一些重要的例外,比方说 Gentoo, Slackware,和 Foresight。
接下来介绍包安装的两种方式
二、二进制包安装
二进制包,如 Red Hat发行版的.rpm包,Debian发行版的.deb包。
1. rpm介绍
简介
RPM全称“RedHat Package Manager”
,该机制最早由Red Hat这家公司开发出来的,后来实在很好用,因此很多distributons就使用这个机制来作为软件安装的管理方式,包括Fedora,CentOS,SuSE等知名的开发商都是用它。
RPM最大的特点就是需要安装的软件已经编译过,并已经打包成RPM机制的安装包,通过里头默认的数据库记录这个软件安装时需要的依赖软件。
当安装在你的Linux主机时,RPM会先依照软件里头的数据查询Linux主机的依赖属性软件是否满足,若满足则予以安装,若不满足则不予安装。
优缺点
优点:
- 软件已经编译打包,所以传输和安装方便,让用户免除编译
- 在安装之前,会先检查系统的磁盘、操作系统版本等,避免错误安装
- 软件的信息都已经记录在linux主机的数据库上,方便查询、升级和卸载
缺点:
- 软件包安装的环境必须与打包时的环境一致或相当
- 必须安装了软件的依赖软件
- 卸载时,最底层的软件不能先移除,否则可能造成整个系统不能用
为了解决RPM属性依赖的问题,下面也将会为你详细介绍YUM的使用方法。
rpm包的含义
RPM包全名的命名格式:软件名称-版本号-发布次数.适合linux系统.硬件平台.rpm
例如:ftp-0.17-74.fc27.i686.rpm
注意:
包全名:rpm操作没有安装的软件包,软件包使用的是包全名
包 名:rpm操作的已经安装的软件,软件包使用的是包名
例如上面的例子,包全名为ftp-0.17-74.fc27.i686.rpm,包名为ftp。
安装默认路径
/etc
配置文件放置目录
/usr/bin
一些可执行文件
/usr/lib
一些程序使用的动态链接库
/usr/share/doc
一些基本的软件使用手册与说明文件
/usr/share/man
一些man page档案
安装原理
2. rpm使用手册
1)软件安装(install)
rpm -ivh 包全名 //例: rpm -ivh emacs-25.3-1.fc28.aarch64.rpm
rpm参数说明(后面括号内为英文说明):
- -i:install的意思,安装
- -v:查看更详细的安装信息画面(provide more detailed output)
- -h:以安装信息栏显示安装进度
如果想安装多个用空格间隔然后接上要安装的rpm包即可,同时也支持通过网址的资源来安装。
2)软件升级
rpm –Uvh foo-2.0-1.i386.rpm
参数说明(后面括号内为英文说明):
- -U:upgrade的意思,更新软件,若系统中没有该软件则进行安装(upgrade package(s))
- -F:freshen的意思,更新系统已安装的某个软件(upgrade package(s) if already instaalled)
3)查询
RPM在查询的时候,其实查询的地方是/var/lib/rpm/这个目录下的数据库文件。
另外,RPM也可以查询未安装的RPM文件内的信息。
rpm {-q|--query} [select-options] [query-options]
注意:在查询的部分,所有的参数之前都要加上-q才是所谓的查询
常用参数说明(后面括号内为英文说明):
- -a:all,列出已经安装在本机的所有软件(Query all instaled packages.)
- -p:package,查询一个RPM文件的信息(Query an (uninstalled) package. )
- -f:file,由后面接的文件名称找出该文件属于哪狐假虎威已安装的软件(Query package owning file.)
- -i:information,列出该软件的详细信息,包含开发商、版本与说明等(Display package information, including name, version, and description.)
- -l:list,列出该软件所有的文件与目录所在完整文件名(List file in package)
- -c:configuration,列出该软件的所有设置文件(找出在/etc/下面的文件名而已)(List only configuration files)
- -d:documentation,列出该软件所有的帮助文档(List only documentation files)
- -R:required,列出与该软件有关的依赖软件所含的文件(List capabilities on which this depends.)
使用场景
a. 查询你的Linux是否有安装某个软件: rpm -q yum
b. 查询属于该软件所提供的所有目录与文件:
rpm -ql yum
- 仅列出该软件的所有设置文件:
rpm -qc yum
- 仅列出该软件的所有帮助文档:
rpm -qd yum
c. 列出gcc这个软件的相关数据说明: rpm -qi gcc
d. 找出/bin/sh是由哪个软件提供的: rpm -qf /bin/sh
e. 假设我有下载一个RPM文件,包名为wget-1.19.1-3.fc27.aarc64.rpm,想要知道该文件的需求文件
rpm -qpR wget-1.19.1-3.fc27.aarc64.rpm
4)卸载
使用rpm的卸载过程一定要由最上层往下卸载,不过很常发生软件属性依赖导致无法使用某些软件的问题。
rpm -e gcc
3. deb和dpkg
简介
dpkg - package manager for Debian (debian系统的包管理工具)。
dpkg是Debian的一个底层包管理工具,主要用于对已下载到本地和已安装的软件包进行管理。
dpkg这个机制最早由Debian Linux社区所开发出来的,通过dpkg的机制,Debian提供的软件就能够简单的安装起来,同时能提供安装后的软件信息,实在非常不错。只要派生于Debian的其它Linux distributions大多使用dpkg这个机制来管理,包括B2D,Ubuntu等。
优缺点
deb包的含义
格式为:Package_Version-Build_Architecture.deb
如:nano_1.3.10-2_i386.deb
- 软件包名称(Package Name): nano
- 版本(Version Number):1.3.10
- 修订号(Build Number):2
- 平台(Architecture):i386
dpkg软件包相关文件介绍
/etc/dpkg/dpkg.cfg
dpkg包管理软件的配置文件【Configuration file with default options】
/var/log/dpkg.log
dpkg包管理软件的日志文件【Default log file (see /etc/dpkg/dpkg.cfg(5) and option --log)】
/var/lib/dpkg/available
存放系统所有安装过的软件包信息【List of available packages.】
/var/lib/dpkg/status
存放系统现在所有安装软件的状态信息
/var/lib/dpkg/info
记安装软件包控制目录的控制信息文件
dpkg数据库
dpkg 使用文本文件作为数据库来维护系统中软件,包括文件清单, 依赖关系, 软件状态, 等等详细的内容,通 常在 /var/lib/dpkg 目录
下。
通常情况:
- 在 status 文件中存储软件状态和控制信息。
- 在 info/ 目录下备份控制文件
- 在info/.list 文件中记录安装文件清单
- 在info/.mdasums 保存文件的 MD5 编码。
例:查询dpkg数据库(显示所有已安装的Deb包)
如上图,每条记录对应一个软件包。注意看红框中,每条记录的第一、二、三个字符,这就是软件包的状态标识,后边依此是软件包名称、版本号和简单描述。
1)第一字符:期望值(Desired=Unknown/Install/Remove/Purge/Hold)
,它包括:
- u Unknown状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
- i Install用户请求安装软件包.
- r Remove用户请求卸载软件包.
- p Purge用户请求清除软件包.
- h Hold用户请求保持软件包版本锁定.
2)第二字符:软件包的当前状态(Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
)
- n Not软件包未安装.
- i Inst软件包安装并完成配置.
- c Conf-files软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
- u Unpacked软件包被解包,但还未配置.
- f halF-conf试图配置软件包,但是失败了.
- h Half-inst软件包安装,但是但是没有成功.
- w trig-aWait触发器等待
- t Trig-pend触发器未决
3)第三字符:标识错误状态,第一种状态标识没有问题,为空. 其它符号则标识相应问题(Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
)
- h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.
- r Reinst-required,软件包被破坏,可能需要重新安装才能正常使用(包括删除).
- x 软包件被破坏,并且被强制保持.
举个栗子:
ii —— 表示系统正常安装了该软件
pn —— 表示安装了该软件,后来又清除了
un —— 表示从未安装过该软件
iu —— 表示安装了该软件,但是未配置
rc —— 该软件已被删除,但配置文件仍在
dpkg子命令
为了方便用户使用,dpkg不仅提供了大量的参数选项, 同时也提供了许多子命令。
比如:dpkg-deb、dpkg-divert、dpkg-query、dpkg-split、dpkg-statoverride、start-stop-daemon
这里将不会对dpkg的命令作详细说明,如需了解可自行查阅资料。
4. dpkg使用手册
1)软件安装
dpkg -i package-name.deb # --install
安装软件包,必须是deb包的完整名称。
(软件的安装可被拆分为两个对立的过程“解包”和“配置”)
dpkg --unpack package-name.deb
#“解包”:解开软件包到系统目录但不配置, 如果和-R一起使用,参数可以是一个目录dpkg --configure package-name.deb
#“配置”:配置软件包dpkg -c package-name.deb
#列出 deb 包的内容
参数:
-R, --recursive Recursively handle all regular files matching pattern *.deb found at specified directories and all of itsThis can be used with -i, -A, --install, --unpack
--avail actions(递归地指向特定目录的所有安装包,可以结合-i, -A, --install, --unpack 与
--avail一起使用)
2)查询
dpkg -l package-name-pattern # --list
, 查看系统中软件包名符合pattern模式的软件包dpkg -L package-name # --listfiles
, 查看package-name对应的软件包安装的文件及目录dpkg -p package-name # --print-avail
, 显示包的具体信息dpkg -s package-name # --status
, 查看package-name(已安装)对应的软件包信息dpkg -S filename-search-pattern # --search
, 从已经安装的软件包中查找包含filename的软件包名称 (Tip:也可使用子命令dpkg-query来进行查询操作)
例1:列出系统上安装的与dpkg相关的软件包
dpkg -l \*dpkg*
例2:查看dpkg软件包安装到系统中的文件
dpkg -L dpkg
3)移除和卸载
dpkg -r package-name # --remove
, 移除软件包,但保留其配置文件dpkg -P package-name # --purge
, 清除软件包的所有文件(removes everything, including configfiles)
更多dpkg的使用方法可在命令行里使用man dpkg
来查阅 或直接使用dpkg --help
。
从包安装到在线安装
为了解决上面二进制包安装的属性依赖问题,linux发行商提供了在线安装的方式。在线安装方式和包安装方式也分为两大阵营。rpm对应yum, deb对应debian。
三、在线安装
1. yum
简介
YUM可以看作是CS架构的软件,YUM的存在很好的解决了RPM的属性依赖问题。
YUM通过依赖rpm软件包管理器, 实现了rpm软件包管理器在功能上的扩展, 因此YUM是不能脱离rpm而独立运行的。
特点
- 可以同时配置多个资源库(Repository)
- 简洁的配置文件(/etc/yum.conf)
- 自动解决增加或删除rpm包时遇到的依赖性问题
- 使用方便
- 保持与RPM数据库的一致性
YUM原理
Server端先对程序包进行分类后存储到不同repository容器中;
再通过收集到大量的rpm的数据库文件中程序包之间的依赖关系数据, 生成对应的依赖关系和所需文件在本地的存放位置的说明文件(.xml格式), 存放在本地的repodata目录下供Client端取用
Cilent端通过yum命令安装软件时发现缺少某些依赖性程序包, Client会根据本地的配置文件(/etc/yum.repos.d/*.repo
)找到指定的Server端, 从Server端repo目录下获取说明文件xxx.xml后存储在本地/var/cache/yum中方便以后读取, 通过xxx.xml文件查找到需要安装的依赖性程序包在Server端的存放位置, 再进入Server端yum库中的指定repository容器中获取所需程序包, 下载完成后在本地实现安装。
YUM的配置文件
1)容器说明
yum从系统站点镜像拉取软件相关信息,一般来说这个源是就近配置,越近越快。就像是网购,国内购的速度总比海购要快得多。
系统站点镜像的配置说明:
CentOS的镜像站点(http://ftp.twaren.net/Linux/C…)后,就会发现里面有一堆链接,那些链接就是这个yum服务器所提供的容器了,包括centosplus、extras、fasttrack、os、updates等容器,最好认的就是os(系统默认的软件)与updates(软件升级版本)。
在yum服务器的容器里面,最重要的一个目录就是那个“repodata”,该目录是分析RPM软件后所产生的软件依赖数据放置处。因此,当你找到容器所在网址时,最重要的就是该网址下面一定要有一个名为“repodata”的目录存在,那就是容器的网址了。
下面都是以我的主机为例:CentOS 7.4.1708
2)容器查询
查询命令:yum repolist all
![yum repolist all]](https://img-blog.csdnimg.cn/20210224183222481.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTE0MTc4MjA=,size_16,color_FFFFFF,t_70)
只有当最右边的status为enabled该容器才算激活
/etc/yum.repos.d/里面会有多个配置文件(文件名以.repo结尾),yum会从里面逐个查找,所以里面的容器名称不能有重复。
3)配置文件修改
vi /etc/yum.repos.d/CenOS-Base.repo
配置文件说明:
[base]:代表容器的名字。中括号一定要存在,里面的名称可以随意起,但不能有两个相同的容器名称,否则yum会不知道去哪里找容器相关软件列表文件。
name:只是说明一下这个容器的意义而已,重要性不高。
mirrorlist:列出这个容器可以使用的镜像站点,如果不想使用可以批注掉这一行。
baseurl:这个最重要,因为后面接的就是容器的实际网址。mirrorlist是由yum程序自行去找镜像站点,
baseurl则是指定固定的一个容器网址。
enable=1:启动这个容器,默认值也为1。关闭这个容器可以设置enable=0。
gpgcheck=1:指定是否需要查阅RPM文件内的数字证书。
gpgkey:数字证书的公钥文件所在位置,使用默认值即可。
注意:
- yum会自动识别/etc/yum.repos.d/目录以.repo结尾的文件。
- 当我们修改了配置文件的网址却没有修改容器名称,可能会造成本机的列表与yum服务器的列表不同步,需要手动来清除容器的数据:
语法:yum clean [packages|headers|all]
参数:
packages:将已下载的软件文件删除
headers:将下载的软件文件头删除
all:将所有容器数据都删除
例:删除已下载过的所有容器相关数据(含软件本身与列表): yum clean all
YUM使用手册
1)查询
search:搜索某个软件名称或者是描述的重要关键字;
list:列出目前yum所管理的所有的软件名称与版本,有点类似于rpm -qa
info:同上,不过有点类似于rpm -qai
provides:从文件去搜索软件!类似于rpm -qf
使用案例:
1) 查询与ftp相关的软件有哪些: yum search ftp
2) 查询gcc这个软件的功能: yum info gcc
可以查询到该软件的版本号、描述信息、是否已安装等信息。
3) 列出yum服务器上所提供的所有软件名称: yum list
4) 列出目前服务器上可供本机进行升级的软件有哪些: yum list updates
5) 列出提供passwd这个文件的软件有哪些: yum provides passwd
6) 查找以pam开头的软件名称有哪些: yum list pam*
2)安装与升级
install:后面接要安装的软件(-y,当遇到需要等待用户输入时,这个选项会提供yes的响应)
update:后面接要升级的软件。不接软件名,则整个系统都升级。
3)卸载
remove : yum remove gcc
4)软件组管理
grouplist:列出所有可用的组列表
groupinfo:后面接group name,则可以了解该组内含的所有组名称
groupstall:安装一整级的软件
groupremove:删除某个组
使用案例:
1)查询目前容器与本机上面的可用与安装过的软件组有哪些: yum grouplist
2)查看一个软件组的信息: yum groupinfo GNOME
3)安装桌面环境GNOME: yum groupstall GNOME
更多yum的用法,可以查看man yum查看yum的帮助文档
2. apt-*
简介
虽然我们在使用dpkg时,已经解决掉了 软件安装过程中的大量问题,但是当依赖关系不满足时,仍然需要手动解决,而apt这个工具解决了这样的问题。
linux distribution 先将软件放置到对应的服务器中,然后分析软件的依赖关系,并且记录下来,
然后当客户端有安装软件需求时,通过清单列表与本地的dpkg以存在的软件数据相比较,就能从网络端获取所有需要的具有依赖属性的软件了。
工作原理
Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。这样,所有的Ubuntu用户随时都能获得最新版本的安装软件包。因此,对于用户,这些镜像服务器就是他们的软件源(Reposity)
为了能够有选择地访问,在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list,由用户配置最合适访问的镜像站点地址。
1. apt-get的更新过程
1). 执行apt-get update
2). 程序分析/etc/apt/sources.list
3). 自动连网寻找list中对应的Packages/Sources/Release列表文件,如果有更新则下载之,存入/var/lib/apt/lists/目录
4). 然后 apt-get install 相应的包 ,下载并安装。
即使这样,软件源配置文件只是告知Ubuntu系统可以访问的镜像站点地址,但那些镜像站点具体都拥有什么软件资源并不清楚。
若每安装一个软件包,就在服务器上寻找一遍,效率是很低的。
因而,就有必要为这些软件资源列个清单(建立索引文件),以便本地主机查询。
刷新软件源,建立更新软件包列表: apt-get update
在Ubuntu Linux中,“apt-get update”命令会扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists/目录中。
使用apt-get执行安装、更新操作时,都将依据这些索引文件,向软件源服务器申请资源。
因此,在计算机设备空闲时,经常使用“apt-get update”命令刷新软件源,是一个好的习惯。
2. apt-get install原理图
apt相关文件
/var/lib/dpkg/available
文件的内容是软件包的描述信息, 该软件包括当前系统所使用的Debian 装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包.
/etc/apt/sources.list
记录软件源的地址(当你执行 sudo apt-get install xxx
时,Ubuntu 就去这些站点下载软件包到本地并执行安装)
/var/cache/apt/archives
已经下载到的软件包都放在这里(用 apt-get install
安装软件时,软件包的临时存放路径)
/var/lib/apt/lists
使用apt-get update命令会从/etc/apt/sources.list
中下载软件列表,并保存到该目录
配置源/etc/apt/sources.list
![/etc/apt/sources.list]](https://img-blog.csdnimg.cn/20210224183325193.png)
/etc/apt/sources.list
文件里面都是一些网址信息,这每一条网址就是一个源,这个地址指向的数据标识着这台源服务器上有哪些软件可以安装使用。
镜像服务器的存放位置如:
国内一般使用各种云厂商和高校的源地址,如阿里的、网易,清华源、中科大源。
注意:不同的ubuntu的发行版本的源地址不一样,修改时注意选择
清华大学开源软件镜像站
阿里云镜像源
网易镜像源
通过解压Packages.gz后我们可以看到所有软件包的基本信息,并且Packages.gz 已经包含所有所依赖的软件及其版本信息、以及下载地址。
APT-*使用手册
1) apt
apt是命令行接口,跟APT(Advanced Packaging Tool) 工具apt-get 和 apt-cache 相比,apt 具有一些更适合交互式场景的选项,它更倾向于成为面向最终用户的工具(而不仅仅是系统管理员)。
换句话说,apt 比 apt-get 用起来更简单,用户体验更好。
用法:apt [选项] 命令
配置文件:早期 apt 默认的配置文件为 /etc/apt/apt.conf,但是当前的 Ubuntu 系统中默认没有这个文件。如果 /etc/apt/apt.conf 文件存在,apt 仍然会读取它。但现在的设计思路是把配置文件分隔后放置在 /etc/apt/apt.conf.d 目录下,这样更容易管理。
常用子命令:
命令 | 例子 | 描述 | 备注 |
---|---|---|---|
list | list packages based on package names | 类似dpkg-query --list,提供选项可安装(–installed), 可升级(–upgradeable),所有(–all-versions) versions. | |
search | apt search sudo | search in package descriptions | |
show | apt show sudo | show package details | |
install | apt install vim=2:8.0.1453-1ubuntu1 | install packages | 类似apt-get |
reinstall | reinstall packages | 类似apt-get | |
remove | remove packages | 类似apt-get | |
autoremove | Remove automatically all unused packages | 类似apt-get | |
update | 从配置的源下载包信息 | 类似apt-get | |
upgrade | upgrade the system by installing/upgrading packages | 类似apt-get | |
full-upgrade | 升级,如果需要将系统升级到新的版本,则会删除当前已安装的包。 | 类似apt-get | |
edit-sources | apt edit-sources | edit the source information file | 类似apt-get |
satisfy | apt satisfy “foo, bar (>= 1.0)” “Conflicts: baz, fuzz” | satisfy dependency strings | 类似apt-get |
2) apt-get
apt-get 是一个下载安装软件包的简单命令行接口。最常用的命令是update(更新)和install(安装)。
用法: apt-get [选项] 命令
- -h 本帮助文件。
- -q 输出到日志 - 无进展指示
- -qq 不输出信息,错误除外
- -d 仅下载 - 不安装或解压归档文件
- -s 不实际安装。模拟执行命令
- -y 假定对所有的询问选是,不提示
- -f 尝试修正系统依赖损坏处
- -m 如果归档无法定位,尝试继续
- -u 同时显示更新软件包的列表
- -b 获取源码包后编译
- -V 显示详细的版本号
- -c=? 阅读此配置文件
- -o=? 设置自定的配置选项,如 -o dir::cache=/tmp
命令:以更新sudo包为例
命令 | 例子 | 说明 | 备注 |
---|---|---|---|
update | apt-get update | 从所有已配置的源/etc/apt/sources.list 同步软件包索引文件 | 只检查,不更新 |
upgrade | apt-get upgrade sudo | 更新已安装的包sudo包到最新版本 | 若已经最新则忽略 |
dist-upgrade | apt-get dist-upgrade | 升级系统 | 有一定风险!此时 apt 将首先升级重要的包,如果有冲突的话,可能会删除一些次要的包(详见 man apt_preferences) |
install | apt-get install pac1 sudo … | 安装或升级一个或多个软件 | 可指定版本号,pac可是用正则匹配 |
remove | apt-get remove pac1 sudo… | 删除软件,保留配置文件 | 用法类似install |
purge | apt-get purge pac1 sudo… | 删除软件和配置文件 | 用法类似remove |
source | apt-get source pac | 获取源码到当前目录 | |
check | apt-get check | 更新缓存,检查是否有损坏的依赖 | |
download | apt-get download pac | 下载二进制包到当前目录 | |
clean | apt-get clean | 清除检索到的软件包文件的本地存储库 | |
autoclean | apt-get autoclean | 类似clean,但仅删除不再下载且几乎无用的软件包文件 | 更安全 |
autoremove | apt-get autoremove | 删除只是为了满足依赖,而自动安装的软件包,并且不再需要了 | 更安全 |
apt 与 apt-get 的区别
简单来说 apt 命令就是 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。下面是几个常见命令的对照关系:
list:与 dpkg --list 相似
search:与 apt-cache search 相似
show:与 apt-cache show 相似
update:与 apt-get update 相同
install/remove:与 apt-get install/remove 相似,但是多了进度条提示
upgrade:与 apt-get upgrade --with-new-pkgs 相同
full-upgrade:与 apt-get dist-upgrade 相似
在我们使用的过程中,比较明显的区别是可以看到 apt 命令的进度条,个人感觉并不是太有用。
执行 apt update 命令,会提示可以升级的包的个数,而 apt-get update 命令则没有这样的提升
3) apt-cache/aptitude
查询APT缓存
apt-cache对APT的程序包缓存执行各种操作。
apt-cache不会操纵系统状态,但会提供操作方式从程序包元数据中搜索并生成有趣的输出。
命令 | 例子 | 说明 |
---|---|---|
apt-cache | apt-cache depends packagename | 了解使用依赖 |
apt-cache | apt-cache rdepends packagename | 是查看该包被哪些包依赖 |
apt-cache/aptitude | apt-cache/aptitude search packagename | 搜索包 |
apt-cache/aptitude | apt-cache/aptitude show packagename | 获取包的相关信息,如说明、大小、版本等 |
apt-cache | apt-cache showpkg packagename | 显示软件包的大致信息 |
参考:
Linux软件安装管理之——源码安装详解
Linux软件安装管理之——dpkg与apt-*详解
Linux软件安装管理之——RPM与YUM详解
Ubuntu下安装软件的三种方式
Ubuntu : apt 命令
这篇关于Linux软件安装管理的三种方式——源码安装/deb/rpm/yum/apt的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!