当前位置: 首页 > news >正文

在openSUSE-Leap-15.6-DVD-x86_64-Media自制应用软件离线包——备份91个视频解码器的rpm包

在openSUSE-Leap-15.6-DVD-x86_64-Media自制应用软件离线包——备份91个视频解码器的rpm包

opensuse leap 16.0要求电脑CPU是x86_64-v2,而我的电脑CPU是x86_64-v1,所以极限就是安装使用opensuse leap 15.6,它的EOL(End of Life),也就是俗称的“停服”,达到2026年4月30日将完全停止支持和维护。所以要自制应用软件离线包,例如本文讲述备份91个视频解码器的rpm包
https://en.opensuse.org/openSUSE:Roadmap
Leap 15.6
Milestone Date Notes
Public Availability Wed, Jun 12, 2024
End of Life Thu, Apr 30, 2026 No longer supported. Time to upgrade

一、另外划分出一个25GB的分区重新安装opensuse leap 15.6
台式机的/dev/sda10分区是25GB的是已经安装opensuse leap 15.6并作为日常使用的,我在硬盘的最后空间划分出一个25GB的分区重新安装opensuse leap 15.6专门用于实验自制各种应用软件离线包,虽然只有一行文字的描述,但是背后的工作量是很大的,要根据自己的实际情况和掌握linux经验来实现这个目的

二、所有repo文件都加上keeppackages=1
进入/etc/zypp/repos.d/文件夹使用文本编辑软件打开所有repo文件在最后新开一行加上keeppackages=1
localhost:~ # cd /etc/zypp/repos.d/
localhost:/etc/zypp/repos.d # cat packman.repo
[packman]
name=Packman
baseurl=https://mirrors.tuna.tsinghua.edu.cn/packman/suse/openSUSE_Leap_15.6/
enabled=1
type=rpm-md
gpgcheck=1
gpgkey=https://ftp.fau.de/packman/suse/openSUSE_Leap_$releasever/repodata/repomd.xml.key
autorefresh=1
keeppackages=1
priority=70
localhost:/etc/zypp/repos.d # cat repo-oss.repo
[repo-oss]
name=Main Repository
enabled=1
autorefresh=1
baseurl=https://mirrors.tuna.tsinghua.edu.cn/opensuse/distribution/leap/15.6/repo/oss/
keeppackages=1
localhost:/etc/zypp/repos.d # cat repo-non-oss.repo
[repo-non-oss]
name=Non-OSS Repository
enabled=1
autorefresh=1
baseurl=https://mirrors.tuna.tsinghua.edu.cn/opensuse/distribution/leap/15.6/repo/non-oss/
keeppackages=1
localhost:/etc/zypp/repos.d # cat repo-openh264.repo
[repo-openh264]
name=Open H.264 Codec (openSUSE Leap)
enabled=1
autorefresh=1
baseurl=http://codecs.opensuse.org/openh264/openSUSE_Leap/
keeppackages=1
localhost:/etc/zypp/repos.d # cat vlc.repo
[vlc]
enabled=1
autorefresh=1
baseurl=https://download.videolan.org/pub/vlc/SuSE/15.6/
gpgcheck=1
keeppackages=1

三、连接互联网安装视频解码器,影音软件能播放视频文件,网页浏览器firefox能播放网页视频
localhost:~ # zypper install opi
localhost:~ # opi codecs
跳出大量信息,先安装37个rpm包,再安装48个,再安装3个,再安装1个,再安装2个,37+48+3+1+2=91个
localhost:~ # tree /var/cache/zypp/packages/

├── packman
│ ├── Essentials
│ │ ├── noarch
│ │ │ └── pipewire-lang-1.0.5+git36.60deeb2-150600.3.10.pm.1.noarch.rpm
│ │ └── x86_64
│ │ ├── Mesa-23.3.4-150600.83.8.pm.2.x86_64.rpm
│ │ ├── Mesa-dri-23.3.4-150600.83.8.pm.3.x86_64.rpm


