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

2023-05-16

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安装完成后清除安装包
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Nginx配置指令(一)

    1 daemon 语法 xff1a daemon on off 默认 xff1a on 如果使用daemon off xff0c nginx将会运行在前台 生产远景不建议如此使用 xff0c 虽然可以 2 env 语法 xff1a env
  • SQL将Json字符串转为表格

    支持复杂结构的使用 使用Parent ID来对应Object ID产生关系就好 实现对Json数据的从文字到表变量的转换 例 34 FieldName 34 34 DateKey 34 34 Title 34 34 汇总后日期 34 34
  • JavaScript实现动态添加的元素添加点击事件

    在页面开发过程中常常遇到需要动态添加元素 xff0c 然后给这一元素绑定相关事件的情况 xff0c 这种情况下一般需要给元素加上相关属性 xff0c 然后写这些元素的事件函数即可 动态添加的元素怎么绑定事件呢 xff1f 原生JavaScr
  • javascript解决小数的加减乘除精度丢失的方案

    原因 js按照2进制来处理小数的加减乘除 在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配 所以会出现如下情况 javascript js 的小数点加减乘除问题 xff0c 是一个js的bug如0 3 1 61 0 29999999
  • SqlServer 获取字符串中数字,中文及字符部分数据

    获取英文字符数据 Create function dbo Fun GetChar 64 No varchar 100 RETURNS varchar 100 AS BEGIN WHILE PATINDEX 39 A Za z 39 64 N
  • Asp.net 如何跳过基于表单的身份验证(authentication)

    淘到的Form验证过程 xff1a xff08 如果所有页面继承了同一个判断是否登录的类 xff0c 路径的判断是个问题 xff0c 文件所处的位置可能不同 xff0c 有的是二级菜单 xff0c 有的三级 还有的是通过Request Ur
  • ASP.NET Core读取Request.Body的正确方法

    参考文章 xff1a 深入探究ASP NET Core读取Request Body的正确方式 https www cnblogs com wucy archive 2021 05 06 14699717 html 当然我们也可以自己实现一套
  • 【Python+OpenCV入门学习】五、绘制几何图形

    本篇文章 xff0c 将学习如何 绘制几何图形 xff0c 如画线 圆 矩形 椭圆等 xff0c 另外还学习在图像中增加文本信息 主要学习 函数 line circle rectangle ellipse putText 等 的使用 环境
  • 交换机性能的常用指标及术语解释

    交换机性能的常用指标及术语解释 流量控制 背压技术Back pressure 基于IEEE802 3X标准 xff0c 当处理发现缓冲器将要填满时 xff0c 就 向源发站发出一个假冲突信号 xff0c 使之延迟一个随机时间 xff0c 然
  • Ubuntu22.04-添加中文输入法

    1 安装中文语言包 进入setting xff08 设置 xff09 gt 区域与语言 选项卡 进入 管理已安装的语言 第一进入将提示 语言支持没有完整安装 xff0c 点击安装即可 安装过程会将为进行补充安装的语言进行下载安装 设置中文
  • 修改apache设置,支持UTF8和GBK

    1 修改 etc httpd conf httpd conf 文件 xff0c 将其中AddDefaultCharset行注释掉 前面加 2 保存后重新启动apache usr sbin apachectl restart或者service
  • 数论——GCD

    ZOJ Problem Set 3846 题意 xff1a 给 N 个数 xff0c 任取两个数Ai Aj xff0c 求出这两数的GCD xff0c 然后用GCD替换这两个数的值 直至这n个数的值都相等为止 xff0c 此时输出求GCD的
  • 群晖DDNS和端口转发等相关讲解

    文章目录 废话篇前言本文知识概要域名和IP地址的了解域名解析内网IP和外网IPDDNS是什么 xff1f 群晖如何设置DDNS端口转发后言协助改进 废话篇 本篇文章为原创文章 xff0c 转载请注明出处 xff0c 感谢 本人也有个人博客
  • Python更新失败:SSL错误——Conda/Python

    Python更新失败 SSL错误 xff08 1 xff09 是正常Python环境下的错误 xff1a 例如 xff1a Could not fetch URL https pypi tuna tsinghua edu cn simple
  • c语言经典题目--字符串篇

    1 有效的字母异位词 给定两个字符串 s 和 t xff0c 编写一个函数来判断 t 是否是 s 的字母异位词 注意 xff1a 若 s 和 t 中每个字符出现的次数都相同 xff0c 则称 s 和 t 互为字母异位词 include lt
  • UITextField和UITextView被键盘遮住的处理办法

    void textFieldDidBeginEditing UITextField textField float offset 61 0 0f if self txtField 61 61 textField offset 61 180
  • CAShapeLayer动画(画圆效果)

    关于CAShapeLayer和DrawRect的比较 DrawRect xff1a DrawRect属于CoreGraphic框架 xff0c 占用CPU xff0c 消耗性能大 CAShapeLayer xff1a CAShapeLaye
  • iOS调用各大地图APP导航,进行路线规划

    最近收到了这么一个需求 xff0c 就是支持目前主流的地图APP导航 xff0c 也就是说跳转至第三方应用 说实在的一开始我是拒绝的 xff0c 不过最后还是做了 xff0c 全是体力活 xff0c 为了方便大家 xff0c 我就终结一下
  • stm32cubeMX+vscode开发编译调试stm32程序

    stm32cubeMX 43 vscode开发编译调试stm32程序 安装vscode安装make工具安装交叉编译工具链安装openocd安装clang llvm生成并编译代码配置vscode安装插件配置文件c cpp properties
  • 如何在 Ubuntu 20.04 上安装 Jenkins?

    介绍 当面临重复性技术任务时 xff0c 寻找可行的自动化解决方案可能是一件苦差事 使用开源自动化服务器 Jenkins xff0c 您可以有效地管理从构建到部署软件的任务 Jenkins 是基于 Java 的 xff0c 从 Ubuntu

