mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-02 13:53:56 +08:00
🎈 Sync 2026-08-24 18:23:48
This commit is contained in:
1 parent
91bee6a90e
commit
6b8877f5e1
119 files changed
+2501
-2677
No files matched your search
@@ -158,6 +158,7 @@ level=$1
|
||||
|
||||
echo "Try Level $level"
|
||||
|
||||
# Apk system means that openwrt is newer enough, so we don't need to check the odhcpd version on apk system
|
||||
odhcpd_version=$(grep -o 'Version: [0-9]*' /usr/lib/opkg/info/odhcpd-ipv6only.control | cut -d' ' -f2)
|
||||
if [ -n "$odhcpd_version" -a "$odhcpd_version" -lt 2025 ]; then
|
||||
echo "odhcpd version $odhcpd_version detected, enabling NDP bug workaround"
|
||||
@@ -166,7 +167,10 @@ fi
|
||||
|
||||
# nat
|
||||
if [ "$level" = $LEVEL_NAT ]; then
|
||||
if opkg status kmod-ipt-nat6 | grep '^Status: ' | grep -Fwq installed ; then
|
||||
if [ -f /etc/apk/arch ]; then
|
||||
apk query --installed --field version kmod-ipt-nat6 | grep -q 'Version:\s*[1-9]' || \
|
||||
apk add kmod-ipt-nat6 || exit 1
|
||||
elif opkg status kmod-ipt-nat6 | grep '^Status: ' | grep -Fwq installed ; then
|
||||
echo "kmod-ipt-nat6 found"
|
||||
else
|
||||
echo "kmod-ipt-nat6 not found, installing"
|
||||
|
||||
@@ -1,18 +1,33 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2025 jjm2473@gmail.com
|
||||
|
||||
(
|
||||
cd /usr/lib/opkg/info
|
||||
grep -lm1 '^Version: 0.0.0-r1$' kmod-*.control 2>/dev/null | sed 's/.control$//'
|
||||
) > /tmp/incompat_kmods.txt
|
||||
APK=false
|
||||
[ -f /etc/apk/arch ] && APK=true
|
||||
|
||||
if $APK; then
|
||||
apk list --installed --manifest 'kmod-*' | grep ' 0.0.0-r1$' | cut -d' ' -f1 > /tmp/incompat_kmods.txt
|
||||
else
|
||||
(
|
||||
cd /usr/lib/opkg/info
|
||||
grep -lm1 '^Version: 0.0.0-r1$' kmod-*.control 2>/dev/null | sed 's/.control$//'
|
||||
) > /tmp/incompat_kmods.txt
|
||||
fi
|
||||
|
||||
if [ -s /tmp/incompat_kmods.txt ]; then
|
||||
echo "The following incompatible kernel modules were found:"
|
||||
cat /tmp/incompat_kmods.txt
|
||||
echo "=====END====="
|
||||
echo "Try installing from opkg"
|
||||
opkg update
|
||||
opkg install $(cat /tmp/incompat_kmods.txt)
|
||||
if $APK; then
|
||||
echo "Try installing from apk"
|
||||
# doing `apk fix` twice, because the first time install the version 0.0.0-r1, which is always not exist, but it's side effect mark the package uninstalled, the second time will install the latest version.
|
||||
# `apk add --force-reinstall` works too, but it will change world file, which may not be desired.
|
||||
apk fix -r $(cat /tmp/incompat_kmods.txt) >/dev/null 2>&1
|
||||
apk fix -r $(cat /tmp/incompat_kmods.txt)
|
||||
else
|
||||
echo "Try installing from opkg"
|
||||
opkg update
|
||||
opkg install $(cat /tmp/incompat_kmods.txt)
|
||||
fi
|
||||
rm -f /tmp/incompat_kmods.txt
|
||||
echo "If you encounter network problems, please try again"
|
||||
echo "If it says some packages are unknown, it may be because they have been removed. Just ignore it."
|
||||
|
||||
@@ -1,48 +1,49 @@
|
||||
#!/bin/sh
|
||||
|
||||
APK=false
|
||||
PKG_BASE=usr/lib/opkg/info
|
||||
PKG_EXT=control
|
||||
|
||||
[ -s /etc/apk/arch ] && {
|
||||
APK=true
|
||||
PKG_BASE=lib/apk/packages
|
||||
PKG_EXT=list
|
||||
}
|
||||
|
||||
nonconf_files_of_pkg() {
|
||||
local pkgname="$1"
|
||||
if [ -s /rom/usr/lib/opkg/info/${pkgname}.conffiles ]; then
|
||||
grep -hvxFf /rom/usr/lib/opkg/info/${pkgname}.conffiles \
|
||||
/rom/usr/lib/opkg/info/${pkgname}.list
|
||||
if [ -s /rom/$PKG_BASE/${pkgname}.conffiles ]; then
|
||||
grep -hvxFf /rom/$PKG_BASE/${pkgname}.conffiles \
|
||||
/rom/$PKG_BASE/${pkgname}.list
|
||||
else
|
||||
cat /rom/usr/lib/opkg/info/${pkgname}.list
|
||||
cat /rom/$PKG_BASE/${pkgname}.list
|
||||
fi
|
||||
}
|
||||
|
||||
reset_pkg() {
|
||||
local pkgname="$1"
|
||||
local line
|
||||
local dep
|
||||
local deps
|
||||
echo "${pkgname}" | grep -q '^kernel$
|
||||
^libc$
|
||||
^libgcc1$
|
||||
^libatomic1$
|
||||
^busybox$' && return
|
||||
if [ -f /rom/usr/lib/opkg/info/${pkgname}.control -a \
|
||||
\( -e /overlay/upper/usr/lib/opkg/info/${pkgname}.control -o \
|
||||
-e /ext_overlay/upper/usr/lib/opkg/info/${pkgname}.control \) ]; then
|
||||
if [ -f /rom/$PKG_BASE/${pkgname}.$PKG_EXT -a \
|
||||
\( -e /overlay/upper/$PKG_BASE/${pkgname}.$PKG_EXT -o \
|
||||
-e /ext_overlay/upper/$PKG_BASE/${pkgname}.$PKG_EXT \) ]; then
|
||||
echo "reset ${pkgname}"
|
||||
if [ -f /rom/usr/lib/opkg/info/${pkgname}.list ]; then
|
||||
if [ -f /rom/$PKG_BASE/${pkgname}.list ]; then
|
||||
nonconf_files_of_pkg "${pkgname}" | while read; do
|
||||
line="$REPLY"
|
||||
line="$REPLY"
|
||||
rm -f "/overlay/upper/${line}" "/ext_overlay/upper/${line}"
|
||||
done
|
||||
rm -f /overlay/upper/usr/lib/opkg/info/${pkgname}.list /ext_overlay/upper/usr/lib/opkg/info/${pkgname}.list
|
||||
rm -f /overlay/upper/$PKG_BASE/${pkgname}.list /ext_overlay/upper/$PKG_BASE/${pkgname}.list
|
||||
fi
|
||||
deps=`grep '^Depends: ' /rom/usr/lib/opkg/info/${pkgname}.control | sed -e 's/^Depends: //' -e 's/ ([^)]*)//g' -e 's/,/ /g'`
|
||||
# avoid loop deps
|
||||
rm -f /overlay/upper/usr/lib/opkg/info/${pkgname}.control /ext_overlay/upper/usr/lib/opkg/info/${pkgname}.control
|
||||
for dep in $deps ; do
|
||||
reset_pkg "$dep"
|
||||
done
|
||||
rm -f /overlay/upper/usr/lib/opkg/info/${pkgname}.* /ext_overlay/upper/usr/lib/opkg/info/${pkgname}.*
|
||||
fi
|
||||
}
|
||||
|
||||
ls_all_rom_pkgs() {
|
||||
( cd /rom/usr/lib/opkg/info ; find . -maxdepth 1 -name '*.control' | sed -E 's#./(.*).control#\1#g' )
|
||||
( cd /rom/$PKG_BASE ; find . -maxdepth 1 -name "*.$PKG_EXT" | sed -E 's#./(.*).'"$PKG_EXT"'#\1#g' )
|
||||
}
|
||||
|
||||
reset_all_rom() {
|
||||
@@ -55,7 +56,13 @@ reset_all_rom() {
|
||||
|
||||
reset_all_rom
|
||||
|
||||
touch /overlay/upper/usr/lib/opkg/.upgrading
|
||||
if $APK; then
|
||||
rm -f /overlay/upper/etc/uci-defaults/.upgrading /ext_overlay/upper/etc/uci-defaults/.upgrading
|
||||
touch /overlay/upper/etc/uci-defaults/.upgrading 2>/dev/null
|
||||
else
|
||||
rm -f /overlay/upper/usr/lib/opkg/.upgrading /ext_overlay/upper/usr/lib/opkg/.upgrading
|
||||
touch /overlay/upper/usr/lib/opkg/.upgrading 2>/dev/null
|
||||
fi
|
||||
|
||||
echo "done, please reboot, it will reboot in 10s"
|
||||
|
||||
|
||||
Reference in new issue
Block a user