│ │ ├── pipewire-tools-1.0.5+git36.60deeb2-150600.3.10.pm.1.x86_64.rpm
│ │ ├── vlc-codecs-3.0.21-150600.2.5.pm.6.x86_64.rpm
│ │ └── vlc-noX-3.0.21-150600.2.5.pm.6.x86_64.rpm
│ └── Multimedia
│ └── x86_64
│ └── libass9-0.17.4-150600.2.pm.2.x86_64.rpm
├── repo-openh264
│ └── x86_64
│ ├── gstreamer-plugin-openh264-1.24.12-1.sle150600.2.x86_64.rpm
│ ├── libopenh264-8-2.6.0-2.sle150600.1.x86_64.rpm
│ └── mozilla-openh264-2.6.0-2.sle150600.1.x86_64.rpm
├── repo-oss
│ ├── noarch
│ └── x86_64
│ ├── dav1d-1.4.0-150600.1.2.x86_64.rpm
│ ├── gstreamer-plugins-good-extra-1.24.0-150600.1.1.x86_64.rpm

│ ├── libvidstab1_1-1.1.0-bp156.3.4.x86_64.rpm
│ ├── libzmq5-4.2.3-3.15.4.x86_64.rpm
│ └── zeromq-tools-4.2.3-3.15.4.x86_64.rpm
└── vlc
└── x86_64
└── vlc-codec-gstreamer-3.0.21-150601.409.1.x86_64.rpm

16 directories, 91 files
最后报告/var/cache/zypp/packages有16个文件夹和91个文件,是对得上opi codecs安装文件的数量的,复制整个文件夹packages到移动硬盘就算是备份91个视频解码器的rpm包了

四、从/var/log/zypp/history制作rpm包列表
进入保存最多rpm包的文件夹直接安装马上得到报错Failed dependencies缺少信赖相关包
localhost:~/var/cache/zypp/packages/packman/Essentials/x86_64 # rpm -ivh *.rpm
warning: Mesa-23.3.4-150600.83.8.pm.2.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY
error: Failed dependencies:
libvidstab.so.1.1()(64bit) is needed by libavfilter11-8.0-150600.2.pm.1.x86_64
libzmq.so.5()(64bit) is needed by libavfilter11-8.0-150600.2.pm.1.x86_64

需要root用户使用gedit文本编辑器打开/var/log/zypp/history文件,组合键Ctrl+f输入opi回车,找到输入opi codecs命令之后zypper安装记录,使用鼠标选中那37条记录——组合键Ctrl+c复制——gedit文本编辑器软件界面——单击左上角的加号图标,新建空白文档——组合键Ctrl+v粘贴——组合键Ctrl+s保存——名称为opi_codecs-history37.txt
localhost:~ # gedit /var/log/zypp/history

2025-10-25 23:58:51|command|root@localhost.localdomain|‘zypper’ ‘dup’ ‘–from’ ‘packman’ ‘–allow-downgrade’ ‘–allow-vendor-change’|————安装37个rpm包

2025-10-26 00:00:45|command|root@localhost.localdomain|‘zypper’ ‘in’ ‘–from’ ‘packman’ ‘ffmpeg’ ‘libavcodec-full’ ‘vlc-codecs’ ‘gstreamer-plugins-bad-codecs’ ‘gstreamer-plugins-ugly-codecs’ ‘gstreamer-plugins-libav’ ‘libfdk-aac2’ ‘pipewire-aptx’ ‘ffmpeg>=5’|————安装48个rpm包

2025-10-26 00:01:34|command|root@localhost.localdomain|‘zypper’ ‘in’ ‘gstreamer-plugins-good’ ‘gstreamer-plugins-good-extra’ ‘gstreamer-plugins-bad’ ‘gstreamer-plugins-ugly’ ‘dav1d’|————安装3个rpm包

2025-10-26 00:01:52|command|root@localhost.localdomain|‘zypper’ ‘dup’ ‘–from’ ‘repo-openh264’ ‘–allow-downgrade’ ‘–allow-vendor-change’|————安装1个rpm包

2025-10-26 00:02:04|command|root@localhost.localdomain|‘zypper’ ‘in’ ‘mozilla-openh264’ ‘libgstopenh264.so()(64bit)’|————安装2个rpm包

localhost:~ # awk -F ‘|’ ‘{ print $3,$4,$5}’ opi_codecs-history37.txt

