九、Ubuntu Linux操作系统
一、Ubuntu简介
- Ubuntu Linux是由南非人马克·沙特尔沃思(Mark Shutteworth)创办的基于Debian Linux的操作系统,于2004年10月公布
- Ubuntu是一个以桌面应用为主的Linux发行版操作系统
- Ubuntu拥有庞大的社区力量,用户可以方便地从社区获得帮助
- 其官方网站:https://ubuntu.com/
- 官方下载地址:https://ubuntucom/download/desktop/thank-you?version=22.04.4&architecture=amd64
二、Ubuntu的安装详解
1.安装介质的选择
在安装操作系统时,我们需要引导介质,可以是网络PXE,光盘,U盘等等
在启动硬件时需要读取引导资源并引入安装环境
2.虚拟机中安装过程展示
最简磁盘分区:
三、Ubuntu的用户使用
1.ubuntu系统中的常规用户登录方式
- 在系统root用户是无法直接登录的,因为root用户的权限过大所以其安全性比较差
- 在登录系统时一般使用在安装系统时建立的普通用户登录
- 如果需要超级用户权限:
sen@sen:~# sudo
如果需要切换超级用户身份首先要更改root用户密码
sen@sen:~# sudo passwd root
$sudo passwd
[sudo] password for root : #输入当前用户密码
New password: #输入新密码
Retype new password: #确认新密码passwd:password updated successfu1ly
$su - root
Password:
root@sen:~#
2.ubuntu用户密码破解
a.在系统安装完成后默认grub启动等待时间为0,建议改为5秒,否则在启动过快无法手动写入启动参数
root@sen:~# vim /etc/default/grubGRUB_TIMEOUT-5
root@sen:~# grub-mkconfig>/boot/grub/grub.cfg
b.当密码忘记时
重启系统并在grub引导阶段编辑启动内核参数
编辑内核启动选项进入单用户模式
通过设置进入单用户模式后不需要密码即可得到root用户身份,在此身份下使用passwd命令修改相应密码即可
Note
ro换成rw 表示在系统内核引导阶段读写挂载目录
init=/bin/bash表示在内核启动后直接初始化启动/bin/bash程序,不进行系统默认的初始化过程
四、Ubuntu下的软件管理
- 在Ubuntu中使用的软件包类型为DEB
- dpkg为DEB软件包的管理工具
- DEB软件同样可以像rpm软件包一样构建软件按仓库
- 利用软件仓库管理软件时使用apt命令来完成
1.dpkg命令详解
a.什么是dkpg
- dpkg(debian packages)是Debian软件包管理器的基础常用于安装、卸载和提供与.deb软件包相关的信息
- 需要注意的是dpkg本身是一个底层的工具,并不具备从远程包仓库下载包以及处理包的依赖关系
b.dkpg命令操作实例
1.列出系统中安装的所有软件包信息
root@sen:~# dpkg -l #列出系统中已经安装的软件包
root@sen:~# dpkg -l vim* #列出所有vim开头的软件包
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pe>
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name 软件名称 Version 软件版本 软件架构Architecture Description软件描述
+++-==============-=====================-============-======================>
ii vim 2:9.1.0016-1ubuntu7.4 amd64 Vi IMproved - enhanced>
ii vim-common 2:9.1.0016-1ubuntu7.4 all Vi IMproved - Common f>
un vim-doc <none> <none> (no description availa>
un vim-gtk3 <none> <none> (no description availa>
un vim-motif <none> <none> (no description availa>
un vim-nox <none> <none> (no description availa>
ii vim-runtime 2:9.1.0016-1ubuntu7.4 all Vi IMproved - Runtime >
Note
第一字符为期望值,它包括:
代码 | 含义 |
u | 状态未知,这意味着软件包未安装,并且用户也未发出安装请求 |
i | 用户请求安装软件包 |
r | 用户请求卸载软件包 |
p | 用户请求清除软件包 |
h | 用户请求保持软件包版本锁定 |
第二列,是软件包当前的状态,此列包括软件包的六种状态:
代码 | 含义 |
n | 软件包未安装 |
i | 软件包安装并完成配置 |
c | 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中 |
u | 软件包被解包,但还未配置 |
f | 试图配置软件包,但是失败了 |
h | 软件包安装,但是没有成功 |
第三列标识错误状态,可以总结为四种状态,第一种状态标识没有问题,为空,其他三种符号则标识相应问题
代码 | 含义 |
h | 软件包被强制保持,因为其他软件包依赖需要,无法升级 |
r | 软件包被破坏,可能需要重新安装才能正常使用(包括删除) |
x | 软件包被破坏,并且被强制保持 |
2.安装deb包
root@sen:~# wget https://dldir1.99.com/qqfi1e/9q/QQNT/Linux/QQ_3.2.6_240322_amd64_01.deb #现在实验软件包
root@sen:~# dpkg-i /mnt/QQ_3.2.6_240322_amd64_01.deb #安装软件包
3.查看deb软件信息
root@sen:~# dpkg -L linuxqq #列出linuxqq在安装过程中在系统生成的所有文件
root@sen:~# dpkg -s linuxqq #显示1inuxqq的详细信息
root@sen:~# dpkg-query -s qq #显示搜索在linuxqq这个安装包中所有绝对路径包含qq字符的文件
root@sen:~# dpkg-query -c linuxqq #显示软件的控制文件
4.deb软件的卸载
root@sen:~# dpkg -r linuxqq #删除软件主体,保留软件配置文件和数据文件
root@sen:~# dpkg -P linuxqq #彻底删除软件包
2.管理ubuntu软件仓库
安装好系统后默认已经配置好了网络软件仓库,但是在生产环境中一般不允许在网络中直接安装软件搭建本地软件仓库的方法如下:
a.挂在镜像并设定开机自动挂载
root@sen:~# vim /etc/rc.loca1 #编写开机启动脚本
#!/bin/bash
mount /dev/cdrom/ubuntu
root@sen:~# chmod +x /etc/rc.1oca1 #开启可执行权限实现开启可自动执行
root@sen:~# sh /etc/rc.local #在当前环境执行
root@sen:~## df /ubuntu
Filesystem 1к-blocks Used Available Use% Mounted on
/dev/sr0 4899762 4899762 0 100% /ubuntu
Note
/dev/cdrom 是系统光驱,我们在虚拟机中的虚拟光驱中插入镜像,在挂载镜像时需要把这块代码换成镜像名称
b.在系统中指定本地软件源
root@sen:~# mount /dev/cdrom /media
mount: /media: WARNING: source write-protected, mounted read-only.
root@sen:~# df /media
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sr0 6057964 6057964 0 100% /media
root@sen:~# cd /media/pool
root@sen:/media/pool# ls
main restricted
root@sen:/media/pool# cd main
root@sen:/media/pool/main# ls
a d g j liba libd libg libn libu libz o s x
b e h k libb libe libi libp libv m p t z
c f i l libc libf libm libs libx n r u
root@sen:/media/pool/main# cd /etc/apt
root@sen:/etc/apt# ls
apt.conf.d keyrings preferences.d.save sources.list.d.bak
auth.conf.d preferences.d sources.list trusted.gpg.d
root@sen:/etc/apt# mv sources.list.d.bak sources.list.d
root@sen:/etc/apt# ls
apt.conf.d keyrings preferences.d.save sources.list.d
auth.conf.d preferences.d sources.list trusted.gpg.d
root@sen:/etc/apt# lsb_release -sc
No LSB modules are available.
noble
root@sen:/etc/apt# vim sources.list
root@sen:/etc/apt# cat sources.list
deb file:///media noble main restricted
测试:
root@sen:/etc/apt# apt install gcc -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:binutils binutils-common binutils-x86-64-linux-gnu gcc-13 gcc-13-x86-64-linux-gnugcc-x86-64-linux-gnu libasan8 libbinutils libcc1-0 libctf-nobfd0 libctf0libgcc-13-dev libgprofng0 libhwasan0 libitm1 liblsan0 libquadmath0 libsframe1libtsan2 libubsan1
Suggested packages:
Note
/etc/apt/sources.list文件时软件源指向文件,类似/etc/yum.repos.d/xxx.repo
在安装源中的安装包取决与镜像中包含的软件,不是所有的软件都在镜像中存在
3.apt安装软件包命令
(1)apt install package:安装软件包;重新安装可以使用指令apt install --reinstall package
(2)apt -f install package:修复安装
(3)apt upgrade:更新已经安装的软件
(4)aptupdate:更新软件包列表
(5)apt-cache search package:搜索软件,可以使用正则表达式,比如sof*表示搜索一sof开头的软件包
(6)apt-cache show package:查看软件包信息
(7)apt-cache dump:查看每个软件包的简要信息
(8)apt-cache depends package:查看软件包以来关系
(9)apt remove package:卸载一个软件包但是保留相关配置信息
(10)apt remove package --purge:删除软件包同时删除相关配置信息
(11)apt clean 或 apt autoclean:删除所有软件缓存,软件包的缓存在系统的/var/cache/apt/archives中。
Note
下载的软件存在/var/cache/apt/archives
相关文章:

九、Ubuntu Linux操作系统
一、Ubuntu简介 Ubuntu Linux是由南非人马克沙特尔沃思(Mark Shutteworth)创办的基于Debian Linux的操作系统,于2004年10月公布Ubuntu是一个以桌面应用为主的Linux发行版操作系统Ubuntu拥有庞大的社区力量,用户可以方便地从社区获得帮助其官方网站:http…...
SpringBoot 新冠密接者跟踪系统:校园疫情防控的智能守护者
摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…...

【Ubuntu】E: Unable to locate package xxx
报错描述 在 Ubuntu 上 执行 apt install xxx 出现下面的报错: 即无法定位到该 Package,一般形式如下: # apt install xxx Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable …...
vue多页面应用集成时权限处理问题
在多页面应用(MPA)中,权限管理通常会涉及到每个页面的访问控制、身份验证、以及权限校验。以下是几种常见的权限处理方式: 1. 前端路由权限控制 原理:虽然是多页面应用,通常每个页面会独立加载和渲染&…...

Socket编程(TCP/UDP详解)
前言:之前因为做项目和找实习没得空,计算机网络模块并没有写成博客,最近得闲了,把计算机网络模块博客补上。 目录 一,UDP编程 1)创建套接字 2)绑定端口号 3)发送与接收数据 4&…...

qt QConicalGradient详解
1、概述 QConicalGradient是Qt框架中QGradient的一个子类,它用于创建锥形渐变效果。锥形渐变是从一个中心点出发,沿着360度的圆周扩散的颜色渐变。这种渐变通常用于模拟光线旋转、创建彩虹效果或实现其他复杂的颜色过渡。QConicalGradient允许你定义渐变…...
存储过程与自然语言处理逻辑的不同与结合
在现代软件开发中,存储过程与自然语言处理(NLP)逻辑都发挥着重要作用。存储过程是一种在数据库内部运行的预编译程序,通常用于处理与数据相关的任务,例如插入、更新、删除数据以及复杂的查询操作。而自然语言处理&…...

了解Linux —— 理解其中的权限
前言 在了解Linux权限之前,先来探讨我们使用的shell 命令它到底是什么? Linux 是一个操作系统,我们称其为内核(kernel) ,正常情况下,我们一般用户操作并不是去直接使用内核,而是通过kernel 的外壳程序&…...
知识图谱嵌入与因果推理的结合
知识图谱通过节点(实体)和边(关系)来表示现实世界中的信息,但如何将这些信息转化为可进行推理和决策的形式,仍然是一个挑战。 另一方面,因果推理(Causal Inference)作为…...

STM32 PWM波形详细图解
目录 前言 一 PWM介绍 1.1 PWM简介 1.2 STM32F103 PWM介绍 1.3 时钟周期与占空比 二.引脚映像关系 2.1引脚映像与寄存器 2.2 复用功能映像 三. PWM 配置步骤 3.1相关原理图 3.2配置流程 3.2.1 步骤一二: 3.2.2 步骤三: 3.2.3 步骤四五六七: …...
Python Web 开发 FastAPI 入门:从基础架构到框架比较
Python Web 开发 FastAPI 入门:从基础架构到框架比较 目录 🖥️ Web 服务器概述(如 Nginx、Apache)🔗 前后端分离架构详解🔄 HTTP 路由和请求处理机制🧰 Web 框架概述:Django、Fla…...
基于STM32的智能仓库管理系统设计
目录 引言环境准备 硬件准备软件准备智能仓库管理系统基础 控制系统架构功能描述代码实现:实现智能仓库管理系统 4.1 RFID标签读取模块4.2 库存管理模块4.3 数据显示与监控模块4.4 无线通信模块应用场景:智能仓库管理系统优化问题解决方案与优化收尾与总…...

排序算法--堆排序【图文详解】
“留在码头的船才最安全” “但亲爱的,那不是造船的目的。 堆--插入heapInsert 原来有一个大根堆,如图: 现在要新插入一个数字50,进行插入 流程:和父亲相比,如果比父亲大,和父亲交换ÿ…...

FCBP 认证考试要点摘要
理论知识 数据处理与分析:包括数据的收集、清洗、转换、存储等基础操作,以及数据分析方法,如描述性统计分析、相关性分析、数据挖掘算法等的理解和应用 。数据可视化:涉及图表类型的选择与应用,如柱状图、折线图、饼图…...
鸿蒙生态崛起的机遇有什么
鸿蒙生态系统的崛起为各个领域带来了多个机遇,主要体现在以下几个方面: 智能设备的互联互通:鸿蒙系统旨在实现不同设备之间的无缝连接,为物联网(IoT)设备的发展提供了良好的基础。这将推动智能家居、智慧城…...

基础(函数、枚举)错题汇总
枚举默认从0开始,指定后会按顺序赋值 而这个枚举变量X,如果在全局(函数外部)定义,那默认为0,如果在函数内部(局部变量),那就是随机值,必须初始化。 枚举变量…...
【Spark源码分析】规则框架- `analysis`分析阶段使用的规则
analysis分析阶段使用的规则 规则批策略规则说明SubstitutionfixedPointOptimizeUpdateFields该规则优化了 UpdateFields 表达式链,因此看起来更像优化规则。但是,在处理深嵌套模式时,UpdateFields 表达式树可能会非常复杂,导致分…...

mysql--二进制安装编译安装yum安装
二进制安装 创建用户和组 [rootlocalhost ~]# groupadd -r -g 306 mysql [rootlocalhost ~]# useradd -r -g 306 -u 306 -d /data/mysql mysql 创建文件夹并添加所属文件用户和组 [rootlocalhost ~]# mkdir -p /data/mysql [rootlocalhost ~]# chown mysql:mysql /data/mysql …...

《Django 5 By Example》阅读笔记:p339-p358
《Django 5 By Example》学习第12天,p339-p358总结,总计20页。 一、技术总结 1.项目(购物网站) django-admin startproject myshop 虽然这里只是示例,但我觉得这种命名为 myxxx 的习惯非常不好,因为在实际应用中,是…...

鸿蒙修饰符
文章目录 一、引言1.1 什么是修饰符1.2 修饰符在鸿蒙开发中的重要性1.3 修饰符的作用机制 二、UI装饰类修饰符2.1 Styles修饰符2.1.1 基本概念和使用场景2.1.2 使用示例2.1.3 最佳实践 2.2 Extend修饰符2.2.1 基本概念2.2.2 使用示例2.2.3 Extend vs Styles 对比2.2.4 使用建议…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...