ubuntu-5-包管理工具dpkg和apt更新软件源及离线安装软件

1 软件包安装卸载方法

1.1 apt方式

高级包装工具(Advanced Packaging Tools,简称APT)是Debian及其衍生发行版(如Ubuntu)的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包。

1.1.1 安装卸载

以vim软件为例进行说明

(1)检索
sudo apt-cache search vim搜索软件
sudo apt-cache show vim查看包的相关信息、大小、版本等
sudo apt-cache stats显示当前系统所有使用的Debain数据源的统计信息
sudo apt-cache depends vim查找软件包的依赖关系

(2)安装软件
sudo apt-get install vim普通安装
sudo apt-get -f install vim修复安装指定软件
sudo apt-get -f install修复安装全部软件
sudo apt-get --reinstall install vim重新安装指定软件
(3)更新软件	
sudo apt update刷新软件源
sudo apt list --upgradable#查看有哪些可更新的软件
sudo apt-get upgrade更新已安装的所有包
sudo apt autoremove更新完成之后清除不需要的旧组件
(4)卸载软件
sudo apt-get remove vim移除式卸载,只是删掉数据和可执行文件
sudo apt-get --purge remove vim清除式卸载,完全卸载同时清除配置文件

1.1.2 软件管理

(1)软件安装包所在路径
在用命令apt-get install安装时,是先将软件安装包下载到/var/cache/apt/archives中,之后再进行安装的。

/var/cache/apt/archives
可以对已经安装过的软件包进行删除
sudo rm -rf *.deb 手动删除
sudo apt-get clean自动清理软件包。
sudo apt-get autoclean 自动只清理过时的包

1.2 dpkg方式

dpkg命令的英文全称是Debian package,故名意思是Debian Linux系统用来安装、创建和管理软件包的实用工具。
dpkg有一个缺点是不能解决包之间的依赖问题。

1.2.1 安装卸载

(1)安装软件
sudo dpkg -i package_name.deb
(2)卸载软件
sudo dpkg -r pkg1 pkg2移除式卸载
sudo dpkg --remove pkg1 pkg2移除式卸载
sudo dpkg -P pkg1 pkg2清除式卸载
sudo dpkg --purge pkg1 pkg2清除式卸载

1.2.2 软件管理

(1)dpkg使用文本文件来作为数据库,通称在/var/lib/dpkg目录下

在status文件中存储软件状态和控制信息。
在info/目录下备份控制文件,在其下的.list文件中记录安装文件清单。
在info/目录下备份控制文件,在其下的.mdasums保存文件的MD5编码。

(2)显示已安装软件包列表

sudo dpkg --list
sudo dpkg --list python*模糊查询

在这里插入图片描述
每条记录对应一个软件包, 注意每条记录的第一, 二, 三个字符(+++), 这就是软件包的状态标识, 后边依此是软件包名称, 版本号, 架构和简单描述。
第一字符为期望值,它包括:

u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
i 用户请求安装软件包.
r 用户请求卸载软件包.
p 用户请求清除软件包.
h 用户请求保持软件包版本锁定.

第二字符,是软件包的当前状态,此列包括软件包的六种状态.:

n 软件包未安装.
i 软件包安装并完成配置.
c 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
u 软件包被解包,但还未配置.
f 试图配置软件包,但是失败了.
h 软件包安装,但是但是没有成功.

第三字符,标识错误状态,可以总结为四种状态:

第一种状态标识没有问题,为空。其它三种符号则标识相应问题. 
h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.
r 软件包被破坏,可能需要重新安装才能正常使用(包括删除).
x 软包件被破坏,并且被强制保持.

(2)列出所有安装后留在系统里的文件

sudo dpkg -L packagename
sudo dpkg -L python3
文档一般在/usr/share
可执行文件/usr/bin
配置文件/etc

1.3 源码编译方式

安装包的格式(.tar、tar.gz、tar.bz2、tar.Z)。
首先解压缩源码压缩包

sudo tar zxf xx.tar.gz
sudo tar zxf xx.tar.Z
sudo tar zxf xx.tgz
sudo bunzip2 xx.bz2
sudo tar xf xx.tar

