活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

openSUSE Tumbleweed软件安装与管理 从基础命令到高级技巧全方位解析

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-7 14:20:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. openSUSE Tumbleweed简介

openSUSE Tumbleweed是一个滚动发布的Linux发行版,它提供了最新的稳定软件包。与固定发布周期(如openSUSE Leap)不同,Tumbleweed持续接收更新,一旦软件包经过测试并被认为足够稳定,就会被推送到仓库中。这种模式使用户能够始终使用最新的软件版本,而不需要等待完整的发行版升级。

Tumbleweed使用Btrfs作为默认文件系统,并结合Snapper和ZYpp事务性更新技术,提供了强大的系统回滚能力,这在滚动发行版中尤为重要。这种架构使得Tumbleweed既能提供最新软件,又能保持系统稳定性,即使更新出现问题也能轻松恢复。

2. 基础软件管理命令

zypper包管理器基础使用

zypper是openSUSE的命令行包管理器,它是ZYpp的前端,提供了强大的软件包管理功能。以下是一些基本的zypper命令:

在安装或更新软件之前,最好先刷新软件仓库以获取最新的软件包信息:
  1. sudo zypper refresh
复制代码

此命令会从所有已配置的软件仓库下载最新的元数据,包括软件包列表、依赖关系信息和版本号。建议在执行任何软件安装或更新操作前先运行此命令,以确保获取到最新的软件包信息。

要搜索特定的软件包,可以使用search命令:
  1. zypper search <package_name>
复制代码

例如,搜索VLC媒体播放器:
  1. zypper search vlc
复制代码

搜索结果会显示软件包的名称、版本、仓库类型和简要描述。如果你想进行更精确的搜索,可以使用以下选项:
  1. # 只搜索名称完全匹配的包
  2. zypper search --match-exact vlc
  3. # 搜索描述中包含关键字的包
  4. zypper search --description media player
  5. # 同时搜索名称和描述
  6. zypper search --name --description media
复制代码

安装软件包使用install命令:
  1. sudo zypper install <package_name>
复制代码

例如,安装VLC:
  1. sudo zypper install vlc
复制代码

zypper会自动处理依赖关系,安装运行该软件所需的所有依赖包。如果你想安装软件包但不安装推荐的软件包,可以使用--no-recommends选项:
  1. sudo zypper install --no-recommends vlc
复制代码

你也可以同时安装多个软件包:
  1. sudo zypper install vlc firefox gimp
复制代码

删除软件包使用remove命令:
  1. sudo zypper remove <package_name>
复制代码

例如,删除VLC:
  1. sudo zypper remove vlc
复制代码

默认情况下,zypper会保留只作为依赖项安装但不再需要的软件包。如果你想同时删除这些不再需要的依赖项,可以使用--clean-deps选项:
  1. sudo zypper remove --clean-deps vlc
复制代码

更新单个软件包:
  1. sudo zypper update <package_name>
复制代码

更新所有已安装的软件包:
  1. sudo zypper update
复制代码

或者使用dup(distribution upgrade)命令,这在Tumbleweed中是推荐的更新方式:
  1. sudo zypper dup
复制代码

zypper dup(distribution upgrade)是Tumbleweed中最推荐的更新方式,因为它会处理仓库中软件包的供应商变更,这对于滚动发行版来说是必要的。与zypper update不同,dup会考虑所有仓库中的所有软件包,并确保系统保持一致状态。

查看所有已安装的软件包:
  1. zypper search --installed-only
复制代码

查看特定软件包是否已安装:
  1. zypper search --installed-only <package_name>
复制代码

你也可以使用packages命令获取更详细的已安装软件包信息:
  1. zypper packages --installed-only
复制代码

获取软件包的详细信息:
  1. zypper info <package_name>
复制代码

例如,获取VLC的详细信息:
  1. zypper info vlc
复制代码

这将显示软件包的版本、大小、仓库、依赖关系、描述等详细信息。

RPM包管理

虽然zypper是openSUSE的主要包管理工具,但有时你可能需要直接使用RPM命令:
  1. sudo rpm -i <package_file.rpm>
复制代码

例如:
  1. sudo rpm -i ~/Downloads/example-1.0-1.x86_64.rpm
复制代码
  1. sudo rpm -U <package_file.rpm>
复制代码

-U选项会升级已安装的软件包,如果软件包尚未安装,则会安装它。
  1. sudo rpm -e <package_name>
复制代码

例如:
  1. sudo rpm -e example
复制代码

