linux包管理

# linux包管理

在刚接触ubuntu的过程中,在浏览器下载到了chrome的deb安装包,不知道怎么使用,手足无措,未知的畏惧。希望通过gpt给出命令行apt安装的方式,一直没有理解这个过程,一只学习路上的拦路虎,现在总结学到的linux包管理芝士,知识学爆。

# (安装)包和(软件)源

大多数linux系统在安装后都会有默认的源配置,这些默认源通常包括了操作系统维护者推荐的官方存储库,确保系统可以获取到必要的更新和软件包。包是从源获取到的,因此可能会收到源中给出的软件包服务器地址影响,从而影响下载速度安全性一般,安装一个系统后,可以首先更改为国内阿里云,清华,中科大软件源,加快下载、更新

Ubuntu/Debian更换源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 备份原有源
sudo rm /etc/apt/sources.list # 删除原有源
sudo nano /etc/apt/sources.list # 创建
1
2
3

保存并退出:按 Ctrl+O 保存更改,按 Ctrl+X 退出编辑器。

deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ jammy universe
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates universe
deb http://mirrors.aliyun.com/ubuntu/ jammy multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted
deb http://mirrors.aliyun.com/ubuntu/ jammy-security universe
deb http://mirrors.aliyun.com/ubuntu/ jammy-security multiverse
1
2
3
4
5
6
7
8
9
10
sudo apt update # 更新软件列表
1

CentOS更换源

sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 备份原有源
sudo rm /etc/yum.repos.d/CentOS-Base.repo # 删除原有源
sudo nano /etc/yum.repos.d/CentOS-Base.repo # 创建
1
2
3

保存并退出:按 Ctrl+O 保存更改,按 Ctrl+X 退出编辑器。

[baseos]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$stream/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
enabled=1
metadata_expire=7d

[appstream]
name=CentOS-$releasever - AppStream
baseurl=http://mirrors.aliyun.com/centos/$stream/AppStream/$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
enabled=1
metadata_expire=7d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo yum clean all
sudo yum makecache
1
2

RedHat更换源

sudo cp /etc/yum.repos.d/redhat.repo /etc/yum.repos.d/redhat.repo.bak
sudo rm /etc/yum.repos.d/redhat.repo
sudo nano /etc/yum.repos.d/redhat.repo
1
2
3

保存并退出:按 Ctrl+O 保存更改,按 Ctrl+X 退出编辑器。

[rhel-baseos]
name=Red Hat Enterprise Linux $releasever - BaseOS
baseurl=http://mirrors.aliyun.com/rhel/$releasever/baseos/$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/rhel/RPM-GPG-KEY-redhat-release
enabled=1

[rhel-appstream]
name=Red Hat Enterprise Linux $releasever - AppStream
baseurl=http://mirrors.aliyun.com/rhel/$releasever/appstream/$basearch/os/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/rhel/RPM-GPG-KEY-redhat-release
enabled=1
1
2
3
4
5
6
7
8
9
10
11
12
13

保存并退出:按 Ctrl+O 保存更改,按 Ctrl+X 退出编辑器。

sudo yum clean all
sudo yum makecache
1
2

# Redhat的yum/dnf包管理系统,以及rpm包管理

提示

rpm提供单一镜像包,yum会提供镜像和依赖。大型项目时,rpm包处理比较繁琐,使用yum包会更简单

学习《linux操作系统(微课版)Redhat8/centos8》过程,介绍了Redhat的yum dnf包管理系统,通过yum,dnf来管理BaseOS,APPstream两个软件包。同时介绍了一些dnf命令,通过测试yum,dnf,apt这些简单的指令几乎通用?

sudo dnf list all # 显示所有软件包
sudo dnf info 软件名称 # 显示仓库软件相关信息
sudo dnf install 软件名称 # 安装软件
sudo dnf remove 软件名称 # 移除安装的软件
sudo dnf clean all # 清楚缓存
1
2
3
4
5

在redhat/centos中,有一种低级工具rpm包管理,在浏览器下载的安装包一般是.rpm的RPM系格式

sudo rpm -ivh 软件名.rpm  # 安装rpm格式的安装包
sudo rpm -e 软件名 # 移除某软件
rpm -q 软件名 # 查询已安装软件包
1
2
3

# yum/dnf管理的BaseOS与APPstream

BaseOS 提供了一个基础系统环境。它为各种应用程序和服务提供稳定的运行环境,包含内核、系统工具、基础库(如 glibc)、核心服务(如 sshd)、文件系统工具等。简单说,提供系统必须的环境/工具

AppStream(应用流)存储库包含了各种用户空间的应用程序、开发工具、数据库、语言运行时等,例如python,php,nodejs,mysql

测试:

[cola@bogon ~]$ yum info php 
Last metadata expiration check: 0:30:51 ago on Sat 07 Sep 2024 04:35:06 AM PDT.
Available Packages
Name         : php
Version      : 7.2.24
Release      : 1.module_el8.2.0+313+b04d0a66
Arch         : x86_64
Size         : 1.5 M
Source       : php-7.2.24-1.module_el8.2.0+313+b04d0a66.src.rpm
Repo         : AppStream # 在这里可以得到验证,php属于appstream给用户提供的可选包
Summary      : PHP scripting language for creating dynamic web sites
URL          : http://www.php.net/
License      : PHP and Zend and BSD and MIT and ASL 1.0
Description  : PHP is an HTML-embedded scripting language. PHP attempts to make it
             : easy for developers to write dynamically generated web pages. PHP also
             : offers built-in database integration for several commercial and
             : non-commercial database management systems, so writing a
             : database-enabled webpage with PHP is fairly simple. The most common
             : use of PHP coding is probably as a replacement for CGI scripts.
             : 
             : The php package contains the module (often referred to as mod_php)
             : which adds support for the PHP language to Apache HTTP Server.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# ubuntu的apt/dpkg包管理系统,及snap商店

在使用gpt提供的指令玩ubuntu时,见到更多的是apt安装软件的方式。上面提到,apt包管理指令类似yum/dnf

sudo apt update # 更新软件包列表
sudo apt upgrade # 更新软件包列表
sudo apt search 软件名 # 搜索包列表是否有某个软件   
sudo apt info 软件名 # 查看软件相关信息
sudo apt install 软件名 # 安装某软件
sudo apt remove 软件名 # 移除某软件
sudo apt list --installed # 列出通过apt已安装软件
1
2
3
4
5
6
7

apt

在ubuntu中,有一种低级工具dpkg包管理,在浏览器下载的安装包一般是.deb的debian系格式

sudo dpkg -i 安装包.deb # 安装deb格式的安装包 -i/install
sudo dpkg -r 软件名 # 移除某软件 -r/remove
1
2

扩展:snap

在ubuntu desktop22.04中,自带的软件商店又叫snap商店,可以通过简单的点击实现安装软件。在刷知乎时,看到大佬们提到snap包一直被程序员诟病(段位太低,暂时只感到商店加载缓慢)。

snap list # 列出snap已安装软件
sudo snap remove 软件名 # 移除某软件
1
2

主要缺点:

  • 性能问题 需要加载依赖,启动时间长,体验差
  • 软件包大小 冗余数据,Snap 应用包含所有的依赖项,因此它的包比deb 包要大得多
  • 应用更新 Snap 应用会自动从 Snap 商店更新
最后一次更新于: 2024/09/09, 12:31:12