然后进入到解压出的目录中,建议先读一下README之类的说明文件,因为此时不同源代码包或者预编译包可能存在差异。

查看一下可执行文件
sudo ls -F --color
sudo ls -F
可执行文件会以*号的尾部标志。

一般依次执行,即可完成安装。

./configure
Make
sudo make install

2 apt与apt-get的区别

2.1 背景

Debian作为Ubuntu、Linux Mint和elementary OS 等Linux操作系统的母板,其具有强健的包管理系统,它的每个组件和应用程序都内置在系统中安装的软件包中。

Debian使用一套名为Advanced Packaging Tool(APT)的工具来管理这种包系统,不过请不要把它与apt命令混淆,它们之间其实不是同一个东西。

在基于Debian的Linux发行版中,有各种工具可以与APT进行交互,以方便用户安装、删除和管理的软件包:

(1)apt-get是其中一款广受欢迎的命令行工具。
(2)Aptitude是另一款命令行与GUI兼顾的小工具。

可能遇到过许多类似apt-get的命令,如apt-cache、apt-config。如你所见,这些命令都比较低级又包含众多功能,普通的Linux用户也许永远都不会使用到。换种说法来说,就是最常用的Linux包管理命令都被分散在了apt-get、apt-cache和apt-config这三条命令当中。

apt命令的引入就是为了解决命令过于分散的问题,它包括了apt-get命令出现以来使用最广泛的功能选项,以及apt-cache和apt-config命令中很少用到的功能。
简单来说就是:apt = apt-get、apt-cache和apt-config中最常用命令选项的集合。

2.2 区别

虽然apt与apt-get有一些类似的命令选项,但它并不能完全向下兼容apt-get命令。也就是说,可以用apt替换部分apt-get系列命令,但不是全部。
在这里插入图片描述
当然,apt还有一些自己的命令:

sudo apt list列出包含条件的包(已安装,可升级等)sudo apt edit-sources编辑源列表

3 更新软件源

有时候ubuntu系统安装软件出现Unable to locate package错误,解决办法更新软件源。

cd /etc/apt
sudo cp sources.list sources.list.backup备份
sudo gedit sources.list重新编写一个文件
sudo apt update执行一下进行软件源的更新。

3.1 软件源格式

一、文件sources.list内容

deb http://cn.archive.ubuntu.com/ubuntu jammy main restricted
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy main restricted

deb http://cn.archive.ubuntu.com/ubuntu jammy-updates main restricted
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy-updates main restricted


deb http://cn.archive.ubuntu.com/ubuntu jammy universe
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy universe
deb http://cn.archive.ubuntu.com/ubuntu jammy-updates universe
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy-updates universe


deb http://cn.archive.ubuntu.com/ubuntu jammy multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy multiverse
deb http://cn.archive.ubuntu.com/ubuntu jammy-updates multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy-updates multiverse


deb http://cn.archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse

deb http://cn.archive.ubuntu.com/ubuntu jammy-security main restricted
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy-security main restricted
deb http://cn.archive.ubuntu.com/ubuntu jammy-security universe
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy-security universe
deb http://cn.archive.ubuntu.com/ubuntu jammy-security multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu jammy-security multiverse

二、整个软件源结构可以分解为四个部分:

(1)第一部分:软件包格式
deb或deb-src
(2)第二部分:软件包服务器地址
http://cn.archive.ubuntu.com/ubuntu
(3)第三部分:发行版版本代号
jammy或jammy-updates或jammy-security或
jammy-backports或jammy-proposed
(4)第四部分:软件包的分类目录
main、restricted、universe、multiverse

main(主要的)–main组件包括了自由软件、可以被自由发布的软件和被Ubuntu团队完全支持的软件。其中包括了大多数流行的和稳定的开源软件,当您安装Ubuntu时默认安装的就是这些软件。

restricted(限制的)–restricted组件是专供普遍用途,而且没有自由软件版权,但依然被Ubuntu团队支持的软件。请注意,因为不能直接修改软件,因而我们可能不能提供完全的技术支持,即便如此,我们还能向实际作者反馈Bug报告。