查询已安装的RPM包:
  1. rpm -q <package_name>
复制代码

查询RPM包的详细信息:
  1. rpm -qi <package_name>
复制代码

查询某个文件属于哪个RPM包:
  1. rpm -qf <path_to_file>
复制代码

例如:
  1. rpm -qf /usr/bin/vlc
复制代码

列出RPM包中的文件:
  1. rpm -ql <package_name>
复制代码

软件仓库管理

zypper也允许你管理系统中的软件仓库:
  1. zypper repos
复制代码

或者使用lr作为简写:
  1. zypper lr
复制代码

输出将显示所有已配置的仓库,包括它们的别名、名称、是否启用、是否自动刷新、优先级和URI。

添加一个新的软件仓库:
  1. sudo zypper addrepo <repository_url> <alias>
复制代码

例如,添加Packman仓库:
  1. sudo zypper addrepo https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/ packman
复制代码

你也可以从URL添加仓库文件:
  1. sudo zypper addrepo -f https://example.com/repo.repo
复制代码

删除一个软件仓库:
  1. sudo zypper removerepo <alias_or_number>
复制代码

例如,删除别名为”packman”的仓库:
  1. sudo zypper removerepo packman
复制代码

修改仓库属性:
  1. sudo zypper modifyrepo <options> <alias_or_number>
复制代码

例如,启用或禁用仓库:
  1. sudo zypper modifyrepo --enable packman
  2. sudo zypper modifyrepo --disable packman
复制代码

设置仓库优先级(数字越小,优先级越高):
  1. sudo zypper modifyrepo --priority 10 packman
复制代码

刷新所有仓库:
  1. sudo zypper refresh
复制代码

刷新特定仓库:
  1. sudo zypper refresh packman
复制代码

强制刷新仓库(即使它不需要刷新):
  1. sudo zypper refresh --force packman
复制代码

3. 图形界面软件管理工具

YaST软件管理

YaST(Yet another Setup Tool)是openSUSE的系统管理和配置工具,它提供了一个图形界面来管理系统各个方面,包括软件管理。

你可以从应用程序菜单中启动YaST,然后选择”软件管理”模块,或者在命令行中运行:
  1. sudo yast2 sw_single
复制代码

YaST软件管理提供了一个直观的界面来搜索、安装、删除和更新软件包。你可以:

1. 使用搜索框查找软件包
2. 浏览软件组(RPM组)
3. 查看软件包的详细信息
4. 选择要安装或删除的软件包
5. 应用更改

YaST软件管理界面分为几个主要部分:

• 左侧面板:显示软件包分类和过滤器
• 右上角搜索框:用于搜索软件包
• 中间列表:显示符合当前过滤条件的软件包
• 右下角详情面板:显示所选软件包的详细信息

在软件包列表中,你可以看到每个软件包的状态图标:

• 蓝色箭头向下:软件包将被安装
• 蓝色箭头向上:软件包将被更新
• 红色X:软件包将被删除
• 绿色对勾:软件包已安装
• 空白:软件包未安装

你可以通过点击状态图标来更改软件包的安装状态。

GNOME/KDE软件中心

openSUSE Tumbleweed提供了不同桌面环境的软件中心:

在GNOME桌面环境中,你可以使用”软件”应用程序来管理软件。它提供了一个用户友好的界面来浏览、安装和更新软件。

GNOME软件中心的主要功能包括:

• 浏览:按类别浏览可用软件
• 搜索:通过名称或描述搜索软件
• 安装/删除:一键安装或删除软件
• 更新:查看和安装可用更新
• 评分和评论:查看其他用户的评分和评论

在KDE Plasma桌面环境中,Discover是默认的软件管理工具。它允许你浏览、安装和更新软件,以及管理Flatpak和Snap包。

Discover的主要功能包括:

• 首页:显示推荐软件和最近更新
• 应用:浏览和安装图形应用程序
• 插件:管理KDE插件和扩展
• 更新:查看和安装系统更新
• 源:管理软件源(仓库)
• 设置:配置Discover的行为

4. 高级软件管理技巧

快照和事务性更新

openSUSE Tumbleweed使用Btrfs文件系统和Snapper来创建系统快照,结合事务性更新,提供了一个强大的系统回滚机制。

在openSUSE Tumbleweed中,事务性更新默认是启用的。你可以使用以下命令来检查:
  1. systemctl is-enabled transactional-update.service
复制代码

如果输出为”enabled”,则表示事务性更新已启用。

使用事务性更新来更新系统:
  1. sudo transactional-update
