简介

Linux 系统中的软件管理体系主要包括软件包管理工具、软件仓库以及相关的依赖管理等方面。以下是详细介绍:

软件包管理工具

  • dpkg:Debian 及其衍生系统(如 Ubuntu)使用的底层软件包管理工具。它用于安装、卸载、查询和管理.deb 格式的软件包。例如,使用 dpkg -i package.deb 命令可以安装名为 package.deb 的软件包。

  • apt:基于 dpkg 的高级软件包管理工具,提供了更方便的命令行接口和软件仓库管理功能。可以通过 apt update 命令更新软件包列表,使用 apt install package_name 命令安装软件包。

  • rpm:Red Hat 及其衍生系统(如 CentOS、Fedora)使用的软件包管理工具,用于管理.rpm 格式的软件包。例如,rpm -ivh package.rpm 命令可用于安装软件包。

  • yum:基于 rpm 的软件包管理工具,能自动处理软件包的依赖关系,从指定的软件仓库中下载并安装软件包。通过 yum install package_name 可以安装软件包,yum update 可以更新系统软件包。

  • dnf:新一代的包管理工具,在 Fedora 等系统中逐渐取代 yum。它具有更快的运行速度和更简洁的命令语法,功能与 yum 类似,例如 dnf install package_name 用于安装软件包。

软件仓库

官方软件仓库:由 Linux 发行版官方维护,包含了经过测试和认证的软件包,具有较高的稳定性和安全性。例如,Ubuntu 的官方软件仓库包含了大量的开源软件,用户可以通过 apt 工具方便地获取和安装。

第三方软件仓库:一些软件开发商或社区会提供自己的软件仓库,以方便用户获取最新版本或特定的软件。例如,Google Chrome 浏览器的官方网站提供了适用于 Linux 系统的软件仓库,用户可以将其添加到系统中,通过包管理工具进行安装和更新。

依赖管理

软件包之间可能存在依赖关系,即一个软件包需要依赖其他软件包才能正常运行。Linux 的软件管理体系能够自动处理这些依赖关系。当使用包管理工具安装软件包时,它会检查软件包的依赖关系,并自动下载和安装所需的依赖软件包。例如,安装一个图形化应用程序时,可能需要依赖某些图形库,apt 或 yum 等工具会自动识别并安装这些依赖库。

软件编译与安装

除了使用软件包管理工具安装软件外,还可以从源代码编译安装软件。这种方式可以让用户根据自己的需求对软件进行定制,但需要用户具备一定的编译知识和工具。通常,需要先下载软件的源代码,然后使用 configure 脚本进行配置,再使用 make 命令进行编译,最后使用 make install 命令将软件安装到系统中。

linux软件包安装方式

  • yum/apt:yum/apt命令替我们从网络下载软件包,替我们安装,如果软件包有依赖,yum/apt也会替我们下载并安装,但是需要网络

  • rpm/dpkg:手动下载rpm/deb包,rpm/dpkg命令手动安装,如果有依赖手动解决

  • 二进制软件包:类似于绿色软件,解压即用,一般需要简单配置,如果有依赖也需要自己解决

  • 编译安装:下载软件源代码,配置、编译安装、高度自定义,遇到依赖问题自己解决

软件安装命令之apt

apt 是 Debian、Ubuntu 等 Linux 发行版中常用的高级软件包管理工具,基于 dpkg 构建,它能自动处理软件包之间的依赖关系,从软件仓库中获取并安装软件。

配置apt源

将apt源替换成国内的,有助于下载、更新软件包时提速.

参考:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11dJt3Ko

以Ubuntu22.04为例:

# 修改/etc/apt/sources.list文件
vim /etc/apt/sources.list # 将文件内容替换成下列内容
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse # deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

apt之查询软件

查询已经安装的所有软件

apt list

# 查询已经安装的所有软件
apt list --installed # 查询可升级的软件包
apt list --upgradable

查询指定的安装包

