apt-get

2023-10-26

问题:
如何查看已经安装的软件?
如何确定一个软件是否已经安装?

目前常用的
==========
*更新本机中的数据库缓存:
sudo apt-get update

*查找包含部分关键字的软件包:
sudo apt-cache search <你要查找的name>

*安装指定的软件:
sudo apt-get install <你要安装的软件包>

*下载软件包源代码(如果有的话):
apt-get source <你要下载的源代码包名>

5,查看已经安装的软件
6,卸载软件

详细的资料
=========
http://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html
apt-get:
安装和卸载------
*更新本机中的数据库缓存:
sudo apt-get update
最好定期更新一下使你自己机器上面的数据和服务器(/etc/apt/sources.list列出)上面的信息保持一致,在安装软件之前可以运行一下这个命令保证成功性。

*安装软件:
#apt-get install packagename
这里将安装你需要的在sources.lists中的最新的软件包,如果有其他依赖则自动安装相应的依赖软件包。packagename可以是多个软件包。
一些有用的选项:
-h This help text.
-d Download only - do NOT install or unpack archives
-f Attempt to continue if the integrity check fails
-s No-act. Perform ordering simulation
-y Assume Yes to all queries and do not prompt
-u Show a list of upgraded packages as well

*卸载软件(用install):
#apt-get install packagename-
在需要卸载的包后面加上一个'-'(我没有实验过),当然可以apt-get install p1 p2-这样多个命令合并了,装p1卸p2。

*卸载软件2:
#apt-get remove packagename
这会卸载相应的软件,同时也会卸载依赖的部分,没办法指定不卸载依赖的。但是软件的配置文件还是会留在系统中。

*完全卸载软件包括删除配置:
#apt-get --purge remove packagename
这样配置文件也会被删除。

*安装软件2(用remove):
#apt-get remove packagename+
这个和用install来卸载软件的意义类似,在包名称后面添加一个+,表示安装。

*修复或者只安装最新版本:
#apt-get --reinstall install packagename
这里,如果你的软件包被破坏了,或者你想要安装一个最新的软件,运行这个。

升级软件包------
*升级软件包1:
#apt-get -u upgrade
这里加上-u选项列出将要升级的软件,可能会提示有些软件不会升级,因为可能会破坏依赖关系,更好的方法是利用apt-get dist-upgrade

你可以通过cd或者添加源地址来更新,如果你想从cd来升级,首先运行apt-cdrom把cd中的软件添加到/etc/apt/sources源中,然后运行apt-get dist-upgrade来升级,但是因为apt-get总是使用最新版本,如果cd中的不是最新的版本,那么也不会用到cd。
*升级软件包2:
#apt-get -u dist-upgrade
这样安装的软件前面apt-get -u upgrade安不了的也会安装了,但个别的仍然不能安装,例如:升级会导致需要卸载一些包,卸载这些包会导致另外的软件不能用,所以就不升级了。

*升级软件包3:
#apt-get -u install packagename
假设前面升级的时候packagename无法升级,那么这个命令会升级packagename如果需要卸载默写模块而卸载这些模块导致一些软件无法使用,那么干脆把这些软件都卸载了,然后升级,这个命令会导致packagename最终升级了。

清理没用的包文件------
用apt-get 安装软件包的时候,apt会从/etc/apt/sources.list里面将相应的软件包恢复出来,把它们存放在一个本地的文档库中(/var/cache/apt/archives/)然后才开始安装,随着时间的增长,这将不断地消耗硬盘的空间。
*清理所有的缓存文件:
#apt-get clean
这会清理所有/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/中没有被锁定的文件。当然你再次安装软件的时候,这个软件又被恢复到本地文档库中了。

*仅仅清理旧的缓存文件:
#apt-get autoclean
这会清理旧版本的/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/中的文件。旧版本是指已经有更新的版本的软件了,再下载的话应下载最新的而不是这个旧版本的了。根据apt-show-versions -p可以知道哪些是旧的。