复制代码

这将创建一个新的快照,并在其中应用更新,然后设置该快照为下次启动的默认系统。事务性更新不会影响当前运行的系统,所有更改将在下次重启时生效。

你也可以使用事务性更新来安装或删除软件包:
  1. sudo transactional-update pkg install <package_name>
  2. sudo transactional-update pkg remove <package_name>
复制代码

列出所有快照:
  1. sudo snapper list
复制代码

输出将显示所有快照的编号、类型、创建时间、描述等信息。快照类型包括:

• single:手动创建的单个快照
• pre:系统更改前自动创建的快照
• post:系统更改后自动创建的快照
• timeline:按时间线自动创建的快照

创建一个新快照:
  1. sudo snapper create --description "描述"
复制代码

例如:
  1. sudo snapper create --description "安装新软件前"
复制代码

删除快照:
  1. sudo snapper delete <snapshot_number>
复制代码

例如:
  1. sudo snapper delete 10
复制代码

回滚到之前的快照:
  1. sudo snapper rollback <snapshot_number>
复制代码

例如:
  1. sudo snapper rollback 5
复制代码

回滚后需要重启系统才能使更改生效:
  1. sudo reboot
复制代码

系统回滚

如果系统更新后出现问题,你可以回滚到之前的快照:
  1. sudo transactional-update rollback
复制代码

这将列出可用的快照,你可以选择要回滚到的快照。

你也可以手动选择要回滚到的快照:
  1. sudo snapper rollback <snapshot_number>
  2. sudo reboot
复制代码

回滚操作会将整个系统(不包括/home目录)恢复到快照创建时的状态。这是一个非常强大的功能,可以解决由于软件更新或配置错误导致的系统问题。

第三方仓库管理

openSUSE Tumbleweed有许多第三方仓库,提供额外的软件包。以下是一些常用的第三方仓库:

Packman仓库提供了许多多媒体相关的软件包:
  1. sudo zypper addrepo https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/ packman
  2. sudo zypper refresh
  3. sudo zypper dist-upgrade --from packman --allow-vendor-change
复制代码

添加Packman仓库后,你可以安装多媒体编解码器和其他受限制的软件包:
  1. sudo zypper install ffmpeg gstreamer-plugins-libav gstreamer-plugins-bad gstreamer-plugins-good gstreamer-plugins-ugly gstreamer-plugins-base libavcodec-full vlc-codecs
复制代码

openSUSE社区维护了许多仓库,你可以在这里找到它们:https://en.opensuse.org/Additional_package_repositories

一些常用的社区仓库包括:

• KDE:Extra:提供额外的KDE应用程序
• X11:Utilities:提供X11实用工具
• network:提供网络相关工具
• devel:languages:python:提供Python相关软件包

添加这些仓库的方法与添加Packman仓库类似:
  1. sudo zypper addrepo https://download.opensuse.org/repositories/KDE:/Extra/openSUSE_Tumbleweed/ KDE:Extra
  2. sudo zypper refresh
复制代码

在添加第三方仓库时,请注意以下几点:

1. 只添加你信任的仓库:第三方仓库可能包含未经过openSUSE团队测试的软件包,可能存在安全风险。
2. 了解仓库的维护状态和更新频率:检查仓库的活跃程度,避免使用已不再维护的仓库。
3. 注意仓库之间的软件包冲突:不同仓库可能提供相同但版本不同的软件包,可能导致冲突。
4. 考虑使用优先级来管理仓库:为仓库设置优先级可以帮助解决软件包冲突。

设置仓库优先级的示例:
  1. # 设置官方仓库优先级为10(较高)
  2. sudo zypper modifyrepo --priority 10 repo-oss
  3. sudo zypper modifyrepo --priority 10 repo-non-oss
  4. # 设置第三方仓库优先级为90(较低)
  5. sudo zypper modifyrepo --priority 90 packman
  6. sudo zypper modifyrepo --priority 90 KDE:Extra
复制代码

软件源码编译安装

有时候,你可能需要从源码编译安装软件:

首先,安装必要的编译工具:
  1. sudo zypper install -t pattern devel_C_C++
复制代码

这将安装基本的C/C++开发工具链,包括GCC、make、autoconf等。

你也可以安装其他开发模式,例如:
  1. # 安装基础开发工具
  2. sudo zypper install -t pattern devel_basis
  3. # 安装Python开发工具
  4. sudo zypper install -t pattern devel_python
  5. # 安装Java开发工具
  6. sudo zypper install -t pattern devel_java
