Ubuntu 软件包管理详解

2023-11-07

Ubuntu 软件包管理详解


Ubuntu 方便宜用,最值得让人称道的便是其安装软件的方式, 一条命令: sudo apt-get install xxx 就几乎能帮你搞定所有的软件安装难题。但是有时你可能有这样的需求,查看某个软件包是否安装、安装在哪..., 那我们就来介绍一下 Ubuntu 的软件包管理方式。

一、Ubuntu 采用 Debian 的软件包管理器 dpkg 来管理软件包, 类似 RPM. 系统中所有 packages 的信息都在 /var/lib/dpkg/
目录下(类似于数据库), 其子目录 /var/lib/dpkg/info 用于保存各个软件包的配置文件列表:
 (1).conffiles 记录了软件包的配置文件列表
 (2).list 保存软件包中的文件列表, 用户可以从 .list 的信息中找到软件包中文件的具体安装位置.
 (3).md5sums 记录了软件包的md5信息, 这个信息是用来进行包验证的.
 (4).prerm 脚本在 Debian 包解包之前运行, 主要作用是停止作用于即将升级的软件包的服务, 直到软件包安装或升级完成.
 (5).postinst 脚本是完成 Debian 包解开之后的配置工作, 通常用于执行所安装软件包相关命令和服务重新启动.

/var/lib/dpkg/available 文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,
其中包括当前系统中已安装的和未安装的软件包.

/var/cache/apt/archives 目录是在用 apt-get install 安装软件时,软件包的临时存放路径

/etc/apt/sources.list 存放的是软件源站点, 当你执行 sudo apt-get install xxx 时,Ubuntu 就去这些站点下载软件包到本地并执行安装

二、相关命令使用示例:
 (1)查看某软件包的安装内容
    dpkg -L xxx

 (2)查找软件库中的软件包
    apt-cache search 正则表达式

 (3)显示系统安装包的统计信息
    apt-cache stats
 
 (4)显示系统全部可用软件包的名称
    apt-cache pkgnames

 (5)显示某软件包的详细信息
    apt-cache show xxx

 (6)查找某文件属于哪个包
    apt-file search xxx

 (7)查看已经安装了哪些软件包
    dpkg -l

 (8)查询某软件依赖哪些软件包
    apt-cache depends xxx

 (9)查询某软件被哪些软件包依赖
    apt-cache rdepends xxx

 (10)增加一个光盘源
    sudo apt-cdrom add
    注: 顾名思义, 就是安装更新软件包时让其优先从Ubuntu 光盘上找(如果你不能上网安装/更新, 但有 Ubuntu 的 DVD ISO, 这会对你非常有用)

 (11)系统升级
    sudo apt-get update

 (12)清除所有已删除软件包的残馀配置文件
    dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

 (13)编译时缺少h文件的自动处理
    sudo auto-apt run ./configure

 (14)查看安装软件时下载软件包的临时存放目录
    ls /var/cache/apt/archives

 (15)备份当前系统安装的所有软件包的列表
    dpkg --get-selections | grep -v deinstall > ~/somefile

 (16)从上面备份的安装包的列表文件恢复所有包
    dpkg --set-selections < ~/somefile
    sudo dselect

 (17)清理旧版本的软件缓存
    sudo apt-get autoclean

 (18)清理所有软件缓存
    sudo apt-get clean

 (19)删除系统不再使用的孤立软件
    sudo apt-get autoremove

 (20)查看软件包在服务器上面的地址
    apt-get -qq --print-uris install ssh | cut -d\' -f2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu 软件包管理详解 的相关文章

  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • apt-get install tzdata 非交互式

    当我尝试 apt get install y tzdata 将显示用于选择时区的命令行选项 我试图在脚本中使用它来进行一些设置 如何在没有用户输入的情况下使 apt get 运行 我知道重新配置 tzdata 我可以做 echo Ameri
  • 未找到命令“ember”

    看来我搞砸了 ember cli 安装 我已经使用 sudo 安装了 npm 但是在阅读了 npm 上 ember cli 和 sudo 的一些问题后 我按照此处的说明卸载并重新安装https gist github com isaacs
  • 无法在 Google Cloud Run 上部署 Ubuntu 20.04 Docker 容器

    我正在尝试通过 Google Cloud Run 部署一个基于 Ubuntu 20 04 的简单的基于 Python 的 Docker 容器 我已经成功构建了映像 但是当我尝试部署 Cloud Run 服务时 出现以下错误 省略了项目详细信
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • Linux 桌面快捷方式和安装图标

    我需要添加什么到我的 spec文件来创建桌面快捷方式并在安装过程中为快捷方式分配一个图标 rpm 如果需要脚本 一个示例将非常有帮助 您在 Linux 下使用 desktop 文件作为图标 图标放置的位置取决于您使用的发行版和桌面环境 由于
  • Ubuntu 11.10 上的 c 数学链接器问题 [重复]

    这个问题在这里已经有答案了 我从 Ubuntu 升级后出现了一些奇怪的错误 10 11 11 04 i dont know 到 11 10 我正在得到一个undefined reference to sqrt 使用 math h 时并与 l
  • Apache 反向代理的基本身份验证问题

    我想为在 Ubuntu 服务器 12 04 1 上运行的 Apache 反向代理站点添加基本身份验证 网络应用程序是Jenkins http jenkins ci org运行在 Java EE 容器上 我在中添加了以下配置httpd con
  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • 为什么我不能将 sed 的输出重定向到文件

    我正在尝试运行以下命令 someprogram tee dev tty sed s 2 gt output file 但当我去查看时 该文件始终是空白的 如果我删除 gt output file从命令末尾 我可以看到 sed 的输出 没有任
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • Locale.getDefault() 始终返回 en

    unix 机器上的服务器始终使用 en 作为默认区域设置 以下是区域设置输出 LANG en US LC CTYPE C LC NUMERIC C LC TIME C LC COLLATE C LC MONETARY C LC MESSAG
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library