# 搜索已经安装的软件包,根据关键字模糊搜索
apt search [keywords] # 查看指定软件包的详细信息,查看指定软件包的详细信息,如版本、依赖关系等。
apt show [package_name] # 示例apt show [package_name]
root@master:~$ apt show nginx
Package: nginx
Version: 1.24.0-2ubuntu7.3
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Nginx Maintainers <pkg-nginx-maintainers@alioth-lists.debian.net>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1352 kB
Provides: httpd, httpd-cgi, nginx-abi-1.24.0-1
Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpcre2-8-0 (>= 10.22), libssl3t64 (>= 3.0.0), zlib1g (>= 1:1.1.4), iproute2, nginx-common (= 1.24.0-2ubuntu7.3)
Breaks: nginx-core (<< 1.22.1-6~), nginx-extras (<< 1.22.1-6~), nginx-light (<< 1.22.1-6~)
Replaces: nginx-core (<< 1.22.1-6~), nginx-extras (<< 1.22.1-6~), nginx-light (<< 1.22.1-6~)
Homepage: https://nginx.org
Download-Size: 520 kB
APT-Sources: http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
Description: small, powerful, scalable web/proxy server
Nginx ("engine X") is a high-performance web and reverse proxy server
created by Igor Sysoev. It can be used both as a standalone web server
and as a proxy to reduce the load on back-end HTTP or mail servers.

apt之安装软件

使用apt install可以安装软件,有-y选项,作用是自动回答所有询问为 “是(yes)”,避免在执行操作过程中出现交互式确认提示。

用法示例:

# 安装nginx
apt install -y nginx # 批量安装
apt install -y nginx git jdk

清理缓存并重新安装

有时,损坏的软件包可能是由于缓存文件损坏导致的。你可以清理 apt 的缓存,然后重新安装有问题的软件包。

# 清理缓存
apt clean
# 重新安装
apt install --reinstall [package_name]

apt之更新软件

更新软件包列表,确保获取到最新的软件包信息。这有助于解决因软件包信息过时导致的问题。

# 更新所有软件包列表
apt update -y

升级软件包

# 升级所有的已安装的软件包
apt upgrade -y # 升级指定的软件包
apt upgrade [pakage_name] # 系统全面升级,不仅会更新已安装的软件包,还会处理因依赖关系变化而需要升级的软件包。
apt full-upgrade

apt之卸载软件

卸载软件包:卸载软件包但会保留配置文件。

apt remove package_name

彻底卸载软件包:既卸载软件包,也会删除其配置文件。

apt purge package_name

apt之清理软件

清理缓存:删除 /var/cache/apt/archives 目录下所有已下载的软件包文件,以释放磁盘空间。

apt clean

自动清理:仅删除那些无法再被下载的软件包文件。

apt autoclean

自动移除:移除那些因其他软件包的卸载而不再需要的依赖软件包。

sudo apt autoremove

dpkg

dpkg 是 Debian 及其衍生系统(如 Ubuntu)使用的底层软件包管理工具,主要用于管理 .deb 格式的软件包

dpkg之安装软件包

使用 -i 选项可以安装指定的 .deb 软件包。

# 需要将 package.deb 替换为实际的软件包文件名。不过,dpkg 安装时不会自动处理软件包的依赖关系,如果软件包有未满足的依赖,安装可能会失败。
dpkg -i package.deb

dpkg之卸载软件包

移除软件包:使用 -r 选项可以移除指定的软件包,但会保留其配置文件。

dpkg -r package_name

使用 -P 选项可以彻底移除软件包及其配置文件。

dpkg -P package_name

dpkg查询软件包

列出已安装的软件包

使用 -l 选项可以列出系统中所有已安装的软件包,也可以通过指定软件包名称或通配符来列出特定的软件包。

# 列出所有的已安装的软件包
dpkg -l # 查询指定的软件包
dpkg -l nginx

查看软件包详细信息:使用 -s 选项可以查看指定软件包的详细信息,包括版本、状态、依赖关系等。

dpkg -s package_name

查找文件所属的软件包:使用 -S 选项可以查找指定文件是由哪个软件包安装的。

dpkg -S /path/to/file

yum和rpm后续有时间再写入