*安装指定版本的软件包:
# apt-get install package=version

查找信息--------
*查找一个含有packagename字符串的包:
#apt-cache search packagename
这样将输出所有包含packagename字符串的包。

*显示软件包的详细信息:
# apt-cache show stella
这包含了软件包许多的信息,例如如果你已经安装了这个软件包,信息里面也会显示。

*显示软件包的大致信息:
apt-cache showpkg packagename
这会显示大致的信息。

*查看那些包可以升级的信息:
$ apt-show-versions -u
这个apt-show-versions工具需要安装一下的。

*查看当前特定软件版本:
apt-show-versions -p packagename

*检查packagename依赖的包:
#apt-cache depends packagename

工作相关--------
*安装编译源代码需要的库(包):
# apt-get build-dep packagename
所有的源代码包有一个'Build-Depends'域,指明了从源代码编译这个包需要安装的软件。上面的命令可以下载这些包,其中'packagename'是包名。


*查看编译一个包需要哪些其他的库(包):
#apt-cache show packagename
如果你只是想要检查编译一个包需要哪些其他的包,那么可以利用上面的命令,其中'packagename'是包名。


*下载包packagename的源代码:
$ apt-get source packagename

这将在当前目录下载三个文件:*.orig.tar.gz,*.dsc,*.diff.gz。如果这个包是debian的,那么最后一个文件没有,并且第一个文件名里面不包括"orig"字符串。
.dsc文件被dpkg-source使用,把源代码包解压到目录 packagename-version.每一个下载的源代码包里面都有一个debian/目录,这个目录包含了用于创建.deb包的文件。


*下载的时候自动把源代码包编译:
$ apt-get -b source packagename
可能是编译成.deb包,我没有试过。

*根据下载的源代码创建deb包:
$ dpkg-buildpackage -rfakeroot -uc -b
如果你决定在下载的时候不创建deb包,你可以以后通过在下载的包之后创建的目录里面运行这个命令来创建。

*直接利用包管理器安装包:
# dpkg -i file.deb
需要直接使用包管理器,运行这个命令来安装包。

-------dpkg查找
*已知软件包中有一个文件,根据文件查找软件包:
# dpkg -S stdio.h
输入之后,输出如下:
libc6-dev: /usr/include/stdio.h
libc6-dev: /usr/include/bits/stdio.h
perl: /usr/lib/perl/5.6.0/CORE/nostdio.h
这在知道包中有某些文件的时候,来根据文件查找软件包这种情况下非常有用。

*查找安装在你的机器上面的软件包:
dpkg -l

*自动安装缺失的软件:
# auto-apt run command
这里,command是你要运行的命令。例如 auto-apt run ./configure .当缺失依赖软件的时候,它会询问你安装,方便了编译。安装之后会继续运行。auto-apt需要保持一个最新的数据库,利用这个命令进行更新:auto-apt update, auto-apt updatedb and auto-apt update-local。
--------apt-get查找
*利用apt-file根据文件名查找相应的软件包:
$ apt-file search filename
如果你只知道程序名字filename,那么你可以运行这个命令,它的工作方式和 dpkg -S差不多,就是根据某个软件包里可能包含的文件来查找这个软件包的名字。另外,它也会显示包含这个文件的没有安装的软件包。当你编译的时候,提示缺了什么头文件的时候,利用这个很方便地确定需要装哪些软件包(当然利用audo-apt更方便).


*列出一个软件包中包含的文件:
$apt-file list packagename
这里,apt-file是根据一个数据库来读取信息的,所以需要保持数据库是最新的。

*更新apt-file的数据库:
# apt-file update
默认情况下,apt-file的数据库和auto-apt是一样的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