随机推荐

  • 才华战胜资本,原创受到尊重(抄袭事件后续)

    你敢相信吗 别人剽窃了我的课程 居然还要告我侵犯对方名誉 吾本小镇做题家 侥幸考入理工大 水杉林赏二月兰 梧桐树下闻桂花 感恩福报996 披星戴月写代码 专利 软著 写博客 半个嵌入式专家 穿上长衫笑寒酸 脱下长衫忙油盐 ad PCB 嘉立
  • 【OpenCV4】使用 normalize() 进行归一化(c++)

    函数原型 void cv normalize InputArray src InputOutputArray dst double alpha 1 double beta 0 int norm type NORM L2 int dtype
  • iptables详解及应用(史上最全)

    1 1 iptables概念 从逻辑上讲 防火墙可以大体分为主机防火墙和网络防火墙 主机防火墙 针对于单个主机进行防护 网络防火墙 往往处于网络入口或边缘 针对于网络入口进行防护 服务于防火墙背后的本地局域网 网络防火墙和主机防火墙并不冲突
  • matplotlib绘制柱状图(普通、堆叠、左右分布)

    文章目录 1 堆叠图 2 左右图 示例代码 3 堆叠 左右 示例代码 不论是堆叠 还是左右分布 其实他们都是柱状图bar 只是根据参数的不同 有不同的显示位置 多个bar呈现在一起就看上去像是堆叠起来 或是左右分布了 因此只需要控制bar的
  • Python3学习(七):模块

    Python3 模块 把一些可以反复使用的代码存放在文件中 为一些脚本或者交互式的解释器实例使用 这个文件被称为模块 模块是一个包含所有你定义的函数和变量的文件 其后缀名是 py 模块可以被别的程序引入 以使用该模块中的函数等功能 类似于C
  • JVM 如何自动完成垃圾回收

    一 简介 思考一个问题 在 java 里面我们 new 一个对象 等到程序结束后 这个对象就被自动回收了 完成这项工作只需要确定 哪些内存需要回收 什么时候回收 如何回收 接下来我们详细的解释下这三个问题 二 哪些内存需要回收 由于程序计数
  • 判断大小端存储两种办法

    1 强制转换 给定 int类型的变量a 赋值为1 1的16进制为 00 00 00 01 若小端存储则a中存储为 01 00 00 00 大端存储为 00 00 00 01 则可以取出a的地址强转为char 类型 char a来判断值为0
  • 2023最新最全git安装教程,保姆级手把手式安装!!!

    目录 一 git简介 二 安装过程 1 首先进入git的官网 https git scm com 然后选择Downloads 2 接着选择与自己电脑系统对应的下载选项 我的电脑是windows7的系统 因此选择windows 3 进去之后
  • [导入]TOMPDA WAP新闻订阅教程

    要浏览本条信息请点击文章标题 文章来源 http www wapkf com article other wap 2006 20060511241 html 转载于 https www cnblogs com 200831856 artic
  • 有哪些值得推荐的好用视频剪辑软件?

    首先 我们不管是工作需要 还是做自媒体 一款用着顺手的视频剪辑软件必不可少 经常看到很多人说我是小白 但又想学习视频剪辑 该如何选择适合自己的视频剪辑软件呢 看到抖音 小红书里面很多有意思的视频 自己也想剪辑试试 但又不知从何下手 话不多说
  • HuggingFace——Accelerate的使用

    Overview Accelerate is a library that enables the same PyTorch code to be run across any distributed configuration by ad
  • 20171207编写一个程序,只接受正整数的输入,然后显示所有小于或等于该数的素数。

    素数 在大于1的整数中 只能被1和这个数本身整除的数 思路 用一个标志sign 来标记出素数 include
  • flink学习40:tableAPI的扫描、投影、过滤、列操作

    from用法 select用法 as用法 where用法 filter用法 列操作 增 删 改
  • 【单例模式】

    单例模式 单例模式常见的几种方法 饿汉式 懒汉式DCL 懒汉式内部类 单例模式常见的几种方法 饿汉式 饿汉式 private final static SingletonPattern singletonPattern new Single
  • centos7 升级openssl1.1.1g、openssh8.6p1小记

    系统版本 CentOS Linux release 7 6 1810 Core 默认版本 OpenSSH 7 4p1 OpenSSL 1 0 2k fips 升级版本 OpenSSH 8 6p1 OpenSSL 1 1 1g 1 安装步骤
  • windows10中安装ubuntu双系统时出现unable to find a medium containing a live file system解决办法

    在ubuntu官网上下载最新的18 04 1LTS版本 通过rufus软件将其写入U盘中 但在电脑安装时出现如下错误 经搜索得到如下信息 原贴链接 只需在安装进行到如下界面时 拔掉U盘再插上即可解决问题
  • 我使用OpenCvSharp的一些坑,我的使用心得

    首先是关于 copyto 的操作郁闷 资源图片 需要 是正方形 或者 宽 大于高经我测试 长宽 大小的情况 还是需要跟背景有相应的一致性 比如如果背景 是长大于宽 则资源文件 也需要长大于宽 反之亦然 正方形的图片 则无此要求 要比背景图片
  • Mybatis高级映射

    Mybatis高级映射本质上来说是多个表的联合查询过程 订单数据模型分析思路 数据表 用户表user 记录了购买商品的用户信息 订单表orders 记录了用户创建的订单 购买商品的订单 订单明细表orderdatail 记录了订单的详细信息
  • 玩转Netty,从“Hello World”开始

    大家好 我是老三 之前里 我们讨论了Java的三种IO模型 提到了网络通信框架Netty 它简化和优化了NIO的使用 这期 我们正式开始走近Netty 为什么要用Netty 首先当然是NIO的使用 本身比较复杂 而且还存在一些问题 除此之外
  • Ubuntu 软件包管理详解

    Ubuntu 软件包管理详解 Ubuntu 方便宜用 最值得让人称道的便是其安装软件的方式 一条命令 sudo apt get install xxx 就几乎能帮你搞定所有的软件安装难题 但是有时你可能有这样的需求 查看某个软件包是否安装