pipewire 1.0.5+git36.60deeb2-150600.3.10.pm.1 x86_64
pipewire-lang 1.0.5+git36.60deeb2-150600.3.10.pm.1 noarch
使用awk命令以符号|为分隔符,提取第3、4、5部分内容,再制作成rpm列表,保存到opi_codecs-rpm37.txt
localhost:~ # tail -n 2 opi_codecs-history37.txt
2025-10-25 23:59:11|install|pipewire|1.0.5+git36.60deeb2-150600.3.10.pm.1|x86_64||packman|f03b0ba83e5c60c2aa4445be3c31c89cc80ebe6ecb66afb029fe36ca8be83800|
2025-10-25 23:59:11|install|pipewire-lang|1.0.5+git36.60deeb2-150600.3.10.pm.1|noarch||packman|73786b7aec8a8ad816e60d1a0cce64d4b78af3466e7c492765a40dd1b03016dd|
localhost:~ # awk -F ‘|’ ‘{ print $3"-“$4”.“$5”.rpm"}’ opi_codecs-history37.txt

pipewire-1.0.5+git36.60deeb2-150600.3.10.pm.1.x86_64.rpm
pipewire-lang-1.0.5+git36.60deeb2-150600.3.10.pm.1.noarch.rpm
localhost:~ # tree /var/cache/zypp/packages/|grep pipewire-lang
│ │ │ └── pipewire-lang-1.0.5+git36.60deeb2-150600.3.10.pm.1.noarch.rpm
localhost:~ # awk -F ‘|’ ‘{ print $3"-“$4”.“$5”.rpm"}’ opi_codecs-history37.txt > opi_codecs-rpm37.txt

五、在rpm列表前头加上rpm -ivh制作成安装脚本install_rpm37.bash
在/root创建文件夹opi_codecs91并将91个rpm包都复制到这里
localhost:~ # mkdir opi_codecs91
localhost:~ # find /var/cache/zypp/packages/
localhost:~ # cp /var/cache/zypp/packages/repo-oss/x86_64/* /root/opi_codecs91/
localhost:~ # cp /var/cache/zypp/packages/repo-oss/noarch* /root/opi_codecs91/
localhost:~ # cp /var/cache/zypp/packages/packman/Essentials/x86_64/* /root/opi_codecs91/
localhost:~ # cp /var/cache/zypp/packages/packman/Essentials/noarch/* /root/opi_codecs91/
localhost:~ # cp /var/cache/zypp/packages/packman/Multimedia/x86_64/* /root/opi_codecs91/
localhost:~ # cp /var/cache/zypp/packages/vlc/x86_64/* /root/opi_codecs91/
localhost:~ # cp /var/cache/zypp/packages/repo-openh264/x86_64/* /root/opi_codecs91/
localhost:~ # ls /root/opi_codecs91 |wc -l
91

localhost:~ # awk ‘{print "rpm -ivh "$1}’ opi_codecs-rpm37.txt

rpm -ivh pipewire-1.0.5+git36.60deeb2-150600.3.10.pm.1.x86_64.rpm
rpm -ivh pipewire-lang-1.0.5+git36.60deeb2-150600.3.10.pm.1.noarch.rpm
localhost:~ # awk ‘{print "rpm -ivh "$1}’ opi_codecs-rpm37.txt > install_rpm37.bash
localhost:~ # cp install_rpm37.bash opi_codecs91/
localhost:~ # cd opi_codecs91/
localhost:~/opi_codecs91 #
localhost:~/opi_codecs91 # bash install_rpm37.bash
warning: libquicktime0-1.2.4+git20180804.fff99cd-150600.2.pm.10.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY
Preparing… ################################# [100%]
file /usr/lib64/libquicktime.so.0.0.0 from install of libquicktime0-1.2.4+git20180804.fff99cd-150600.2.pm.10.x86_64 conflicts with file from package libquicktime0-1.2.4+git20180804.fff99cd-1.19.x86_64
warning: libavutil56_70-4.4.6-150600.19.pm.1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY
Preparing… ################################# [100%]
file /usr/lib64/libavutil.so.56.70.100 from install of libavutil56_70-4.4.6-150600.19.pm.1.x86_64 conflicts with file from package libavutil56_70-4.4-150600.11.1.x86_64