apt-get 的相关文章

  • perl imap 将邮件移至垃圾箱 (Mail::IMAPClient)

    我需要将所有未见的邮件移至垃圾箱 然后从收件箱中删除 my inbox imap gt select Inbox my mails imap gt unseen foreach my msgid mails imap gt set flag
  • 我的 Perl 脚本中的 findnodes 语句有什么问题?

    我有一个简单的 xml 文件 如下所示
  • 如何使用 Perl 从 NCBI 获取 FASTA 核苷酸格式的基因特征?

    我可以手动下载 FASTA 文件 如下所示 gt lcl CR543861 1 gene 1 ATGCTTTGGACA gt lcl CR543861 1 gene 2 GTGCGACTAAAA 通过单击 发送到 并选择 基因特征 FAST
  • 使用 perl 比较两个 Unicode 字符串

    当我运行以下代码时 它不会进入 在此处执行某些操作 部分 my a P 3 lt 1 my b P 3 lt 1 if a ne b do something here 还有另一种方法可以将 Unicode 字符串与 perl 进行比较吗
  • 使用 Getopt::Long 解析参数的最简洁方法

    我使用 GetOpt 来解析命令行参数 我想添加一个新选项 multi 它应该得到一个如下所示的字符串 key1 abc key2 123 key3 xwz 我不知道用户想要提供多少个自定义密钥 但他可以提供 minimax5键 另外 我想
  • 如何在 Debian 上编译 DOS 程序?

    在我的汇编语言课程中 我们使用 DPMI 编写 DOS 程序 不幸的是 我无法一直使用 32 位 Windows 机器 我在我使用的几乎每台计算机上都安装了 Debian 虚拟机 我已经安装了 DOSBox 和 DOSEMU 有什么办法可以
  • 使用 Perl 分割大文本文件

    我必须将一个 1 8Tb 的大文本文件分成两部分 我只需要文件的后半部分 该文件有 n作为记录分隔符 I tried perl ne print if gt line to start from test txt gt result txt
  • Term::ReadLine - 我需要点击向上箭头两次才能检索历史记录

    我正在使用 Term ReadLine 并遇到一个奇怪的问题 我需要点击向上箭头两次才能从 addhistory 中检索项目 这是我正在使用的脚本 use Term ReadLine my term Term ReadLine gt new
  • Perl 的 grep 函数如何与正则表达式一起使用?

    以下 grep 函数如何工作 什么作用 0o1Iil do chars grep 0o1Iil 0 9 A Z a z use Data Dumper print Dumper chars 在 chars中生成以下内容 VAR1 0 VAR
  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • 如何在 Perl 脚本中包含另一个文件中的函数?

    这似乎是一个非常简单的问题 但不知何故 我的 Google Fu 失败了 在 Perl 中包含其他文件中的函数的语法是什么 我正在寻找类似C的东西 include blah h 我看到了使用 Perl 模块的选项 但这似乎需要对我当前的代码
  • 向用户提示多个问题(是/否和文件名输入)

    我想问用户多个问题 我有两种类型的问题 是 否或文件名输入 我不知道如何将这一切放入一个好的if结构 我不确定是否也应该使用 else 语句 有人可以帮我们解决这个问题吗 这是我到目前为止所拥有的 print Do you want to
  • 如何将 Perl 转换为 C?

    有没有可用的工具可以将 Perl 源代码转换为 C 源代码 什么平台都可以 对此的规范答案是MJD 的 为什么不将 Perl 翻译成 C http www perl com pub a 2001 06 27 ctoperl html
  • 如何用perl逐句读取文本文件?

    我想逐句读取文本文件 我的问题是下面的代码仅根据时期分开 usr bin perl use strict use warnings my file data txt open FILE file my buffer while my sen
  • 在 Ubuntu 中执行 .cgi 文件

    我在 Ubuntu 下运行 Apache PHP 当我运行 cgi 文件时 通过http localhost mycgi cgi 浏览器将显示代码而不是运行它 如何让浏览器执行 CGI 文件而不是显示其内容 将这些行添加到您的 apache
  • Perl Parallel::Forkmanager 不允许收集变量值

    也许因为子进程不知道我的散列 请参阅下面的代码 散列 输出没有收集任何内容 除了写入 tmp 文件之外 还有其他方法来收集该值吗 foreach Item AllItems pid pm gt start Item and next Tem
  • 在 qx 运算符中将 perl 数组拆分为单独的参数

    我试图将一组参数传递给qx操作员 考虑 my files qw A txt B txt print qx ls files 这给出了错误 ls cannot access A txt B txt No such file or direct
  • Perl:测试输入阅读器?

    有没有一种方法可以使用标准 Test 等模块自动测试 Perl 程序是否正在读取输入 例如标准输入正确吗 例如 测试一个从 STDIN 读取两个整数并打印它们之和的程序 这不是 100 清楚你的意思 我会回答假设你想编写一个测试脚本来测试你
  • Perl 正则表达式图灵完备吗?

    我见过 Ruby 和 Perl 程序员做了一些事情复杂的代码挑战 https codegolf stackexchange com questions 3596 regex validating regex完全用正则表达式 这前瞻和后瞻 h
  • Perl 语言的目标是在运行时生成快速的程序吗?

    最近有朋友告诉我 看 Perl 从来就不是为了快而设计的 真的吗 我能找到的相关信息是来自维基百科 http en wikipedia org wiki Perl Overview 该语言旨在实用 易于使用 高效 完整 而不是美观 微小 优