Linux系统中的软件管理的更多相关文章

  1. Linux系统中安装软件方法总结

    Linux系统中安装软件方法总结 [1]Linux系统中安装软件的几种方式 [2] Linux配置yum源(本地源和网络源) [3] SuSE下zypper源配置 [4] SUSE zypper 本地 ...

  2. Linux系统中安装软件的几种方式

    转载:https://blog.csdn.net/qq_36119192/article/details/82866329 好长时间没有静下心来学习一下linux了 最近对linux安装软件有了点小小 ...

  3. linux系统中firewalld防火墙管理工具firewall-config(GUI图形用户界面)

    firewall-config是firewalld防火墙管理工具的GUI(图形用户界面)版本,几乎可以实现所有以命令行来执行的操作. firewall-config的界面如下图(在终端直接运行fire ...

  4. Linux系统下的软件管理(rpm)、搭建第三方软件库、yum的黑名单

    对wps-office进行模糊匹配照样可以查找出该软件yum clean all ? ? ? ?##清空yum缓存识别新配置 测验安装wps软件: 安装成功即可使用办公软件 1.yum install ...

  5. 用户管理 之 在Linux系统中,批量添加用户的操作流程

    一.阅读此文件您需要掌握的基础知识: <Linux 用户(user)和用户组(group)管理概述><用户(user)和用户组(group)配置文件详解><Linux 用 ...

  6. 用户管理 之 Linux 系统中的超级权限的控制

    在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户 ...

  7. 『学了就忘』Linux服务管理 — 75、Linux系统中的服务

    目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...

  8. 使用Linux系统中的SSH服务

    使用Linux系统中的SSH服务 1.SSH服务应用场景 ① 可以实现对文件的上传与下载 ② 实现远程管理Linux 2.安装SSH服务器 服 务:sshd 位 置:光盘2 软 件:openssh-s ...

  9. Linux系统中常用操作命令

    常用指令 ls        显示文件或目录     -l          列出文件详细信息l(list)     -a         列出当前目录下所有文件及目录,包括隐藏的a(all)mkdi ...

  10. Xshell6远程访问linux及Xftp6远程针对linux系统中文件操作(附图文详解)

    1.首先我们需要先做好前期准备工作,需要到XManager6官网上将Xshell及Xftp下载并安装,安装过程一直下一步就好了.这里是其官网:http://www.xshellcn.com/.安装完成 ...

随机推荐

  1. 调试存储过程中出现 [Microsoft][ODBC SQL Server Driver]对于造型说明无效的字符值

    调试存储时如果有日期类型的参数,传入格式为:2020-07-13 12:00:00 ,无需用引号括起来. 否则会提示[Microsoft][ODBC SQL Server Driver]对于造型说明无 ...

  2. HTML 基本骨架

    HTML 基本骨架 HTML5的骨架是构建HTML5页面的基础结构,它主要由以下几个部分组成: <!DOCTYPE html> <html> <head> < ...

  3. [记录点滴]Redis实现简单消息队列

    [记录点滴]Redis实现简单消息队列 目录 [记录点滴]Redis实现简单消息队列 0x00 摘要 0x01 缘由 0x02 背景概念 2.1 Redis是否适合做消息队列 2.1.1 Redis的 ...

  4. 最长不降子序列 n log n 方案输出与 Dilworth 定理 - 动态规划模板

    朴素算法 不必多说,\(O(n^2)\) 的暴力 dp 转移. 优化算法 时间为 \(O(n \log n)\) ,本质是贪心,不是 dp . 思路是维护一个单调栈(手写版),使这个栈单调不降. 当该 ...

  5. StarBlog博客开发笔记(33):全新的访问统计功能,异步队列,分库存储

    前言 虽然现在工作重心以AI为主了,不过相比起各种大模型的宏大叙事,我还是更喜欢自己构思功能.写代码,享受解决问题和发布上线的过程. 之前 StarBlog 系列更新的时候我也有提到,随着功能更新,会 ...

  6. 大模型本地部署搭建【ollama + deepseek + dify】

    大模型本地部署搭建[在线] 一.ollama的下载.安装.配置 ollama是管理和运行所有开源大模型的平台 下载地址:https://ollama.com/download 或github下载:ht ...

  7. Ai 系列 —— DeepSeek 初步介绍

    DeepSeek 初步使用介绍 背景 Ai 正在慢慢在改变我们的生活,比如老一辈可能已经在用豆包(字节跳动推出的AI聊天机器人) 前端开发,某些公司内部已在使用图生文(设计稿生成前端代码) 网上也有许 ...

  8. 解决 Dell PowerEdge T630 增加第三方 PCIe 设备后制冷系统异常

    博客链接:解决 Dell PowerEdge T630 增加第三方 PCIe 设备后制冷系统异常 配置 Device: Dell PowerEdge T630 CPU: Intel(R) Xeon(R ...

  9. python面向对象-我敢站在世界巅峰保证:这里可以找到几乎百分之九十python面向对象的内容(面向对象三大特性、成员、组合、特殊成员、反射、类的约束、自定义异常、多继承之C3算法)

    概要: 面向对象 2 面向对象 Java语言:只支持面向对象方式 python语言: 面向过程[不推荐] 函数式[推荐] 面向对象[比较推荐]了解.能看懂.看源码 函数式编程:代码重用性.可读性较好 ...

  10. 数据库离程序员有多远 - cnblogs救园行动感想

    这两周,我参与了博客园的"2024救园行动",成了终身会员.说实话,当初报名的时候,我心里还挺兴奋的,想着这下能和不少老朋友在这个社区里再次相聚.毕竟,在数据库行业摸爬滚打了这么多 ...