报错file xxx from install of NEW_RPM conflicts with file from package OLD_RPM,只能加上参数–force替换和强制安装了
localhost:~/opi_codecs91 # rm install_rpm37.bash
localhost:~/opi_codecs91 # awk ‘{print “rpm -ivh --force”$1}’ /root/opi_codecs-rpm37.txt > /root/opi_codecs91/install_rpm37.bash
localhost:~/opi_codecs91 # bash install_rpm37.bash
warning: libquicktime0-1.2.4+git20180804.fff99cd-150600.2.pm.10.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:libquicktime0-1.2.4+git20180804.f################################# [100%]
warning: libavutil56_70-4.4.6-150600.19.pm.1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:libavutil56_70-4.4.6-150600.19.pm################################# [100%]

六、制作48个rpm包列表再制作成安装脚本install_rpm48.bash
localhost:~ # awk -F ‘|’ ‘{ print $3"-“$4”.“$5”.rpm"}’ opi_codecs-history48.txt > opi_codecs-rpm48.txt
localhost:~ # awk ‘{print "rpm -ivh "$1}’ opi_codecs-rpm48.txt > opi_codecs91/install_rpm48.bash
localhost:~ # cd opi_codecs91/
localhost:~/opi_codecs91 # ls

install_rpm37.bash
install_rpm48.bash

localhost:~/opi_codecs91 # bash install_rpm48.bash
warning: libavutil60-8.0-150600.2.pm.1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:libavutil60-8.0-150600.2.pm.1 ################################# [100%]
warning: libavutil55-3.4.14-150600.2.pm.1.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 1abd1afb: NOKEY
Preparing… ################################# [100%]

没有报错发生,能够正常全部安装48个包

七、制作6个rpm包列表再制作成安装脚本install_rpm6.bash
localhost:~ # awk -F ‘|’ ‘{ print $3"-“$4”.“$5”.rpm"}’ opi_codecs-history6.txt > opi_codecs-rpm6.txt
localhost:~ # awk ‘{print "rpm -ivh --force "$1}’ /root/opi_codecs-rpm6.txt > /root/opi_codecs91/install_rpm6.bash
报错file xxx from install of NEW_RPM conflicts with file from package OLD_RPM,只能加上参数–force替换和强制安装了
localhost:~ # cd opi_codecs91/
localhost:~/opi_codecs91 # bash -vx install_rpm6.bash

rpm -ivh --force mozilla-openh264-2.6.0-2.sle150600.1.x86_64.rpm

  • rpm -ivh --force mozilla-openh264-2.6.0-2.sle150600.1.x86_64.rpm
    Preparing… ################################# [100%]
    Updating / installing…
    1:mozilla-openh264-2.6.0-2.sle15060################################# [100%]
    rpm -ivh --force gstreamer-plugin-openh264-1.24.12-1.sle150600.2.x86_64.rpm
  • rpm -ivh --force gstreamer-plugin-openh264-1.24.12-1.sle150600.2.x86_64.rpm
    Preparing… ################################# [100%]
    Updating / installing…
    1:gstreamer-plugin-openh264-1.24.12################################# [100%]

八、制作卸载脚本
一般很少卸载视频解码器的,就是逆向过程,先卸载6个rpm包,再卸载48个,再卸载37个
localhost:~ # awk -F ‘|’ ‘{ print $3"-“$4”.“$5”.rpm"}’ opi_codecs-history6.txt
dav1d-1.4.0-150600.1.2.x86_64.rpm
libcaca0-0.99.beta20-150600.1.6.x86_64.rpm
gstreamer-plugins-good-extra-1.24.0-150600.1.1.x86_64.rpm
libopenh264-8-2.6.0-2.sle150600.1.x86_64.rpm
mozilla-openh264-2.6.0-2.sle150600.1.x86_64.rpm
gstreamer-plugin-openh264-1.24.12-1.sle150600.2.x86_64.rpm
localhost:~ # awk -F ‘|’ ‘{ print “rpm -e “$3”-”$4"."$5}’ opi_codecs-history6.txt
rpm -e dav1d-1.4.0-150600.1.2.x86_64
rpm -e libcaca0-0.99.beta20-150600.1.6.x86_64
rpm -e gstreamer-plugins-good-extra-1.24.0-150600.1.1.x86_64
rpm -e libopenh264-8-2.6.0-2.sle150600.1.x86_64
rpm -e mozilla-openh264-2.6.0-2.sle150600.1.x86_64
rpm -e gstreamer-plugin-openh264-1.24.12-1.sle150600.2.x86_64
localhost:~ # rpm -aq |grep gstreamer-plugin-openh264
gstreamer-plugin-openh264-1.24.12-1.sle150600.2.x86_64
localhost:~ # awk -F ‘|’ ‘{ print “rpm -e “$3”-”$4"."$5}’ opi_codecs-history6.txt |tac
rpm -e gstreamer-plugin-openh264-1.24.12-1.sle150600.2.x86_64
rpm -e mozilla-openh264-2.6.0-2.sle150600.1.x86_64
rpm -e libopenh264-8-2.6.0-2.sle150600.1.x86_64
rpm -e gstreamer-plugins-good-extra-1.24.0-150600.1.1.x86_64
rpm -e libcaca0-0.99.beta20-150600.1.6.x86_64
rpm -e dav1d-1.4.0-150600.1.2.x86_64
cat‌(concatenate):从文件的第一行开始正向逐行显示内容,常用于查看、合并或复制文件内容。
‌tac‌:是 cat 的反向拼写,功能相反,从文件最后一行开始反向逐行显示内容,适用于调试日志文件等场景。