随机推荐

  • 并查集

    先上题目 题目描述 如题 xff0c 现在有一个并查集 xff0c 你需要完成合并和查询操作 输入格式 第一行包含两个整数N M xff0c 表示共有N个元素和M个操作 接下来M行 xff0c 每行包含三个整数Zi Xi Yi 当Zi 61
  • 使用PN532进行IC卡的Linux和Windows平台的数据读取以及写入过程

    强调 xff1a 勿用于非法用途 本文介绍使用PN532进行IC卡的Linux和Windows平台的数据读取以及写入过程 注意 xff1a 在树莓派平台只做到了卡片解密 xff0c 并没能写入UID卡 xff0c 我不清楚具体原因 xff0
  • 必须要掌握的单链表操作大全

    前言 号外号外 xff0c 笔者最近在系统整理一些 Java 后台方面的面试题和参考解答 xff0c 有找工作需求的童鞋 xff0c 欢迎关注我的 Github 仓库 xff0c 如果觉得不错可以点个 star 关注 xff1a 1 awe
  • python数据处理(数据集的格式转换)

    摘要 本文总结常常用到的一些数据处理方法 xff0c 主要是numpy和python 数组 列表 字典的操作 一 保存N维数组 ndarray 到本地文件 本节参考原文在此 xff0c 本节复述目的是防止丢失 xff0c 时常复习 1 需求
  • python实现三维坐标旋转计算

    参考文章 xff1a python实现三维坐标旋转计算 空间三维坐标系旋转计算 计算空间三维坐标系变换一般都是利用旋转矩阵或者欧拉公式 python有个scipy库可以直接用于计算空间三维坐标变换 支持库 pip install scipy
  • Start request repeated too quickly解决方法

    脚本重启时间太快 xff0c 不清楚是什么原因 可能是默认的重启时间为0 1秒 可以添加StartLimitInterval 61 600 xff0c 600表示600秒 span class token punctuation span
  • opencv VideoWriter 保存文件,只有6k

    frame size的原因 xff0c videowriter创建的视频文件的size和要写入的frame size不一致
  • pip安装模块报错:File “D:\python\lib\site-packages\pip\_vendor\urllib3\response.py“, line 507, in read

    以下文章内容参考自 xff1a https blog csdn net qq 43348979 article details 115983927 解决参考原博 xff1a https blog csdn net liji digital
  • 自用git命令

    添加git默认信息 git config add user name 61 34 xxx 34 git config add user email 61 34 xxx 34 远程操作 git remote add origin xxxxx
  • npx命令

    参考文章 xff1a npx是什么命令 xff1f npx和npm有什么区别 xff1f 平时安装node模块的时候 xff0c 经常使用的命令是npm 其实还有另外一个命令 xff0c 叫做npx 网上的说法都是 xff1a npx是np
  • CSS替换元素

    参考文章 xff1a 替换元素 非替换元素 行内替换元素 行内非替换元素 img input到底是行内还是块级元素 xff1f 问题 xff1a img input到底是行内还是块级元素 xff1f 为什么有的行内元素可以撑开父元素 xff
  • PostgreSQL 查询怎么取到json中的字段值 有几种方法

    在PostgreSQL中可以使用多种方法来取到JSON中的字段值 xff0c 以下是其中的三种常用方法 xff1a 1 通过 gt 操作符取值 gt 操作符用于从JSON对象中提取一个键的值 例如 xff0c 假设有一个JSON对象 nam
  • Spring Data Jpa 使用关键字定义查询

    1 创建接口 BookDao java span class token keyword package span top span class token punctuation span woilanlan span class tok
  • 应用服务OkHttpClient创建大量对外连接时内存溢出

    文章目录 1 背景2 排查 2 1 原因 2 2 验证过程2 2 1 修改前2 2 2 修改后 3 解决 1 背景 最近工作中碰到一个生产问题 xff0c 就是应用服务在使用 OkHttpClient 时 xff0c 在创建大量对外连接时线
  • debian11安装docekr

    卸载旧版 apt get remove docker docker engine docker io containerd runc apt get purge docker ce docker ce cli containerd io d
  • C++中的枚举(enum)

    C 43 43 中的枚举 enum 枚举类型 enumeration 是 C 43 43 中的一种派生数据类型 xff0c 它是由用户定义的若干枚举常量的集合 枚举是一个数值集合 xff0c 是给一个值命名的一种方法 如果想要使用整数来表示
  • Django2.0版本的URL配置(笔记)

    升级到Django2 0后 xff0c URL配置发生了一些变化 以最简单的Hello World为例 xff1a views py from django http import HttpResponse def hello reques
  • Django笔记-模型层

    1 模型类定义 模型定义的基本结构 from django db import models class ModelName models Model field 61 models xxfield field 61 models xxfi
  • Django笔记(模型类-管理器)

    模型类 管理器 作用 xff1a 用于与数据库交互 每个模型类默认有一个管理器 xff0c objects objects是Django自动生成的管理器 xff0c 可以实现对数据的查询 objects是models Manger类的一个对
  • ubuntu-5-包管理工具dpkg和apt更新软件源及离线安装软件

    1 软件包安装卸载方法 1 1 apt方式 高级包装工具 Advanced Packaging Tools 简称APT 是Debian及其衍生发行版 如Ubuntu 的软件包管理器 APT可以自动下载 xff0c 配置 xff0c 安装二进