ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

麒麟软件商店误删恢复指南:5分钟搞定常见问题

麒麟软件商店误删恢复指南:5分钟搞定常见问题 事情是这样的有位同事早上急急忙忙跑过来说麒麟系统的软件商店被他误删了桌面上的软件图标不见了从命令行打开也提示找不到命令。他以为只是卸载了一个无关紧要的图标没想到把整个软件管理模块都卸掉了。这种场景在国产系统日常维护里其实挺常见的毕竟麒麟系统的软件商店和传统Windows里的应用商店定位不太一样它更像是整个软件生态的门面软件安装、卸载、更新、甚至很多国产办公软硬件驱动都得从它入口进入。好在这套机制有救而且多数情况下不需要重装系统只要方法对路5分钟内就能恢复。这篇文章不绕弯子直接讲清楚麒麟软件商店的底层机制、误删后的恢复流程以及修复过程中的常见坑。不管你现在用的是银河麒麟桌面版还是服务器版不管你是刚接触麒麟还没几天的新手还是已经在做信创运维的老手下面这套思路都能直接用上。我会尽量把我自己踩过的坑也一并写出来免得你走弯路。1. 搞清楚你删掉的到底是什么1.1 麒麟软件商店的系统身份很多人误删软件商店是因为把它当普通应用卸载了。实际上麒麟软件商店不是一个孤立的窗口程序它由一组系统组件构成图形界面程序、后台服务、软件源配置、以及依赖的一堆系统库。删掉商店本体可能只是删掉了一个APT软件包但连带影响了依赖关系甚至可能导致系统里其它软件跟着报错。在银河麒麟桌面版Kylin Desktop里软件商店常见的软件包名有这几种kylin-software-center、ukui-software-center、linglong玲珑运行环境。不同版本叫法不同比如从V10 SP1到更新的SP2、SP3包名略有差异。这也是恢复前第一件事先确认你系统里软件商店到底对应哪个包。我用过一条命令去查dpkg -l | grep -i software-center如果没有输出可以再试试dpkg -l | grep -i kylin | grep -i store这一步是为了拿到准确的软件包名。实际处理中我发现不少用户在前两步查不到结果就直接放弃去折腾重装系统其实这时候软件商店可能根本没被真正删除只是启动器里的桌面入口被删了重新创建快捷方式就行。所以排查一定要做全别一上来就动包管理。1.2 版本差异对恢复路径的影响银河麒麟至少分成几大阵营桌面版V10/V10 SP1、服务器版V10/V10 SP2等底下还分不同CPU架构的版本x86_64、ARM64、LoongArch等。不同版本用的包管理器可能不一样桌面版通常用APT dpkg服务器版有些场景下会看到YUM少数精简版甚至没有预装图形界面只有命令行。我自己的经验是先确认你的麒麟是桌面版而不是服务器版。服务器版没有图形界面软件商店你要恢复的软件商店概念都不存在那方向就错了。确认命令cat /etc/os-release看VERSION和PRETTY_NAME字段比如VERSIONV10 (SP1)就是银河麒麟V10 SP1桌面版。有了这个信息后面的恢复命令才能匹配。另外架构不同软件包的下载地址也会不一样ARM版和X86版不能混用deb包。注意恢复操作前一定先确认当前系统能联网。软件商店的安装包通常在麒麟的软件源服务器上最少需要能连到系统内网的软件源否则后面所有简单的apt install方法都会卡在无法定位软件包这一步。2. 恢复前的先手准备备份当前状态2.1 用dpkg记录当前软件状态这一步很多人会忽略。误删之后系统里可能积累了一堆依赖异常直接run安装命令容易撞上依赖关系未满足的报错。恢复前先把当前软件包状态拍个快照。这个动作有两个目的一是记录现状二是万一恢复失败你能知道自己动了哪些包。记录软件包状态dpkg --get-selections /tmp/pkg_list_backup.txt把现有的可执行文件列表也留一份find /usr/bin -maxdepth 1 -type f /tmp/usr_bin_backup.txt这两条命令在5分钟恢复流程里花不了10秒钟但它能救你一次。有一次我帮一个用户恢复软件商店本来只想装回软件商店包结果发现因为他之前用apt autoremove清理过依赖整整几十个系统级包被连带标记为卸载。如果那时候直接重新安装会触发一堆连锁问题。所以先记录状态再行动永远是明智的。2.2 检查和修复软件源配置麒麟软件商店恢复的本质是从软件源仓库下载软件包。软件源地址在/etc/apt/sources.list或者/etc/apt/sources.list.d/目录下的文件里。误删软件商店一般不碰软件源但如果你之前或者安装过程中动过source就有可能需要先恢复。检查软件源是否正常cat /etc/apt/sources.list ls -l /etc/apt/sources.list.d/然后刷新源索引sudo apt update这一步会重新建立软件包索引让apt知道软件商店包可以从哪里获取。如果apt update时报错最常见的是源地址不可达比如内网源没配好这时候需要修改source文件里的域名或IP。在实际操作中我看到过很多软件商店图标不见了的情况其实根本不是包被删了而是把/usr/share/applications/下的快捷方式文件删了。快捷方式恢复很简单从软件商店同版本的包里解压.desktop文件或者直接重新装一遍包即可不用搞得更复杂。2.3 判断网络和DNS环境恢复过程非常依赖网络。执行安装命令前先测试能否访问源ping -c 3 archive.kylinos.cn curl -I http://archive.kylinos.cn如果ping不通可能就是不支持常见于公司内网环境或网络没通。在这种情况下先解决网络否则后续都无法进行。注意麒麟的软件源通常分内网镜像和公网仓库公网仓库地址是 archive.kylinos.cn但不少单位的系统在部署时改成了定制源。你要是直接对外ping不通不代表系统源有问题可能只是公网被限制优先检查/etc/hosts和/etc/apt/sources.list里的实际配置。3. 五分钟恢复实战按优先级走的五个方案3.1 方案一直接用apt重装软件商店如果dpkg状态显示软件商店只是被卸掉了软件源还正常最简单的方法是直接重装sudo apt install kylin-software-center -y如果是优麒麟或某些定制版本包名可能不同就换sudo apt install ukui-software-center -y看到正在读取软件包列表以及后面的一串依赖处理信息就说明路子走对了。等进度条跑完软件商店就回到桌面菜单里了。这个方案适用于最常见的情况。如果执行时报软件包 kylin-software-center 没有可安装候选说明软件源索引里没有它。这时候先跑sudo apt update再重试还不行就检查源内是否真的包含这个包用apt-cache policy kylin-software-center查看候选版本。要注意这里不要随意加--fix-missing参数加了以后可能跳过缺失的依赖导致装完以后软件商店运行起来仍然各种报错。老老实实把源弄对再把依赖装齐全才是正经路子。3.2 方案二下载离线deb包手动安装单位内网的机器经常连不上外网这时apt install就会卡死。之前我处理过一台完全隔离网络环境的麒麟电脑软件商店被误删又没有任何可用的镜像源最后靠从另一台同版本、同架构的机器上拷贝.deb包完成的恢复。先从正常机器上查找软件商店对应的deb包路径dpkg -L kylin-software-center | grep deb通常系统内下载缓存过的deb位置在/var/cache/apt/archives/下。如果原机没有缓存可以在这台正常机器上触发一下重新安装再临时保留拷贝sudo apt install --reinstall kylin-software-center --no-download然后把得到的.deb文件通过U盘或scp拷贝到故障机器sudo dpkg -i kylin-software-center_*.deb如果提示缺依赖还要继续找依赖包。比较无脑的办法是在正常机器上用apt-cache depends kylin-software-center查依赖列表把所有Depends包都导出拷贝过去一次装全。实际经验不要只拷贝一个软件商店的主包至少要把依赖里这些常见包一起带过去ukui-kwin、update-manager、linglong-daemon、libqt5*这类库。因为普通机器上依赖大多都在但故障机器不一定。3.3 方案三用apt的强制修复模式有时候软件商店被误删界面上看着好像没什么影响但你一敲命令就会发现系统里已经存在一堆半安装状态。这通常是误删时—注销过程中的中断导致dpkg数据库出现脏状态。处理脏状态的命令组合如下sudo dpkg --configure -a sudo apt install -f -y这两条是恢复过程中的万能开场白。dpkg --configure -a会尝试配置所有未完成安装的包apt install -f则会自动修复依赖关系。跑完以后再用apt install kylin-software-center成功率会高很多。这个方案特别适合删了软件商店但同时又手动调整过别的包的杂牌故障现场。我见过一台机器软件商店卸载后因为管理员想装某个驱动虽然驱动没装上但把一堆python依赖卸了最后用-f把所有依赖重新拉回来后商店恢复得干干净净。3.4 方案四直接从安装介质恢复部分麒麟电脑出厂自带系统修复分区或者LiveCD恢复工具。如果软件商店缺失太严重连dpkg基础数据都损坏了可以考虑从安装介质挂载恢复。操作思路是先插入麒麟系统的安装U盘或者LiveCD开机进入Live模式然后挂载原系统的根目录sudo mount /dev/sdaX /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt进入chroot环境后重新安装软件商店包apt install kylin-software-center -y这个办法不建议新手贸然尝试因为涉及分区挂载和chroot一个失误可能导致系统文件权限错乱。但如果其他方法全部失败这算是重装系统之前的最后一道补救手段。比较稳妥的做法先检查系统分区里有没有livecd模式的备份工具比如麒麟系统自带的系统修复助手操作起来比手动chroot安全得多。3.5 方案五用snapper或时间快照回滚银河麒麟比较新的版本内置了文件快照机制底层用btrfs或LVM如果你之前开了快照恢复软件商店就变得很无脑。查一下可用快照sudo snapper list # 或者是 timeshift --list找到删除软件商店之前的那个快照执行回滚sudo snapper rollback 快照编号回滚完成后重启系统。这个方案能把整个系统状态恢复到快照时刻不只是软件商店回来连带相关配置也回来了。但要注意回滚会丢失从快照到现在的所有系统变化比如后来安装的应用、修改的配置所以要评估一下能不能接受。我个人通常不把快照回滚作为首选项除非情况很糟糕。4. 恢复完成后没结束软件商店的手尾处理4.1 更新软件源和验证运行装回软件商店只是第一步要紧的还有运行验证和环境刷新。执行sudo apt update sudo apt upgrade -y升级完以后在桌面找软件商店或运行kylin-software-center看到图形界面弹出、能正常浏览分类才算真正恢复。如果图标没出现在开始菜单你可以在/usr/share/applications/下新建一个快捷方式文件kylin-software-center.desktop内容大致是告诉系统启动器的路径和图标位置这样菜单栏就正常了。有几次我帮人恢复完后桌面图标出来了但一点开就秒退查日志发现是/var/log/kylin-software-center.log里报缺少某个 locale 或者数据库目录。这个通常是因为软件商店的配置目录/etc/kylin-software-center在误删时被清掉了。解决办法sudo mkdir -p /etc/kylin-software-center sudo apt reinstall kylin-software-center -y很好这类边角问题在恢复过程中非常典型你要有心理准备。4.2 误删之后命令行安装软件的常用场景软件商店回来之前很多用户其实需要先装点别的软件。所以这里补充几个和软件商店高度相关的命令行安装方法至少在界面恢复前能应急。银河麒麟下安装deb包的命令是sudo dpkg -i package.deb如果提示依赖不满足跑sudo apt -f install修复。安装离线包和更新包也是这个套路。如果要安装的是apk文件安卓应用那是麒麟系统安卓兼容环境中用的不属于传统Linux包管理范畴和软件商店没有直接关系。遇到无法安装apk文件这类问题一般要检查移动运行环境是否启动systemctl status kmrekmre服务如果没启动apk安装自然失败这个先启动服务再看软件商店里的安卓兼容模块状态流程就对路了。另外如果你误删软件商店的同时还想用wine运行Windows程序麒麟社区里常见的麒麟wine助手也是通过软件商店装的。在软件商店恢复前可以手动去官网或镜像站下载kylin-wine包用dpkg安装。所以掌握命令行安装姿势等于给自己留了后路。4.3 给软件商店加个保险栓恢复过一次之后我强烈建议你给这台机器加个防误删的措施。最简单的办法是给关键包做标记sudo apt-mark hold kylin-software-center这样以后即使有人敲了apt remove系统也会提示软件包是hold状态不会轻易删除。这个命令本质是给包管理器的卸载名单加保护锁属于零成本的保险。不过注意hold之后软件商店后续升级也会被自动跳过。如果你希望保留自动更新就不要直接hold常年hold会让安全补丁打不进去。更聪明的方案是定期用dpkg --get-selections /tmp/backup_manifest.txt备份一份包清单放在非系统分区然后每月做一次快照。任何时候误删直接对着清单和快照恢复。5. 常见问题与排查技巧实录5.1 常见报错速查表这一节根据自己和群里朋友的实际情况整理按出现频率排序。报错现象直接原因处理办法E: 无法定位软件包 kylin-software-center软件源索引里没这个包sudo apt update后重试检查source列表是否包含对应组件依赖于 libxxx 但无法安装它系统缺少基础依赖库sudo apt -f install或先安装该依赖deb包dpkg: 处理软件包时出错dpkg数据库锁或状态脏sudo rm -f /var/lib/dpkg/lock-frontend后执行sudo dpkg --configure -a软件商店打开后闪退配置目录缺失或驱动问题查看/var/log/kylin-software-center.log重建配置目录无法安装apk文件安卓兼容服务未启动sudo systemctl start kmre并确保kylin-kmre-daemon运行桌面无图标快捷方式文件被误删重建/usr/share/applications/下的.desktop文件这表里列的每种报错我都亲眼见过。尤其dpkg相关的问题处理时千万别慌着一通乱装先把锁和状态修好再继续。5.2 一次真实的恢复复盘给你看一个比较典型的案例方便对照自己的情况。一台银河麒麟V10 (SP1) x86_64桌面机管理员想卸载一个不用的打印机驱动结果手滑把ukui-software-center卸了屏幕上所有软件图标还在但点击任何软件商店入口都没反应。开机后命令行检查dpkg -l | grep ukui-software-center输出显示rc状态说明包已被删除但配置文件残留。此时我先执行sudo apt update sudo apt install ukui-software-center -y第一次装失败提示依赖libkylin-util.so缺失。于是apt-cache search kylin-util sudo apt install libkylin-util -y装完lib依赖后再装软件商店sudo apt install ukui-software-center -y这次成功。接着从开始菜单打开商店能显示界面。整个过程大概4分钟主要时间花在排查依赖链上。从这个案例可以复盘出一个经验误删之后先看状态再动手安装。rc状态和空状态处理方式不同前者更需要清理配置或强制覆盖。另外如果两台机器配置一样直接从同型号机器上dpkg -l | grep kylin-software对比输出比盲猜快得多。5.3 离线环境下的恢复思路很多政务、金融场景的麒麟终端是完全断网或半断网的软件源不可用。这种环境恢复软件商店最可行的手段归纳一下思路先在同一批次、同版本、同架构的正常机器上准备一套完整的恢复包。收集所有必要deb包到/tmp/restore_pkg/目录用dpkg-scanpackages生成本地源。故障机器上把恢复包拷贝进去配置本地源。生成本地源的命令cd /tmp/restore_pkg dpkg-scanpackages . | gzip Packages.gz echo deb [trustedyes] file:///tmp/restore_pkg ./ /tmp/restore_pkg.list sudo cp /tmp/restore_pkg.list /etc/apt/sources.list.d/ sudo apt update sudo apt install kylin-software-center -y这套方法让你在断网机器上也能拥有近乎apt install的体验不用一个一个dpkg去手动处理依赖顺序。需要注意的是dpkg-scanpackages可能没安装可以先用apt install dpkg-dev装如果连dpkg-dev都没有就只能老老实实dpkg -i按依赖顺序装。本地源是在离线环境里恢复软件生态最推荐的方式没有之一。比U盘一个个装deb高效太多。6. 我最后一轮总结的避坑清单写到这里把恢复麒麟软件商店这件事浓缩成三条个人心得。第一先保包管理器再保软件商店。dpkg和apt才是麒麟系统软件管理的根基软件商店只是基于它们的一层图形壳。只要dpkg状态是清晰的恢复商店永远是小问题如果dpkg状态乱了哪怕商店图标在桌面后续也全是问题。所以任何时候误删软件第一反应都应该是dpkg -l | grep 关键词确认状态而不是急着双击安装包。第二别对重装系统有执念。很多人遇到软件商店没了第一反应是这个系统坏了重装吧。我处理过几十台这类故障真正需要重装的比例不到10%。大多数恢复路径就是用apt update apt install拉取已安装包或从兄弟机器拷贝deb几十兆的事开个终端就解决。重装系统的时间成本和数据丢失风险远比修复要高得多。第三恢复之后一定要自我检查。装回商店不等于任务完成至少再验证三件事商店能正常打开、软件源能正常更新、部署一个常见软件比如输入法或浏览器能正常安装。这三步走完才算系统重新进入健康状态。如果你现在正准备恢复一台误删软件商店的麒麟机器建议先把上面第2章的两条备份命令跑一遍再从第3章方案一入手。五分钟足够解决问题。后续如果遇到具体的报错信息可以带着报错内容重新看对应的小节大多数坑在这篇文章里都做了对应处理。
返回列表