Linux系统软件安装与用户管理全解析

立即解锁
发布时间: 2025-09-10 02:01:19 阅读量: 4 订阅数: 21 AIGC
PDF

Linux DevOps实战指南

### Linux 系统软件安装与用户管理全解析 #### 1. 系统定时任务:Systemd timer 与 cron 对比 在 Linux 系统中,自动化定时任务是提高工作效率的重要手段,其中 cron 任务和 Systemd timer 是两种常见的方式。 - **Systemd timer 优势**:Systemd timer 是 cron 守护进程作业的新版本,它不仅具备 cron 的所有功能,还拥有一些额外能力。例如,可以指定任务在系统启动后的某个时间运行;也能设定任务在另一个任务运行后的特定间隔执行;其依赖项甚至可以是一个服务单元;而且计时粒度更精细,cron 任务的最小时间单位是分钟,而 Systemd timer 可以精确到秒。 #### 2. Linux 软件安装概述 不同的 Linux 发行版和安装类型可能导致系统缺少日常工作所需的软件,或者在特定时刻需要安装非默认的软件。Linux 发行版开创了一种软件安装方式,即通过运行适当的命令来获取二进制文件、正确放置在系统中、添加必要配置并让用户能够使用。这种方式在 DevOps 自动化环境中具有重要意义: - **软件存储与获取**:可安装的软件以包的形式存储在发行版团队维护的仓库中,用户只需知道软件包名称并确保其在仓库内,无需了解软件在互联网上的具体位置。 - **依赖自动处理**:常见的包标准(如 rpm 和 deb)能够识别依赖关系,若安装的软件依赖其他未安装的软件,系统会自动下载并安装。 - **安全保障**:发行版有安全团队与包维护者合作,为软件包修复已知漏洞,但不会主动研究这些软件包的漏洞。 - **仓库镜像**:仓库在互联网上有镜像,即使某个仓库出现故障,也能从全球的镜像副本获取软件。不过,商业仓库不一定具备此特性。 - **本地镜像**:用户可以在局域网内创建本地仓库镜像,虽然会占用大量硬盘空间,但能获得最快的下载速度。 #### 3. 影响软件数量和版本的因素 软件的数量和版本受发行版多方面因素影响: - **软件许可政策**:不同发行版对软件许可类型有不同政策。有些发行版只允许严格符合开源定义的软件;而有些则允许用户选择添加可能包含许可限制软件的仓库。 - **维护人员与模式**:发行版的工作量受维护人员数量和维护模式影响。团队规模越小,能打包和维护的软件就越少。例如,Debian 是非商业发行版,依赖志愿者工作;Ubuntu 和 Fedora 有商业支持,部分团队成员受雇于 Canonical 和 Red Hat;Red Hat Enterprise Linux(RHEL)则完全由 Red Hat 员工构建和维护。 - **仓库类型**:部分软件制造商将软件包发布在独立仓库,用户可添加到系统配置中使用。但需注意,第三方仓库的软件质量和更新情况与发行版核心仓库可能不同,可能导致软件版本冲突,且添加的第三方仓库越多,冲突概率越高。 #### 4. Debian 和 Ubuntu 软件安装 Debian 及其衍生版 Ubuntu 使用 DEB 包格式,与之直接交互的命令是 dpkg,它可用于安装、移除、配置和构建 .deb 包,但只能处理文件系统中的本地包,无法理解远程仓库。以下是 dpkg 的常见操作: |操作|命令|说明| | ---- | ---- | ---- | |安装|`dpkg -i package_file.deb`|安装指定的包文件,经过多个阶段完成软件安装| |解包|`dpkg –unpack package_file.deb`|将重要文件放置到相应位置,但不进行配置| |配置|`dpkg –configure package`|对指定包进行配置,若有未配置的包,可使用 `-a` 或 `–pending` 标志处理| |移除|`dpkg -r package`|移除软件,但保留配置文件和数据| |彻底清除|`dpkg -p package`|彻底清除软件、数据、配置文件和缓存| 示例:安装 nano 编辑器 ```bash root@myhome:~# dpkg -i nano_5.4-2+deb11u1_amd64.deb (Reading database ... 35904 files and directories currently installed.) Preparing to unpack nano_5.4-2+deb11u1_amd64.deb ... Unpacking nano (5.4-2+deb11u1) over (5.4-2+deb11u1) ... Setting up nano (5.4-2+deb11u1) ... Processing triggers for man-db (2.9.4-2) ... ``` 不过,更多时候会使用 apt 工具套件来安装和移除软件: - **搜索软件包**:`apt-cache search NAME` 用于搜索包含指定字符串的软件包。 ```bash root@myhome:~# apt-cache search vim acr - autoconf like tool alot - Text mode MUA using notmuch mail [...] vim - Vi IMproved - enhanced vi editor [...] ``` - **安装软件包**:`apt-get install NAME` 可安装指定名称的软件包,还能在一行中安装多个软件包。 ```bash root@myhome:~# apt-get install gcc g++ golang Reading package lists... Done Building dependency tree... Done Reading state information... Done gcc is already the newest version (4:10.2.1-1). The following additional packages will be installed: bzip2 g++-10 golang-1.15 golang-1.15-doc golang-1.15-go golang-1.15- src golang-doc golang-go golang-src libdpkg-perl libfile-fcntllock- perl libgdbm-compat4 liblocale-gettext-perl libperl5.32 libstdc++-10- dev perl perl-modules-5.32 pkg-config Suggested packages: bzip2-doc g++-multilib g++-10-multilib gcc-10-doc bzr | brz git mercurial subversion debian-keyring gnupg patch bzr libstdc++-10- doc perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl libtap-harness-archive-perl dpkg-dev The following NEW packages will be installed: bzip2 g++ g++-10 golang golang-1.15 golang-1.15-doc golang-1.15-go golang-1.15-src golang-doc golang-go golang-src libdpkg-perl libfile- fcntllock-perl libgdbm-compat4 liblocale-gettext-perl libperl5.32 libstdc++-10-dev perl perl-modules-5.32 pkg-config 0 upgraded, 20 newly installed, 0 to remove and 13 not upgraded. Need to get 83.9 MB of archives. After this operation, 460 MB of additional disk space will be used. Do you want to continue? [Y/n] ``` - **更新软件包数据库**:`apt-get update` 用于刷新软件包数据库,获取新的可用软件包和版本。 - **升级软件包**:`apt-get upgrade` 会将所有已安装的软件包升级到数据库中列出的最新版本。 - **移除软件包**:`apt-get remove NAME` 可移除指定名称的软件包。 ```bash root@myhome:~# apt-get remove g++ Reading package lists... Done Building dependency tree... Done Reading state information... Done The following packages were automatically installed and are no longer required: g++-10 libstdc++-10-dev Use 'apt autoremove' to remove them. The following packages will be REMOVED: g++ 0 upgraded, 0 newly installed, 1 to remove and 13 not upgraded. After this operation, 15.4 kB disk space will be freed. Do you want to continue? [Y/n] (Reading database ... 50861 files and directories currently installed.) Removing g++ (4:10.2.1-1) ... ``` #### 5. CentOS、RHEL 和 Fedora 软件安装 CentOS、RHEL 和 Fedora 等发行版使用 RPM 包格式,基本交互工具是 rpm,而管理软件包的命令是 dnf(yum 已被移除,dnf 是 yum 的下一代重写版本,更强大和现代): - **安装软件包**:`dnf install package_name` 安装指定名称的软件包及其依赖项。 - **移除软件包**:`dnf remove package_name` 移除指定软件包。 - **更新软件包**:`dnf update` 可将所有软件包更新到数据库中的最新版本,也可指定软件包名称进行单独更新。 - **搜索软件包**:`dnf search NAME` 搜索包含指定字符串的软件包名称。 - **刷新软件包数据库**:`dnf check-update` 刷新软件包数据库。 #### 6. Alpine Linux 软件安装 Alpine Linux 以小巧、简单、安全著称,深受主要使用 Docker 和 Kubernetes 的工程师喜爱。但它使用 musl 库而非广泛使用的 libc 库进行编译,在安装 Python 应用时可能需要额外步骤确保编译时依赖项已安装。 - **软件包管理命令**:使用 Alpine Package Keeper(apk)与软件包进行交互。Alpine 有稳定版(如 3.16)和滚动发布的 edge 版,还有 main、community 和 testing 三个仓库可用于安装软件包。 - **搜索软件包**: - **更新软件包缓存**:在搜索或安装软件包前,建议使用 `apk update` 下载最新的软件包缓存。 ```bash root@myhome:~# apk update fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/main/x86_64/ APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/ APKINDEX.tar.gz v3.16.2-376-g3ff8974e73 [https://dl-cdn.alpinelinux.org/alpine/v3.16/ main] v3.16.2-379-g3c25b38306 [https://dl-cdn.alpinelinux.org/alpine/v3.16/ community] OK: 17037 distinct packages available ``` - **使用 Web 界面搜索**:若不确定软件包的准确名称,可使用 Web 界面 [https://pkgs.alpinelinux.org/packages](https://pkgs.alpinelinux.org/packages) 进行搜索。 - **使用 CLI 搜索**:可使用 `apk search` 命令搜索部分库名和二进制名,还可使用 `so:` 前缀指定搜索库,`cmd:` 前缀搜索命令,`pc:` 前缀搜索 pkg-config 文件。 ```bash root@myhome:~# apk search libproc libproc-3.3.17-r1 libksysguard-5.24.5-r0 process-cpp-3.0.1-r3 samba-dc-libs-4.15.7-r0 procps-dev-3.3.17-r1 root@myhome:~# apk search vim neovim-doc-0.7.0-r0 gvim-8.2.5000-r0 vim-tutor-8.2.5000-r0 faenza-icon-theme-vim-1.3.1-r6 notmuch-vim-0.36-r0 kmymoney-5.1.2-r3 faenza-icon-theme-gvim-1.3.1-r6 meson-vim-0.62.1-r0 runvimtests-1.30-r1 graphviz-3.0.0-r0 neovim-0.7.0-r0 py3-pynvim-0.4.3-r3 nftables-vim-0_git20200629-r1 vim-doc-8.2.5000-r0 vim-editorconfig-0.8.0-r0 apparmor-vim-3.0.4-r0 geany-plugins-vimode-1.38-r1 vimdiff-8.2.5000-r0 vimb-3.6.0-r0 neovim-lang-0.7.0-r0 u-boot-tools-2022.04-r1 fzf-neovim-0.30.0-r7 nginx-vim-1.22.1-r0 msmtp-vim-1.8.20-r0 protobuf-vim-3.18.1-r3 vimb-doc-3.6.0-r0 icinga2-vim-2.13.3-r1 fzf-vim-0.30.0-r7 vim-sleuth-1.2-r0 gst-plugins-base-1.20.3-r0 mercurial-vim-6.1.1-r0 skim-vim-plugin-0.9.4-r5 ``` - **安装、升级和卸载软件包**: - **安装软件包**:使用 `apk add` 命令安装软件包,默认安装最新版本,也可指定版本,但同一仓库中无法安装旧版本,可从其他仓库安装。 ```bash root@myhome:~# apk search -e postgresql14 postgr ```
corwn 最低0.47元/天 解锁专栏
买1年送3月
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