复制代码

下载软件的源码,通常是从官方网站或GitHub:
  1. wget <source_code_url>
  2. tar -xvf <source_code_archive>
  3. cd <source_code_directory>
复制代码

例如,下载并解压nginx源码:
  1. wget https://nginx.org/download/nginx-1.21.0.tar.gz
  2. tar -xvf nginx-1.21.0.tar.gz
  3. cd nginx-1.21.0
复制代码

大多数开源软件使用以下步骤:
  1. ./configure
  2. make
  3. sudo make install
复制代码

./configure脚本会检查系统环境并生成Makefile,make命令会编译源代码,sudo make install会将编译好的软件安装到系统中。

一些软件可能需要额外的依赖库,你可以使用zypper搜索并安装它们:
  1. zypper search <dependency_name>
  2. sudo zypper install <dependency_package>
复制代码

更好的做法是创建一个RPM包,而不是直接安装到系统中:
  1. sudo zypper install rpm-build
  2. # 创建.spec文件
  3. rpmbuild -ba <spec_file>
  4. sudo zypper install <path_to_generated_rpm>
复制代码

创建RPM包的好处包括:

• 可以轻松地卸载软件
• 可以跟踪软件文件
• 可以管理软件依赖关系
• 可以使用zypper管理软件

使用Flatpak和Snap

openSUSE Tumbleweed也支持Flatpak和Snap,这些是跨发行版的包管理器:
  1. sudo zypper install flatpak
  2. flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
复制代码

安装Flatpak应用:
  1. flatpak install flathub <app_id>
复制代码

例如,安装Flatpak版本的Firefox:
  1. flatpak install flathub org.mozilla.firefox
复制代码

运行Flatpak应用:
  1. flatpak run <app_id>
复制代码

例如:
  1. flatpak run org.mozilla.firefox
复制代码

列出已安装的Flatpak应用:
  1. flatpak list
复制代码

更新Flatpak应用:
  1. flatpak update
复制代码
  1. sudo zypper install snapd
  2. sudo systemctl enable --now snapd.socket
复制代码

安装Snap应用:
  1. sudo snap install <snap_name>
复制代码

例如,安装Snap版本的Firefox:
  1. sudo snap install firefox
复制代码

列出已安装的Snap应用:
  1. snap list
复制代码

更新Snap应用:
  1. sudo snap refresh
复制代码

删除Snap应用:
  1. sudo snap remove <snap_name>
复制代码

5. 常见问题与解决方案

依赖关系问题

有时,安装软件包时可能会遇到依赖关系问题:

zypper通常会尝试自动解决依赖关系。如果失败,你可以尝试:
  1. sudo zypper install --force-resolution <package_name>
复制代码

--force-resolution选项会强制zypper解决依赖关系,即使这意味着可能会破坏某些依赖关系。

或者,手动安装缺失的依赖:
  1. sudo zypper install <missing_dependency>
复制代码

查看软件包的依赖关系:
  1. zypper info --requires <package_name>
复制代码

例如:
  1. zypper info --requires vlc
复制代码

查看哪些软件包依赖于特定软件包:
  1. zypper search --requires <package_name>
复制代码

例如:
  1. zypper search --requires libvlc5
复制代码

软件仓库冲突

有时,不同的仓库可能提供相同但版本不同的软件包,导致冲突:

为仓库设置优先级:
  1. sudo zypper modifyrepo --priority <priority_number> <alias_or_number>
复制代码

优先级数字越低,优先级越高(默认是99)。例如,设置官方仓库优先级为10,第三方仓库优先级为90:
  1. sudo zypper modifyrepo --priority 10 repo-oss
  2. sudo zypper modifyrepo --priority 10 repo-non-oss
  3. sudo zypper modifyrepo --priority 90 packman
复制代码

在更新时允许更改软件包的供应商:
  1. sudo zypper dup --allow-vendor-change
复制代码

这对于从第三方仓库更新软件包特别有用,因为这些仓库的软件包可能与官方仓库的软件包具有不同的供应商。

如果你想防止某个软件包被更新,可以锁定它:
  1. sudo zypper addlock <package_name>
复制代码

例如:
  1. sudo zypper addlock kernel-default
复制代码

解锁软件包:
  1. sudo zypper removelock <package_name>
复制代码

查看所有锁定的软件包:
  1. zypper locks
复制代码

系统更新后的问题

如果系统更新后出现问题:
  1. sudo transactional-update rollback
复制代码

