Ubuntu包管理(未完)

Ubuntu包管理

APT:Advanced Packaging Tool

1. 关于apt

manual提到,提供包管理系统的高层次命令行接口。相对于更专门的APT工具(apt-get、apt-cache),apt是一个终端用户接口,更适合交互式选项的使用。

  • update:从所有配置的源中下载包信息。其他的操作就是根据update获得的信息来操作包。这也就是为什么在apt-install之前最好先update。
  • update:通过source.list安装当前系统所有已经安装的包的更新。如果要求满足依赖,新包被安装,但是存在的包不会移除。如果一个更新要求移除一个已安装的包,此包的更新不会执行。
  • full-upgrade:执行upgrade。如果需要对系统升级,会删除已安装的包。
  • install/reinstall/remove/purge:通过regex/glob执行对指定的一个或多个包的某一动作。
    • 包名后添加‘+’安装包,‘-’移除包。‘=’接想要安装的版本。特定版本可以在包名后添加‘/’+包对应的codename。这也会选择此包的依赖选择版本。
    • remove会移除包的所有数据,但会保留用户配置文件
    • 此类选项不会相应home目录的配置和数据。
  • autoremove:移除安装某些包时需要满足依赖关系的包,可能是依赖关系改变/需要这些依赖的安装包被移除。通过install选项显式安装的包不会提出自动移除。
  • satisfy:满足后接的字符串。也能处理冲突,使用“Conflicts”:

    apt satisfy “foo, bar (>= 1.0)” “Conflicts: baz, fuzz”

  • search:后接regex选项。在可安装包列表中搜索并显示匹配的包。要查找包含具体特征的包可用此选项。要搜索包含一个特定文件的包,尝试apt-file
  • show:显示包的信息如依赖关系、安装下载大小、可下载的来源、包内容的描述。
  • list:与dpkg-query --list相似,可以显示满足确定标准的一系列包。支持通配符。列举已安装的、可更新的、所有可安装的分别有选项–installed、–upgradeable、–all-versions
  • edit-sources:编译source.list文件

apt的所有特征适用于复杂的APT工具:apt-get、apt-cache等

2. apt_preferences

文件/etc/apt/preferences, /etc/apt/preference.d/用于控制安装包的版本。

当source.list包含的引用有多个软件包发行版本(如stable、testing)时,一个软件包的若干版本都可用于安装。APT给每个可用安装包分配了优先级。apt-get会选择最高优先级的包去安装。而APT的preferences会覆盖此默认优先级。

关于/etc/apt/preferences.d下的文件:

字母数字升序;
遵循命名规则:

  1. 没有文件扩展名,或扩展是‘pref’
  2. 只包含:连字符-、下划线_、句号.

对于上述所说的多个版本均可用的包,apt-get会下载source.list中最先列出的实例。APT preferences不会影响实例的选择,只会影响版本的选择

APT默认优先级分配

如果没有特殊版本的pref文件或entry,则优先级就是软件发行版的所属优先级。可能挑选出一个版本“the target release”(可设置在apt-get或/etc/apt/apt.conf),默认比其他版本优先级(包括设置在/etc/apt/preferences中)更高。

其他详情:manual apt_preferences

3. apt-get