localhost:~ # awk -F ‘|’ ‘{ print “rpm -e “$3”-”$4"."$5}’ opi_codecs-history6.txt |tac > opi_codecs-remove6.bash
localhost:~ # bash -xv opi_codecs-remove6.bash
rpm -e gstreamer-plugin-openh264-1.24.12-1.sle150600.2.x86_64

  • rpm -e gstreamer-plugin-openh264-1.24.12-1.sle150600.2.x86_64
    rpm -e mozilla-openh264-2.6.0-2.sle150600.1.x86_64
  • rpm -e mozilla-openh264-2.6.0-2.sle150600.1.x86_64

localhost:~ # rpm -aq |grep gstreamer-plugin-openh264
没有显示,表示这个已经被移出系统了

结语:整个过程都是命令行,实际是要自己在草稿纸上手写流程导向的,从目的导向步骤实现,先有工程图纸再有施工制造,最开始从/var/log/zypp/history制作rpm包列表是用cut和sed命令实现的,改用awk命令就直观容易理解,平时也很少使用awk命令的,这次的实际应用能进一步熟悉awk了。
在这里插入图片描述

http://www.dtcms.com/a/557211.html

相关文章:

  • 《云原生基础设施》
  • dedecms手机网站开发怎么在网站底部添加备案号
  • 2019个人建网站利用关键词进网站后台
  • 物联网技术与应用传感器学习笔记
  • 云架构设计与实践:从基础到未来趋势
  • 【SDIO】【SDMMC】硬件层
  • 算法 - 差分
  • 定制制作网站哪家好北京seo关键词
  • Transformer:Decoder 中,Cross-Attention 所用的 K(Key)和 V(Value)矩阵,是如何从 Encoder 得到的
  • 矩阵系统全面解析:构建智能营销体系的核心引擎
  • 灵山县建设局网站设计论坛最好的网站
  • 整体设计 全面梳理复盘 之14 原型表结构深化与组织表关联重构
  • 使用 GitLab CI/CD 为 Linux 创建 RPM 包(一)
  • Go语言中error的保姆级认知学习教程,由易到难
  • Go语言中通过get请求获取api.open-meteo.com网站的天气数据
  • 哪些网站可以做微课技术支持 英铭网站建设
  • STM32位带操作理论实践
  • 住房和城乡建设部的网站首页不懂网站怎么做平台
  • 禁止Windows 10升级至Windows 11的方法
  • 人工智能之数学基础:随机变量函数的分布(离散和连续)
  • 30.16.2.表现层框架设计
  • DMS 迁移错误:String Length Exceeds DDL Length 完整解决方案
  • 福建建设厅网站官网宣传推广方案
  • 网站搭建的步骤百度网站怎样做
  • 网站的建设与开发discover wordpress
  • apk反编译修改教程系列-----读懂 Android 签名机制:从 V1 到 V4的签名区别
  • 人工智能本体论!
  • 将Git项目的所有远程分支打包成压缩包文件
  • 做液压的公司网站佛山网站建设格式有哪些
  • 深圳做微商网站的公司二维码生成器app