这将列出可用的快照,你可以选择要回滚到的快照。
  1. sudo snapper rollback <snapshot_number>
  2. sudo reboot
复制代码

例如,回滚到快照编号为5的状态:
  1. sudo snapper rollback 5
  2. sudo reboot
复制代码

检查系统日志以找出问题:
  1. journalctl -xb
复制代码

journalctl -xb会显示自上次启动以来的系统日志,从最旧的条目开始。你可以使用箭头键导航,按Q键退出。

你也可以检查特定服务的日志:
  1. journalctl -u <service_name>
复制代码

例如:
  1. journalctl -u NetworkManager
复制代码

检查是否有软件包安装失败:
  1. sudo zypper verify
复制代码

zypper verify会检查系统中所有已安装软件包的依赖关系,并尝试修复任何问题。

6. 最佳实践与建议

定期更新系统

在openSUSE Tumbleweed中,定期更新系统很重要:
  1. sudo zypper dup
复制代码

或者使用事务性更新:
  1. sudo transactional-update
复制代码

建议每周至少更新一次系统,以确保获取最新的安全补丁和软件更新。如果你使用事务性更新,记得在更新后重启系统以应用更改。

管理软件仓库

只添加必要的软件仓库,并定期检查它们的维护状态:
  1. zypper repos --uri
复制代码

定期清理不再需要的仓库:
  1. sudo zypper removerepo <unused_repo_alias>
复制代码

使用快照

在进行重大更改之前,创建一个快照:
  1. sudo snapper create --description "重大更改前"
复制代码

例如,在安装新软件或修改系统配置前:
  1. sudo snapper create --description "安装Docker前"
复制代码

定期清理旧的快照,以释放磁盘空间:
  1. sudo snapper cleanup number
复制代码

清理系统

定期清理不需要的软件包和缓存:
  1. # 查找不再需要的软件包
  2. sudo zypper packages --unneeded
  3. # 删除不再需要的软件包
  4. sudo zypper remove $(zypper packages --unneeded | awk '{print $5}')
  5. # 清理zypper缓存
  6. sudo zypper clean
  7. # 清理旧内核
  8. sudo zypper remove-old-kernels
复制代码

备份重要数据

尽管openSUSE Tumbleweed提供了强大的系统回滚功能,但仍然建议定期备份重要数据。你可以使用以下工具进行备份:

• rsync:用于同步和备份文件
• borg:用于创建增量备份
• timeshift:用于创建系统快照(类似于Snapper)

例如,使用rsync备份/home目录:
  1. sudo rsync -aAXv /home/ /path/to/backup/location/
复制代码

监控系统健康

定期检查系统健康状态:
  1. # 检查磁盘空间
  2. df -h
  3. # 检查系统负载
  4. uptime
  5. # 检查内存使用
  6. free -h
  7. # 检查失败的系统服务
  8. systemctl --failed
复制代码

使用虚拟机测试

在进行重大系统更改或安装新软件之前,考虑在虚拟机中先进行测试。openSUSE Tumbleweed支持KVM、VirtualBox和VMware等虚拟化技术。

例如,使用KVM创建虚拟机:
  1. sudo zypper install virt-manager libvirt qemu-kvm
  2. sudo systemctl enable --now libvirtd
  3. sudo usermod -aG libvirt $(whoami)
  4. # 需要注销并重新登录
  5. virt-manager
复制代码

参与社区

openSUSE拥有活跃的社区,你可以通过以下方式参与:

• 访问openSUSE论坛:https://forums.opensuse.org/
• 加入openSUSE邮件列表:https://lists.opensuse.org/
• 参与openSUSE IRC频道:irc://irc.libera.chat/opensuse

通过参与社区,你可以获取帮助,分享经验,并为openSUSE的发展做出贡献。

总结

openSUSE Tumbleweed提供了强大而灵活的软件管理工具,从简单的命令行工具如zypper,到图形界面工具如YaST和Discover,再到高级功能如事务性更新和系统快照。通过掌握这些工具和技巧,你可以有效地管理系统软件,保持系统更新,并在出现问题时迅速恢复。

无论是日常的软件安装和更新,还是高级的系统维护和故障排除,openSUSE Tumbleweed都能提供必要的工具和功能。通过遵循最佳实践,如定期更新系统、管理软件仓库、使用快照和备份重要数据,你可以确保系统的稳定性和安全性。

希望这篇指南能帮助你更好地理解和使用openSUSE Tumbleweed的软件管理功能,充分发挥这个强大发行版的潜力。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则