随机推荐

  • 小样本学习(Few-shot Learning)综述

    作者丨耿瑞莹 李永彬 黎槟华 单位丨阿里巴巴智能服务事业部小蜜北京团队 分类非常常见 但如果每个类只有几个标注样本 怎么办呢 笔者所在的阿里巴巴小蜜北京团队就面临这个挑战 我们打造了一个智能对话开发平台 Dialog Studio 以赋能第
  • [Flutter]封装了个Toast组件

    Flutter官方插件市场上已经有了很多成熟的Toast组件 如 fluttertoast 等等 使用了一年多的Flutter框架 一时兴起 自己封装了一个简单的Toast组件 注 本人觉得 自动关闭的时候 不宜使用 Navigator p
  • 西门子PLC S7-1200的硬件中断组织块简介

    西门子PLC S7 1200系列是一款中小型西门子PLC 可以在各种自动化项目中进行应用 S7 1200系列设计较为紧凑 经济性较好 而且指令功能较为强大 因此在各种自动化控制解决方案中有较广泛的应用 作为西门子PLC S7 200系列的升
  • [1218]hive之Map Join使用方法

    文章目录 介绍 mapjoin的使用方法 介绍 MAPJION会把小表全部加载到内存中 在map阶段直接拿另外一个表的数据和内存中表数据做匹配 由于在map端是进行了join操作 省去了reduce运行的时间 算是hive中的一种优化 如上
  • 开放原子训练营(第三季)inBuilder低代码开发实验室之探秘

    一 活动介绍 以开放原子训练营为主办方的inBuilder低代码实验室活动现已开启 参与者无论身居计算机业界 偏好低代码开发抑或是普通用户 均可在社区版inBuilder低代码开发平台 一款基于UBML开源项目的广泛适用的发行版 中尝试向导
  • ECMAScript2020 可选链操作符(?.)的应用

    一 前言 const programmer user lin department name 技术部 getSite return 在以前的语法中 想要获得深层次的属性或方法 如果不做前置校验的话 那么就很容易出现这种错误 这可能会导致你整
  • MFC 之 重绘按键Cbutton

    上次我们学习了如何美化对话框的界面 这次我们为上次的对话框添加两个按钮 一个是关闭按钮 另一个是最小化按钮 好 现在我们先看一下效果 是不是很难看 因为我们的对话框美化了 所以我们的按钮也要美化 因为采用贴图的方式来美化 所以 我先给出这两
  • 笔试面试算法经典--矩阵的最短路径和(Java)

    题目 给定一个矩阵m 从左上角开始每次只能向右或者向下走 最后到达右下角的位置 路径上所有的数字累加起来就是路径和 返回所有路径中最小的路径和 例子 给定m如下 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 路径1 3 1
  • 信号去噪 - 基于SVD实现数字信号降噪含Matlab源码

    信号去噪 基于SVD实现数字信号降噪含Matlab源码 介绍 信号处理中的一个重要问题是如何降噪 这在各种应用领域中都有非常重要的作用 奇异值分解 SVD 是一种广泛使用的信号处理技术 可以用于有效地降低信号噪声 本文将介绍如何使用SVD进
  • Elasticsearch 安装及启动【Windows】

    一 下载 Elasticsearch 官网下载地址 https www elastic co cn downloads past releases elasticsearch 选择自己所需版本进行下载 这里以Elasticsearch 8
  • 【操作系统】王道考研 p64-66 IO软件层次结构、IO核心子系统、假脱机技术(SPOOLing技术)

    IO软件层次结构 IO核心子系统 假脱机技术 SPOOLing技术 以下是IO软件层次结构的内容 知识总览 用户层软件 实现了与用户交互的接口 将用户的请求翻译为格式化的IO请求 并通过 系统调用 请求操作系统内核的服务 设备独立性软件 又
  • PyQt5 QTableWidget内容复制功能

    为了更快速的将QTableWidget的内容复制到剪贴板 只需重写这个控件的keyPressEvent event 废话不多说 直接上代码 复制功能 def keyPressEvent self event Ctrl C复制表格内容 if
  • 大语言模型浅探一

    目录 1 前言 2 GPT模型解码 3 InstructGPT 4 基于RWKV微调模型 4 1 RWKV简介 4 2 增量预训练 4 3 SFT微调 4 4 RM和PPO 5 测试 6 总结 1 前言 近来 人工智能异常火热 ChatGP
  • 如何把“自己的”网络中的conv2d替换为dcnv2

    1 dcnv2的实现测试了两种 一种是官方版dcnv2 git链接 https github com CharlesShang DCNv2 git 编译直接cd到DCNv2 然后 make sh即可 第二种是mmcv ops modulat
  • redis单机版部署

    目录 1 下载版本 2 上传解压 3 安装依赖包 4 进入redis目录 执行编译 5 创建相应目录 6 配置redis conf 7 启动redis 8 配置redis开机自启 1 下载版本 以下是我使用的版本 redis 4 0 1 链
  • 黑盒测试用例设计方法案例与练习题

    1 等价类 案例 登录功能 用户名和密码登录 以在线考试系统为例 年龄字段输入 2 网站注册页面年龄输入要求 某网站前台用户注册页面 其中有年龄字段的输入 要求输入1 150之间的正整数 输入条件 有效等价类 取值 编号 无效等价类 取值
  • 4.1.2 到底在规划、设计什么

    最后更新2021 08 19 以最简单 最朴素的语言说 规划 设计就是在拼凑一个框架 虚拟填补小说的事实 让最后一切发生的合情合理 顺乎自然 没有例外 规划 不能将悲剧的结局变成喜剧收尾 但依靠编剧的功底 能够将剧情玩弄于股掌之间 让每位观
  • 天梯赛省赛选拔赛复盘

    很可惜的一场比赛 两小时调H题没调出来T T 如果调出来就能被选上了 无限Sad 意难平 希望蓝桥杯不留遗憾 文章目录 A题 蜗牛与井 签到 B题 火力覆盖 贪心 数学 C题 ZZ的函数 D题 自然溢出 思维 数学 E题 小y的棋子 F题
  • Groovy语言详解

    一 Groovy 概述 Groovy是一种基于Java平台的面向对象语言 Groovy 1 0于2007年1月2日发布 其中Groovy 2 4是当前的主要版本 Groovy通过Apache License v 2 0发布 Groovy中有
  • apt-get

    问题 如何查看已经安装的软件 如何确定一个软件是否已经安装 目前常用的 更新本机中的数据库缓存 sudo apt get update 查找包含部分关键字的软件包 sudo apt cache search lt 你要查找的name gt