处理包的命令行工具,是用户使用APT库的后端。

  • update:从软件源同步包索引文件。可用包的索引从/etc/apt/sources.list中取回。比如,使用某个Debian软件包存档,此命令会检索后缀gz的软件包文件,从而获得某些新的包、包更新的相关信息

    建议在upgrade/dist-upgrade之前执行update。

  • upgrade:从sources.list中的软件源,更新本系统已经安装的所有包的最新版。

    每次安装前应该先upgrade,让apt-get知道可安装包的最新版。

  • dist-upgrade:除了执行upgrade功能,也会处理一些新版本包的依赖问题。可能会移除一些包。
  • dselect-upgrade:与传统Debian包管理前端dselect结合,根据dselect对可安装包的状态的改变,执行一些必要动作,如:移除旧包安装新包。
  • install:后接一/多个要安装或更新的package。这里的package是包名,不是全称、(例如debian系统中,要的是apt-utils而非apt-utils_2.0.9_amd64.deb)。
    • 连字符-添加到包名后,该包会被移除;+是安装某个包;包名后跟随=和版本,用于安装指定版本的包;/加发行版本或者Archive name (stable, testing, unstable)用于选择指定的发行版本。
    • 同时,install还可用于更新指定的已安装包。它是单独更新某个包,upgrade是更新所有的已安装包。
    • ./?/*等字符可用于指定包名。

      ‘lo.*’ 能匹配到 ‘how-lo’‘lowest’。如果不希望这样匹配,可以配合使用正则表达式的$^

  • reinstall: install --reinstall的别名。
  • remove:与install相反,移除包,但保留配置文件。
  • purge:除了remove之外,配置文件也会被删除。
  • source:寻找软件包的源代码。一些可以通过source.list中的deb-src获取包的源码,下载到当前目录下。需要在source.list中配置获取源代码的来源。
    • 指定--compile,该源码会被通过dpkg-buildpackage编译成.deb后缀的二进制文件,由--host-architecture指定体系结构。--donwload使得下载的源码不会被解压。
    • 特定版本的源码,需要在源代码名称后加=和版本
  • build-dep:通过安装/删除某些包,满足要编译的源码的一些依赖。
  • satisfy:满足给定的依赖字符串。
  • check:更新包缓存和检查损坏的依赖。
  • download:下载给定的二进制包到当前路径。
  • clean:清除本地仓库的包文件,但会锁定/var/cache/apt/archives//var/cache/apt/archives/partial/下的文件。
  • autoclean:与clean相似,但是清除的是不再被下载、几乎没用的文件。
  • autoremove:移除那些之前用于满足某些安装包依赖的包,这些包现在不再需要。
  • changelog:下载一个包的更新日志,通过sensible-pager显示。默认显示安装的版本。
  • indextargets:默认显示deb822格式的数据文件列表信息,这些数据文件会被apt-get update下载。可通过--format更改输出格式。主要用于:外部工具与APT协作时获取信息的接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/144822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day57

今日内容概要 模板层 模板之过滤器 模板之标签(if else for) 模板之继承 导入模板 模型层 单表的操作 十几种常见的查询方法 基于下划线的查询方法 外键字段的增删改查 正反向查询(多表跨表) 模板之过滤器 语法: {{obj|filter__name:param}} 变量名字|…

思考如何完成一个审批流

思考如何完成一个审批流 这篇文章,可能没有太多的干货,只是对于自己做过项目的一个反思与整理,同时,让这篇文章暴露在公共视野,虚心接受批评指导,向各位前辈同仁进行学习。 如果此文又不当之处,…

CentOS 7 免密密钥登陆sftp服务 —— 筑梦之路

为什么用sftp而不是ftp? sftp是使用ssh协议安全加密的文件传输协议,ftp在很多时候都是使用的明文传输,相对来说容易被抓包,存在安全隐患。 需求说明 1. 使用sftp代替ftp来做文件存储,锁定目录,不允许用户切…

数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114)

数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114) 距离上一次正儿八经的技术分享又过了整整一周了,距离上一期Exadata专题文章也过了11天了,今天一鼓作气把ESS写完,毕竟明天又要飞北京了。 1 Smart Scan 其…

uniapp大概是怎么个开发法(前端)

写在前面,博主是个在北京打拼的码农,从事前端工作5年了,做过十多个大大小小不同类型的项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何…

如何实时提取微信群收到的二维码图片?

10-4 在有些工作中,需要实时提取在微信中收到的二维码图片,比如微信里有一百个群,怎么才能知道这些群里发了二维码出来,要实现这样的功能,微信本身并不提供,但是可以通过一些其它技巧完成。 大概的原理是…

基于Spring、SpringMVC、MyBatis的漫画网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring、SpringMVC、MyBatis的漫画网…

鸿蒙原生应用开发-DevEco Studio中HarmonyOS与OpenHarmony项目的切换

一、找到该目录 二、修改操作系统类型 三、分别进行开发,一些常规的应用功能实现后,相互切换后都可以正常运行的。前期OpenHarmony项目如果连接开发板比较困难的化,开发完成后,切换成为HarmonyOS后就可以比较详细地看看效果了。

Qt调用python写好的函数,利用Python丰富的图像处理库来完成各种任务

一、前言 近年来,Python已经成为一种广泛应用于科学计算、数据分析和机器学习等领域的强大编程语言。其丰富的生态系统和大量的开源库使得Python成为处理图像、音频、视频和其他多媒体数据的理想选择。在图像处理领域,Python提供了许多方便的函数和库,如OpenCV、PIL(Pytho…

企业微信H5开发遇到的坑

企业微信官方推荐wx.agentConfig引用<script src"https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>是没有效果的 必须引用以下代码才有效果&#xff0c;这也是我看了社区的回答才有所收获&#xff0c;是一个坑 且VUE引用在线的…

react hook函数式组件useState使用/params父向子传参

引入 import { useState } from "react";定义 const [count, setCount] useState(0);使用 import { useState } from "react"; function Son(params) {const [count, setCount] useState(0);function handleClick() {setCount(count 1);}// 父 <S…

js--处理object的常用方法

处理object的常用方法 1、判断数据类型2、Object.getOwnPropertyNames() 1、判断数据类型 Object.prototype.toString.call(null);// ”[object Null]” Object.prototype.toString.call(undefined);// ”[object Undefined]” Object.prototype.toString.call(“abc”);// ”…

asp.net blazor集成ReactiveUI.Blazor

asp.net blazor项目添加Nuget包ReactiveUI和ReactiveUI.Blazor 创建视图模型BlogPostViewModel继承自ReactiveObject public class BlogPostViewModel : ReactiveObject{private readonly AnonymousBlogClient _http;public List<BlogCategory> Categories { get; set; …

基于架构软件设计方法及应用

随着国内外化工行业的繁荣与发展&#xff0c;从2018年开始&#xff0c;某能源集团下属的化工部&#xff0c;连续投资建设了MES&#xff08;生产制造&#xff09;系统、设备管理系统、安全管控系统、能源管理系统。这些系统建设得都非常好&#xff0c;无论是业务的切合度&#x…

狂神说笔记 快速入门Nginx

公司产品出现瓶颈&#xff1f; 我们公司项目刚刚上线的时候&#xff0c;并发量小&#xff0c;用户使用的少&#xff0c;所以在低并发的情况下&#xff0c;一个jar包启动应用就够了&#xff0c;然后内部tomcat返回内容给用户。 但是慢慢的&#xff0c;使用我们平台的用户越来…

【考研复习】二叉树的特殊存储|三叉链表存储二叉树、一维数组存储二叉树、线索二叉树

文章目录 三叉链表存储二叉树三叉链表的前序遍历&#xff08;不使用栈&#xff09;法一三叉链表的前序遍历&#xff08;不使用栈&#xff09;法二 一维数组存储二叉树一维数组存储二叉树的先序遍历 线索二叉树的建立真题演练 三叉链表存储二叉树 三叉链表结构体表示如下图所示…

HBase之Compaction

目录 Compaction触发条件相关参数 文件选取策略ExploringCompactionPolicy常见优化 Compaction 随着memstore的不断flush&#xff0c;storefile的数量将会不断增加。compaction将通过合并storefile来减少文件数量&#xff0c;并提高读性能。conpaction以store为单位 Compacti…

飞书开发学习笔记(六)-网页应用免登

飞书开发学习笔记(六)-网页应用免登 一.上一例的问题修正 在上一例中&#xff0c;飞书登录查看网页的界面显示是有误的&#xff0c;看了代码&#xff0c;理论上登录成功之后&#xff0c;应该显示用户名等信息。 最后的res.nickName是用户名&#xff0c;res.i18nName.en_us是英…

BASE理论

BASE理论 介绍 BASE理论是指基本可用&#xff08;Basically Available&#xff09;、软状态&#xff08;Soft State&#xff09;和最终一致性&#xff08;Eventually Consistent&#xff09;。与CAP理论不同&#xff0c;BASE理论重点强调分布式系统的可用性、灵活性和实时性。…

IntelliJ IDEA 安装 GitHub Copilot插件 (最新)

注意&#xff1a; GitHub Copilot 插件对IDEA最低版本要求是2021.2&#xff0c;建议直接用2023.3&#xff0c;一次到位反正后续要升级的。 各个版本的依赖关系&#xff0c;请参照&#xff1a; ##在线安装&#xff1a; 打开 IntelliJ IDEA扩展商店&#xff0c;输入 "Git…