universe(宇宙,世界,全人类)–universe组件是整个自由、开源Linux世界的缩影。在universe组件中,你可以找到大多数开源软件,以及在开源版权下的软件,所有这些都是在公共源的基础上建立的。这些软件都是使用main中的组件编写的,它们能与main组件相安无事地共同运行,但它们没有安全升级的保障。universe组件包含了数以千计的软件。虽然是公共的,用户必须明白它们与稳定的Ubuntu核心的软件的差异和不稳定。

multiverse(多元的)–multiverse组件包含了不自由的软件,这意味着这些软件不满足Ubuntu相对于main组件的各种版权政策。当您使用这些软件时,如何调整各种权力以及遵重版权所有者的问题,就完全依靠您自己把握了。 这些软件不被我们支持,而且通常不能被修改和更新,您将自己承担任何风险。

3.2 软件源镜像站

中科大Ubuntu软件源镜像站
在这里插入图片描述
(1)目录dists/:
在这里插入图片描述
本目录包含发行版(distributions),此处是获得 Ubuntu发布版本(releases)和已发布版本(pre-releases)的软件包的正规途径。

存在于dists目录下的物理目录名,例如trusty-updates和trusty-security,就是附加的仓库。当某个Ubuntu发行版处于维护阶段。将包的必要升级和安全更新放在附加的仓库里。其附加仓库通常有版本代号-updates、版本代号-security、版本代号-proposed等等。

dists目录包含的全是Ubuntu发行版目录及其附加仓库目录(如:trusty、trusty-update、trusty-security、trusty-backports就是Ubuntu trusty发行版目录及其附加仓库目录)。

(2)目录pool/:
在这里插入图片描述
所有Ubuntu发布版及已发布版的软件包的物理地址。软件包均放进一个巨大的池子(pool),按照源码包名称分类存放。

为了方便管理,pool目录下按属性再分类(main、restricted、 universe和multiverse),分类下面再按源码包名称的首字母归档。

这些目录包含的文件有:运行于各种系统架构的二进制软件包,生成这些二进制软件包的源码包。

可以选择国内的镜像源。

4 问题及解决

4.1 安装软件Could not get lock

ps -ef | grep apt找到进程
sudo kill -9 杀死进程

4.2 下载离线安装包

无外网的局域网安装软件一个烦人的事件就是明明安装包下好了,但有时候就是安装不上,因为缺少相应依赖的包。那么如何将一个软件依赖的包、库之类的下载下来呢?这里就用到apt的相关功能。

4.2.1 查看依赖

sudo apt-cache depends python3-pip
输出如下
python3-pip
Depends: ca-certificates
Depends: python3-distutils
Depends: python3-setuptools
Depends: python3-wheel
Depends: <python3:any>

4.2.2 下载依赖包

下载到/var/cache/apt/archives目录中

sudo apt-get install dependpackname --reinstall -d
其中-d表示只下载
sudo apt-get install ca-certificates --reinstall -d
sudo apt-get install python3-distutils --reinstall -d
sudo apt-get install python3-setuptools --reinstall -d
sudo apt-get install python3-wheel --reinstall -d
sudo apt-get install python3-pip --reinstall -d
sudo apt-get clean可以清理掉这个目录下的安装包

在这里插入图片描述

4.2.3 批量下载依赖包

(1)获取依赖
sudo apt-cache depends python3-pip | grep Depends
输出如下
Depends: ca-certificates
Depends: python3-distutils
Depends: python3-setuptools
Depends: python3-wheel
Depends: <python3:any>
(2)切分
以:分割并取第二段
sudo apt-cache depends python3-pip | grep Depends | cut -d : -f 2
输出如下
ca-certificates
python3-distutils
python3-setuptools
python3-wheel
<python3
(3)裁剪
有些包名中有<>符号,用tr将其删除
sudo apt-cache depends python3-pip | grep Depends | cut -d: -f 2 | tr -d "<>"
输出如下
ca-certificates
python3-distutils
python3-setuptools
python3-wheel
python3

(4)合并为大指令
sudo apt-get install --reinstall -d `apt-cache depends python3-pip | grep Depends | cut -d: -f 2 | tr -d "<>"`

在这里插入图片描述

4.2.4 离线安装

sudo dpkg -i *.deb
sudo apt-get clean安装完成后清除安装包
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮冰燃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值