吴雄辉

高级架构师
10年武汉大学硕士,操作系统领域资深技术专家,职业生涯早期在一家知名互联网公司,担任操作系统工程师的职位负责操作系统的设计、优化和维护工作;后加入了一家全球知名的科技巨头,担任高级操作系统架构师的职位,负责设计和开发新一代操作系统;如今为一名独立顾问,为多家公司提供操作系统方面的咨询服务。
最低0.47元/天 解锁专栏
买1年送3月
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看

最新推荐

探索云计算网络与Windows365的未来

# 探索云计算网络与 Windows 365 的未来 ## 1. 网络基础:互联网与云 互联网,也被称为“云”,是一个由众多网络相互连接而成的庞大网络体系。由于其连接方式极为复杂,难以用图表清晰展示,所以我们用“云”来简化表述。 ### 1.1 微软网络架构 想象一下,你购买了一批计算机,将它们放置在车库的架子上,并接入本地网络,这样就创建了一个数据中心。像微软这样的大公司也会构建数据中心,而且规模巨大。你可以通过网页浏览器和搜索引擎查看微软数据中心的图片,其规模令人惊叹。你的云 PC 就存放在这样的数据中心里(同时在其他地方有备份以确保冗余),并通过互联网与之连接。 微软等公司不仅拥有

