在写这个文章之前,多次测试套件误删除文件后只能重新安装系统才能再次安装这个错误的套件。期间也试过 find -name xxx* 清理各种残留都没有解决,昨夜搞了半天也没搜到相关文章,经过多次测试终于找到解决办法。
套件文件夹说明
关于群晖套件安装有两个重要目录:/var/packages 和 /volume1/@appstore:
1、/var/packages/是套件的配置文件和运行脚本,运行程序target文件夹链接到/volume1/@appstore
2、/volume1/@appstore是套件的程序目录,spk文件里面的package.tgz就解压至此
删除/volume1/@appstore里面的程序目录,套件会提示 错误,但此时还可以正常卸载或再次上传spk文件安装
升级系统或者修改(删除)套件文件导致套件无法启动也无法修复、卸载,通常有些教程让你。。。删除/var/packages里面的目录,删除一时爽但是会发现无法再安装(DSM7肯定无法安装,DSM6偶尔还可以)。
使用 synopkg install xxx 命令安装会提示:
无法更新“AList网盘”。无法执行此操作,可能是因为网络连接不稳定或系统正忙。请稍后再试。。
{"error":{"code":0},"results":[{"action":"repair","beta":false,"betaIncoming":false,"error":{"code":263,"description":"failed to create temp dir"},"finished":true,"installReboot":false,"installing":true,"language":"enu","last_stage":"prepare_upgrade","package":"alist3","packageName":"AList网盘","pid":31779,"spk":"/root/AList3_v3.29.1_x86_64-DSM77.spk","stage":"install_failed_and_stopped","status":"non_installed","status_code":255,"status_description":"failed to locate given package","success":false,"username":"","version":"3.29.1"}],"success":false}
修复套件强删错误
解决方法:安装或者删除一个别的套件,再安装此套件即可。。。。。。折腾几个小时 找到的方案
原理应该是直接删除文件并没有更新套件列表,因为没有upgrade执行脚本导致安装错误,通过安装卸载别的套件即可更新修复。
PS:套件卸载后在系统的残留
首先:这些残留并不影响系统的运行或者有任何副作用!!!以下内容仅限洁癖查看。。。
举例 alist3 卸载后的残留文件位置:
/usr/syno/synoman/webman/3rdparty/alist3
/usr/syno/etc/packages/alist3
/volume1/@appdata/alist3 #某些DSM7有选择仅卸载时,配置会保留在此,下次安装可以恢复如初
/volume1/@apptemp/alist3
/volume1/@apphome/alist3
/volume1/@appshare/alist3
/volume1/@appconf/alist3
删除 alist3 的用户和用户组
synouser --del alist3
synogroup --del alist3
另:群晖全部用户列表:/etc/passwd 用户组列表:/etc/group ,不建议手贱动这俩文件!!!
关于ContainerManager项目删除
一般情况是因为Docker类套件安装过程 拉取镜像失败导致的,此情况下套件也无法再安装、修复。
首先!!!:添加Docker镜像代理教程:https://imnks.com/8302.html
解决方案1:使用docker pull拉取成功镜像后再重新安装
解决方案2:参考上面的教程强制删除套件后,再删除ContainerManager项目
项目配置文件路径:/var/packages/ContainerManager/etc/projects
打开json文件,找到对应的项目,之后删除三个名称一样的配置文件
。。。
(图片来自 科技宅小明 视频截图)