媒体管理与收听指南

# 媒体管理与收听指南 ## 一、音乐库管理 ### (一)处理大容量音乐库 拥有大量音乐时,会面临两个问题:一是在音乐应用中管理所有音乐,二是将音乐同步到无法容纳所有内容的移动设备。为了更好地管理音乐文件,有以下建议: 1. **精确标签**:仔细为音乐添加标签,以便能轻松找到所需音乐。使用更多的音乐流派可以更方便地对音乐收藏进行分类和筛选。在音乐应用的“信息”对话框中输入流派名称,即可为音乐添加流派标签。 2. **清理音乐**:检查不常听的音乐,创建一个智能播放列表,规则设置为“[最后播放时间] [不在最后] 6 [个月]”,查看符合条件的音乐,将这些不常听的音乐移至第二个音乐库。这样

Mac系统安全与实用工具全解析

# Mac系统安全与实用工具全解析 ## 一、Mac系统更新与数据安全保护 ### 1.1 系统更新提示 若在程序坞的App Store图标上看到小数字,这意味着有相应数量的更新在等待。此时,需启动Mac App Store,然后点击“更新”标签来进行更新操作。 ### 1.2 数据防窥探安全措施 为保护文件不被局域网内其他用户或能物理访问Mac的用户干扰,可采取以下安全措施: - **阻止或限制连接**: - 打开“系统偏好设置”应用程序(可从“应用程序”文件夹、菜单或程序坞中启动)。 - 点击“共享”图标,打开“共享”系统偏好设置面板。 - 若禁用“共享”面板中

构建跨平台任务列表应用:iOS与macOS的数据存储与界面适配

# 构建跨平台任务列表应用:iOS 与 macOS 的数据存储与界面适配 ## 1. 实现 iOS 任务数据的持久化存储 在开发 iOS 任务列表应用 TahDoodle 时,我们发现当程序退出后,所有数据都会丢失,下次启动应用时又会回到示例数据。为了解决这个问题,我们需要实现任务数据的持久化存储。 ### 1.1 确定存储位置 首先,我们需要获取一个可以存储任务数据的本地 URL。这可以通过 `FileManager` 来实现: ```swift class TaskStore: ObservableObject { private let fileURL: URL = {

云计算与混合云:技术解析与应用指南

### 云计算与混合云:技术解析与应用指南 #### 1. 迈向云端的建议 在领略到云计算的魅力后,若想将网络迁移至云端,可参考以下建议: - **避免依赖劣质网络连接**:采用云计算前,勿依赖消费级网络连接。消费级网络虽有时速度快,但故障修复时间不定。建议投资高速企业级网络连接,其可随业务需求增长而扩展。 - **评估已使用的云应用**:若使用 Gmail 而非 Exchange 处理邮件,表明已在使用云服务。其他常见云服务包括远程 Web 或 FTP 主机、Dropbox 等文件共享服务、Carbonite 等在线备份服务以及薪资服务等。 - **逐步迁移至云端**:先确定一个适合迁移至

SwiftUI状态管理与UIKit视图集成全解析

### SwiftUI 状态管理与 UIKit 视图集成全解析 #### 1. SwiftUI 状态管理 在 SwiftUI 中,状态管理是构建动态用户界面的关键。以下将介绍几种常用的状态管理方式。 ##### 1.1 使用 @ObservedObject 在 `ContentView.swift` 文件中,我们可以展示当前选择的搜索引擎。以下是具体代码: ```swift import SwiftUI struct ContentView: View { @ObservedObject var searchEngine = SearchEngineChoice() v

Unity游戏部署指南:从桌面到网页

# Unity游戏部署指南:从桌面到网页 ## 1. 桌面平台部署 ### 1.1 开始构建桌面应用 初次学习使用Unity构建游戏时,最简单的起点是将游戏部署到桌面计算机,支持的桌面系统包括Windows、Mac和Linux。由于Unity本身可在桌面计算机上运行,因此你可以为正在使用的计算机构建应用。 以下是构建桌面应用的具体步骤: 1. 打开任意Unity项目。任何项目都适用,建议在不同的构建过程中使用不同的项目,以验证Unity可以将任何项目构建到任何平台。 2. 选择“File > Build Settings”打开构建设置窗口。默认情况下,当前平台会设置为PC、Mac和Linu

提升MacBook使用效率与故障排除指南

### 提升MacBook使用效率与故障排除指南 #### 1. Keynote幻灯片与备注打印 如果你需要展示包含大量信息的长幻灯片,那么打印包含幻灯片缩略图和备注的讲义是个不错的选择。而且,除了纸质讲义,你还可以使用Keynote创建电子PDF文件,让观众从你的网站下载。如果你是教育工作者,还能结合交互式白板使用Keynote。 打印幻灯片和备注的步骤如下: 1. 在Keynote中,选择“文件”➪“打印”,或者按下⌘ + P。Keynote会显示打印面板,若有需要,可点击面板底部的“显示详细信息”按钮展开面板以显示所有设置。 2. 选择以下格式之一(每种格式会显示不同的布局选项):

提升Windows使用便捷性的实用指南

### 提升Windows使用便捷性的实用指南 在日常使用电脑的过程中,我们常常会遇到各种操作上的不便,尤其是对于那些有行动或灵活性问题的用户。不过,Windows系统提供了一系列实用的功能和设置,能够显著提升使用的便捷性。下面将为大家详细介绍如何让键盘更易使用以及通过语音控制Windows的方法。 #### 让键盘更易使用 如果你在操作键盘时存在一定困难,可通过激活以下几个功能来增强键盘的可访问性: - **粘滞键(Sticky keys)**:该功能允许你一次按下一个键来实现多键组合快捷键,比如 `Ctrl + C` 和 `Alt + Tab` 等。 - **筛选键(Filter ke

PHP变量与函数全面解析

### PHP变量与函数全面解析 #### 1. PHP变量概述 PHP中的变量与shell变量类似,但PHP变量可以存储不同类型的值。引用变量时,无论读取还是设置值,都要在变量名前使用美元符号($)。PHP变量的类型主要有以下几种: - 字符串(Strings) - 整数(Integers) - 浮点数(Floats) - 数组(Arrays) - 对象(Objects) - 空值(Nulls) 下面我们详细探讨这些变量类型。 #### 2. 字符串变量 字符串是由引号括起来的一系列字符。可以使用单引号(')或双引号(")来定义字符串,但必须使用相同类型的引号开始和结束字符串,并且如果