mirror of https://git.openwrt.org/project/luci.git
luci-app-package-manager: rename from luci-app-opkg and add APK support
Rename luci-app-opkg to luci-app-package-manager and add APK support to it. The idea is to adapt APK to mimic OPKG output to require minimal changes to the luci app. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
parent
591911d172
commit
bcd13b918e
|
@ -1,387 +0,0 @@
|
||||||
msgid ""
|
|
||||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1095
|
|
||||||
msgid "%s used (%1024mB used of %1024mB, %1024mB free)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1135
|
|
||||||
msgid ""
|
|
||||||
"<strong>Warning!</strong> Package operations can <a %s>break your system</a>."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1163
|
|
||||||
msgid "Actions"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:792
|
|
||||||
msgid "Allow overwriting conflicting package files"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:953
|
|
||||||
msgid "Automatically remove unused dependencies"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1218
|
|
||||||
msgid "Available"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:878
|
|
||||||
msgid ""
|
|
||||||
"Below is a listing of the various configuration files used by <em>opkg</em>. "
|
|
||||||
"Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
|
|
||||||
"custom repository entries. The configuration in the other files may be "
|
|
||||||
"changed but is usually not preserved by <em>sysupgrade</em>."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:800
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:846
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:893
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:959
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1056
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1150
|
|
||||||
msgid "Clear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1167
|
|
||||||
msgid "Configure opkg…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:744
|
|
||||||
msgid "Dependencies"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:750
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:938
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1236
|
|
||||||
msgid "Description"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:755
|
|
||||||
msgid "Details for package <em>%h</em>"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1142
|
|
||||||
msgid "Disk space"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1030
|
|
||||||
msgid "Dismiss"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1172
|
|
||||||
msgid "Display LuCI translation packages"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1189
|
|
||||||
msgid "Display all available translation packages"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1175
|
|
||||||
msgid ""
|
|
||||||
"Display base translation packages and translation packages for already "
|
|
||||||
"installed languages only"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:354
|
|
||||||
msgid "Displaying %d-%d of %d"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1155
|
|
||||||
msgid "Download and install package"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1008
|
|
||||||
msgid "Errors"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:982
|
|
||||||
msgid "Executing package manager"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1147
|
|
||||||
msgid "Filter"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/root/usr/share/rpcd/acl.d/luci-app-opkg.json:3
|
|
||||||
msgid "Grant access to opkg management"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1202
|
|
||||||
msgid "Hide all translation packages"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:808
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:824
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1066
|
|
||||||
msgid "Install"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1133
|
|
||||||
msgid "Install additional software and upgrade existing packages with opkg."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:780
|
|
||||||
msgid "Install suggested translation packages as well"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:299
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:522
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1219
|
|
||||||
msgid "Installed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:830
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1043
|
|
||||||
msgid ""
|
|
||||||
"Installing packages from untrusted sources is a potential security risk! "
|
|
||||||
"Really attempt to install <em>%h</em>?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:288
|
|
||||||
msgid "Install…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:857
|
|
||||||
msgid "Loading configuration data…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1084
|
|
||||||
msgid "Loading package information…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1046
|
|
||||||
msgid "MD5"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:840
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1042
|
|
||||||
msgid "Manually install package"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:510
|
|
||||||
msgid "Needs upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1227
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1245
|
|
||||||
msgid "Next page"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:368
|
|
||||||
msgid "No information available"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:355
|
|
||||||
msgid "No packages"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:372
|
|
||||||
msgid "No packages matching \"<strong>%h</strong>\"."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:542
|
|
||||||
msgid "Not available"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:527
|
|
||||||
msgid "Not installed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1158
|
|
||||||
msgid "OK"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:856
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:904
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:918
|
|
||||||
msgid "OPKG Configuration"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1233
|
|
||||||
msgid "Package name"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1157
|
|
||||||
msgid "Package name or URL…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1225
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1243
|
|
||||||
msgid "Previous page"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:837
|
|
||||||
msgid "Really attempt to install <em>%h</em>?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:967
|
|
||||||
msgid "Remove"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:943
|
|
||||||
msgid "Remove package <em>%h</em>"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:276
|
|
||||||
msgid "Remove…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:737
|
|
||||||
msgid "Require approx. %1024mB size for %d package(s) to install."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:517
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:535
|
|
||||||
msgid "Require version %h %h, installed %h"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:540
|
|
||||||
msgid ""
|
|
||||||
"Required dependency package <em>%h</em> is not available in any repository."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:508
|
|
||||||
msgid "Requires update to %h %h"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:373
|
|
||||||
msgid "Reset"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1047
|
|
||||||
msgid "SHA256"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:915
|
|
||||||
msgid "Save"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:905
|
|
||||||
msgid "Saving configuration data…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:758
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:946
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1045
|
|
||||||
msgid "Size"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1235
|
|
||||||
msgid "Size (.ipk)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1130
|
|
||||||
#: applications/luci-app-opkg/root/usr/share/luci/menu.d/luci-app-opkg.json:3
|
|
||||||
msgid "Software"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:761
|
|
||||||
msgid "Suggested translations"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:740
|
|
||||||
msgid "Suggested translations require approx. %1024mB additional space."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1013
|
|
||||||
msgid "The <em>opkg %h</em> command failed with code <code>%d</code>."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:513
|
|
||||||
msgid ""
|
|
||||||
"The installed version of package <em>%h</em> is not compatible, require %s "
|
|
||||||
"while %s is installed."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:833
|
|
||||||
msgid "The package <em>%h</em> is not available in any configured repository."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:530
|
|
||||||
msgid ""
|
|
||||||
"The repository version of package <em>%h</em> is not compatible, require %s "
|
|
||||||
"but only %s is available."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1149
|
|
||||||
msgid "Type to filter…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1032
|
|
||||||
msgid "Unable to execute <em>opkg %s</em> command: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:871
|
|
||||||
msgid "Unable to read %s: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:910
|
|
||||||
msgid "Unable to save %s: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1165
|
|
||||||
msgid "Update lists…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1220
|
|
||||||
msgid "Updates"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:265
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:294
|
|
||||||
msgid "Upgrade…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1166
|
|
||||||
msgid "Upload Package…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:757
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:945
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1234
|
|
||||||
msgid "Version"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:519
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:537
|
|
||||||
msgid "Version incompatible"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:984
|
|
||||||
msgid "Waiting for the <em>opkg %h</em> command to complete…"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1198
|
|
||||||
msgctxt "Display translation packages"
|
|
||||||
msgid "all"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1185
|
|
||||||
msgctxt "Display translation packages"
|
|
||||||
msgid "filtered"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1211
|
|
||||||
msgctxt "Display translation packages"
|
|
||||||
msgid "none"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:673
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:934
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:1143
|
|
||||||
msgid "unknown"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:671
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:932
|
|
||||||
msgid "~%1024mB compressed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:669
|
|
||||||
#: applications/luci-app-opkg/htdocs/luci-static/resources/view/opkg.js:930
|
|
||||||
msgid "~%1024mB installed"
|
|
||||||
msgstr ""
|
|
|
@ -1,59 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
. /usr/share/libubox/jshn.sh
|
|
||||||
|
|
||||||
action=$1
|
|
||||||
shift
|
|
||||||
|
|
||||||
case "$action" in
|
|
||||||
list-installed)
|
|
||||||
cat /usr/lib/opkg/status
|
|
||||||
;;
|
|
||||||
list-available)
|
|
||||||
lists_dir=$(sed -rne 's#^lists_dir \S+ (\S+)#\1#p' /etc/opkg.conf /etc/opkg/*.conf 2>/dev/null | tail -n 1)
|
|
||||||
find "${lists_dir:-/usr/lib/opkg/lists}" -type f '!' -name '*.sig' | xargs -r gzip -cd
|
|
||||||
;;
|
|
||||||
install|update|remove)
|
|
||||||
(
|
|
||||||
opkg="opkg"
|
|
||||||
|
|
||||||
while [ -n "$1" ]; do
|
|
||||||
case "$1" in
|
|
||||||
--autoremove|--force-overwrite|--force-removal-of-dependent-packages)
|
|
||||||
opkg="$opkg $1"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-*)
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if flock -x 200; then
|
|
||||||
$opkg $action "$@" </dev/null >/tmp/opkg.out 2>/tmp/opkg.err
|
|
||||||
code=$?
|
|
||||||
stdout=$(cat /tmp/opkg.out)
|
|
||||||
stderr=$(cat /tmp/opkg.err)
|
|
||||||
else
|
|
||||||
code=255
|
|
||||||
stderr="Failed to acquire lock"
|
|
||||||
fi
|
|
||||||
|
|
||||||
json_init
|
|
||||||
json_add_int code $code
|
|
||||||
[ -n "$stdout" ] && json_add_string stdout "$stdout"
|
|
||||||
[ -n "$stderr" ] && json_add_string stderr "$stderr"
|
|
||||||
json_dump
|
|
||||||
) 200>/tmp/opkg.lock
|
|
||||||
|
|
||||||
rm -f /tmp/opkg.lock /tmp/opkg.err /tmp/opkg.out
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: $0 {list-installed|list-available}" >&2
|
|
||||||
echo " $0 {install|upgrade|remove} pkg[ pkg...]" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
"admin/system/opkg": {
|
|
||||||
"title": "Software",
|
|
||||||
"order": 30,
|
|
||||||
"action": {
|
|
||||||
"type": "view",
|
|
||||||
"path": "opkg"
|
|
||||||
},
|
|
||||||
"depends": {
|
|
||||||
"acl": [ "luci-app-opkg" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
"luci-app-opkg": {
|
|
||||||
"description": "Grant access to opkg management",
|
|
||||||
"read": {
|
|
||||||
"cgi-io": [ "exec" ],
|
|
||||||
"file": {
|
|
||||||
"/usr/libexec/opkg-list installed": [ "exec" ],
|
|
||||||
"/usr/libexec/opkg-list available": [ "exec" ],
|
|
||||||
"/usr/libexec/opkg-call list-installed": [ "exec" ],
|
|
||||||
"/usr/libexec/opkg-call list-available": [ "exec" ],
|
|
||||||
"/etc/opkg.conf": [ "read" ],
|
|
||||||
"/etc/opkg/*.conf": [ "read" ]
|
|
||||||
},
|
|
||||||
"ubus": {
|
|
||||||
"luci": [ "getMountPoints" ]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"write": {
|
|
||||||
"file": {
|
|
||||||
"/usr/libexec/opkg-call install": [ "exec" ],
|
|
||||||
"/usr/libexec/opkg-call install *": [ "exec" ],
|
|
||||||
"/usr/libexec/opkg-call remove *": [ "exec" ],
|
|
||||||
"/usr/libexec/opkg-call update": [ "exec" ],
|
|
||||||
"/etc/opkg.conf": [ "write" ],
|
|
||||||
"/etc/opkg/*.conf": [ "write" ],
|
|
||||||
"/tmp/upload.ipk": [ "write" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_LICENSE:=Apache-2.0
|
PKG_LICENSE:=Apache-2.0
|
||||||
|
|
||||||
LUCI_TITLE:=OPKG package management application
|
LUCI_TITLE:=Package management application
|
||||||
LUCI_DEPENDS:=+luci-base +opkg
|
LUCI_DEPENDS:=+luci-base
|
||||||
|
|
||||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||||
|
|
|
@ -803,7 +803,7 @@ function handleInstall(ev)
|
||||||
'data-command': 'install',
|
'data-command': 'install',
|
||||||
'data-package': name,
|
'data-package': name,
|
||||||
'class': 'btn cbi-button-action',
|
'class': 'btn cbi-button-action',
|
||||||
'click': handleOpkg,
|
'click': handlePkg,
|
||||||
'disabled': isReadonlyView
|
'disabled': isReadonlyView
|
||||||
}, _('Install'))
|
}, _('Install'))
|
||||||
])
|
])
|
||||||
|
@ -819,7 +819,7 @@ function handleManualInstall(ev)
|
||||||
'data-package': name_or_url,
|
'data-package': name_or_url,
|
||||||
'click': function(ev) {
|
'click': function(ev) {
|
||||||
document.querySelector('input[name="install"]').value = '';
|
document.querySelector('input[name="install"]').value = '';
|
||||||
handleOpkg(ev);
|
handlePkg(ev);
|
||||||
}
|
}
|
||||||
}, _('Install')), warning;
|
}, _('Install')), warning;
|
||||||
|
|
||||||
|
@ -852,17 +852,28 @@ function handleManualInstall(ev)
|
||||||
function handleConfig(ev)
|
function handleConfig(ev)
|
||||||
{
|
{
|
||||||
var conf = {};
|
var conf = {};
|
||||||
|
var base_dir = L.hasSystemFeature('apk') ? '/etc/apk' : '/etc/opkg';
|
||||||
|
|
||||||
ui.showModal(_('OPKG Configuration'), [
|
ui.showModal(_('%s Configuration').format(L.hasSystemFeature('apk') ? 'APK' : 'OPKG'), [
|
||||||
E('p', { 'class': 'spinning' }, _('Loading configuration data…'))
|
E('p', { 'class': 'spinning' }, _('Loading configuration data…'))
|
||||||
]);
|
]);
|
||||||
|
|
||||||
fs.list('/etc/opkg').then(function(partials) {
|
fs.list(base_dir).then(function(partials) {
|
||||||
var files = [ '/etc/opkg.conf' ];
|
var files = [];
|
||||||
|
|
||||||
for (var i = 0; i < partials.length; i++)
|
if (!L.hasSystemFeature('apk'))
|
||||||
if (partials[i].type == 'file' && partials[i].name.match(/\.conf$/))
|
files.push(base_dir + '.conf')
|
||||||
files.push('/etc/opkg/' + partials[i].name);
|
|
||||||
|
for (var i = 0; i < partials.length; i++) {
|
||||||
|
if (partials[i].type == 'file') {
|
||||||
|
if (L.hasSystemFeature('apk')) {
|
||||||
|
if (partials[i].name == 'repositories')
|
||||||
|
files.push(base_dir + '/' + partials[i].name);
|
||||||
|
} else if (partials[i].name.match(/\.conf$/)) {
|
||||||
|
files.push(base_dir + '/' + partials[i].name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Promise.all(files.map(function(file) {
|
return Promise.all(files.map(function(file) {
|
||||||
return fs.read(file)
|
return fs.read(file)
|
||||||
|
@ -874,8 +885,10 @@ function handleConfig(ev)
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
}).then(function() {
|
}).then(function() {
|
||||||
|
var opkg_text = _('Below is a listing of the various configuration files used by <em>opkg</em>. Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for custom repository entries. The configuration in the other files may be changed but is usually not preserved by <em>sysupgrade</em>.')
|
||||||
|
var apk_text = _('Below is a listing of the various configuration files used by <em>apk</em>. The configuration in the other files may be changed but is usually not preserved by <em>sysupgrade</em>.')
|
||||||
var body = [
|
var body = [
|
||||||
E('p', {}, _('Below is a listing of the various configuration files used by <em>opkg</em>. Use <em>opkg.conf</em> for global settings and <em>customfeeds.conf</em> for custom repository entries. The configuration in the other files may be changed but is usually not preserved by <em>sysupgrade</em>.'))
|
E('p', {}, L.hasSystemFeature('apk') ? apk_text : opkg_text)
|
||||||
];
|
];
|
||||||
|
|
||||||
Object.keys(conf).sort().forEach(function(file) {
|
Object.keys(conf).sort().forEach(function(file) {
|
||||||
|
@ -901,7 +914,7 @@ function handleConfig(ev)
|
||||||
data[textarea.getAttribute('name')] = textarea.value
|
data[textarea.getAttribute('name')] = textarea.value
|
||||||
});
|
});
|
||||||
|
|
||||||
ui.showModal(_('OPKG Configuration'), [
|
ui.showModal(_('%s Configuration').format(L.hasSystemFeature('apk') ? 'APK' : 'OPKG'), [
|
||||||
E('p', { 'class': 'spinning' }, _('Saving configuration data…'))
|
E('p', { 'class': 'spinning' }, _('Saving configuration data…'))
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -915,7 +928,7 @@ function handleConfig(ev)
|
||||||
}, _('Save')),
|
}, _('Save')),
|
||||||
]));
|
]));
|
||||||
|
|
||||||
ui.showModal(_('OPKG Configuration'), body);
|
ui.showModal(_('%s Configuration').format(L.hasSystemFeature('apk') ? 'APK' : 'OPKG'), body);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -948,7 +961,7 @@ function handleRemove(ev)
|
||||||
desc || '',
|
desc || '',
|
||||||
E('div', { 'style': 'display:flex; justify-content:space-between; flex-wrap:wrap' }, [
|
E('div', { 'style': 'display:flex; justify-content:space-between; flex-wrap:wrap' }, [
|
||||||
E('label', { 'class': 'cbi-checkbox', 'style': 'float:left' }, [
|
E('label', { 'class': 'cbi-checkbox', 'style': 'float:left' }, [
|
||||||
E('input', { 'id': 'autoremove-cb', 'type': 'checkbox', 'checked': 'checked', 'name': 'autoremove', 'disabled': isReadonlyView }), ' ',
|
E('input', { 'id': 'autoremove-cb', 'type': 'checkbox', 'checked': 'checked', 'name': 'autoremove', 'disabled': isReadonlyView || L.hasSystemFeature('apk') }), ' ',
|
||||||
E('label', { 'for': 'autoremove-cb' }), ' ',
|
E('label', { 'for': 'autoremove-cb' }), ' ',
|
||||||
_('Automatically remove unused dependencies')
|
_('Automatically remove unused dependencies')
|
||||||
]),
|
]),
|
||||||
|
@ -962,7 +975,7 @@ function handleRemove(ev)
|
||||||
'data-command': 'remove',
|
'data-command': 'remove',
|
||||||
'data-package': name,
|
'data-package': name,
|
||||||
'class': 'btn cbi-button-negative',
|
'class': 'btn cbi-button-negative',
|
||||||
'click': handleOpkg,
|
'click': handlePkg,
|
||||||
'disabled': isReadonlyView
|
'disabled': isReadonlyView
|
||||||
}, _('Remove'))
|
}, _('Remove'))
|
||||||
])
|
])
|
||||||
|
@ -970,7 +983,7 @@ function handleRemove(ev)
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleOpkg(ev)
|
function handlePkg(ev)
|
||||||
{
|
{
|
||||||
return new Promise(function(resolveFn, rejectFn) {
|
return new Promise(function(resolveFn, rejectFn) {
|
||||||
var cmd = ev.target.getAttribute('data-command'),
|
var cmd = ev.target.getAttribute('data-command'),
|
||||||
|
@ -981,7 +994,7 @@ function handleOpkg(ev)
|
||||||
|
|
||||||
var dlg = ui.showModal(_('Executing package manager'), [
|
var dlg = ui.showModal(_('Executing package manager'), [
|
||||||
E('p', { 'class': 'spinning' },
|
E('p', { 'class': 'spinning' },
|
||||||
_('Waiting for the <em>opkg %h</em> command to complete…').format(cmd))
|
_('Waiting for the <em>%s %h</em> command to complete…').format(L.hasSystemFeature('apk') ? 'apk' : 'opkg', cmd))
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var argv = [ cmd ];
|
var argv = [ cmd ];
|
||||||
|
@ -1001,7 +1014,7 @@ function handleOpkg(ev)
|
||||||
if (pkg != null)
|
if (pkg != null)
|
||||||
argv.push(pkg);
|
argv.push(pkg);
|
||||||
|
|
||||||
fs.exec_direct('/usr/libexec/opkg-call', argv, 'json').then(function(res) {
|
fs.exec_direct('/usr/libexec/package-manager-call', argv, 'json').then(function(res) {
|
||||||
dlg.removeChild(dlg.lastChild);
|
dlg.removeChild(dlg.lastChild);
|
||||||
|
|
||||||
if (res.stdout)
|
if (res.stdout)
|
||||||
|
@ -1013,7 +1026,7 @@ function handleOpkg(ev)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res.code !== 0)
|
if (res.code !== 0)
|
||||||
dlg.appendChild(E('p', _('The <em>opkg %h</em> command failed with code <code>%d</code>.').format(cmd, (res.code & 0xff) || -1)));
|
dlg.appendChild(E('p', _('The <em>%s %h</em> command failed with code <code>%d</code>.').format(L.hasSystemFeature('apk') ? 'apk' : 'opkg', cmd, (res.code & 0xff) || -1)));
|
||||||
|
|
||||||
dlg.appendChild(E('div', { 'class': 'button-row' },
|
dlg.appendChild(E('div', { 'class': 'button-row' },
|
||||||
E('div', {
|
E('div', {
|
||||||
|
@ -1026,13 +1039,13 @@ function handleOpkg(ev)
|
||||||
updateLists();
|
updateLists();
|
||||||
|
|
||||||
if (res.code !== 0)
|
if (res.code !== 0)
|
||||||
rejectFn(new Error(res.stderr || 'opkg error %d'.format(res.code)));
|
rejectFn(new Error(res.stderr || '%s error %d'.format(L.hasSystemFeature('apk') ? 'apk' : 'opkg', res.code)));
|
||||||
else
|
else
|
||||||
resolveFn(res);
|
resolveFn(res);
|
||||||
}, this, res)
|
}, this, res)
|
||||||
}, _('Dismiss'))));
|
}, _('Dismiss'))));
|
||||||
}).catch(function(err) {
|
}).catch(function(err) {
|
||||||
ui.addNotification(null, E('p', _('Unable to execute <em>opkg %s</em> command: %s').format(cmd, err)));
|
ui.addNotification(null, E('p', _('Unable to execute <em>%s %s</em> command: %s').format(L.hasSystemFeature('apk') ? 'apk' : 'opkg', cmd, err)));
|
||||||
ui.hideModal();
|
ui.hideModal();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1040,7 +1053,7 @@ function handleOpkg(ev)
|
||||||
|
|
||||||
function handleUpload(ev)
|
function handleUpload(ev)
|
||||||
{
|
{
|
||||||
var path = '/tmp/upload.ipk';
|
var path = '/tmp/upload.%s'.format(L.hasSystemFeature('apk') ? 'apk' : 'ipk');
|
||||||
return ui.uploadFile(path).then(L.bind(function(btn, res) {
|
return ui.uploadFile(path).then(L.bind(function(btn, res) {
|
||||||
ui.showModal(_('Manually install package'), [
|
ui.showModal(_('Manually install package'), [
|
||||||
E('p', {}, _('Installing packages from untrusted sources is a potential security risk! Really attempt to install <em>%h</em>?').format(res.name)),
|
E('p', {}, _('Installing packages from untrusted sources is a potential security risk! Really attempt to install <em>%h</em>?').format(res.name)),
|
||||||
|
@ -1062,7 +1075,7 @@ function handleUpload(ev)
|
||||||
'data-command': 'install',
|
'data-command': 'install',
|
||||||
'data-package': path,
|
'data-package': path,
|
||||||
'click': function(ev) {
|
'click': function(ev) {
|
||||||
handleOpkg(ev).finally(function() {
|
handlePkg(ev).finally(function() {
|
||||||
fs.remove(path)
|
fs.remove(path)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1076,8 +1089,8 @@ function downloadLists()
|
||||||
{
|
{
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
callMountPoints(),
|
callMountPoints(),
|
||||||
fs.exec_direct('/usr/libexec/opkg-call', [ 'list-available' ]),
|
fs.exec_direct('/usr/libexec/package-manager-call', [ 'list-available' ]),
|
||||||
fs.exec_direct('/usr/libexec/opkg-call', [ 'list-installed' ])
|
fs.exec_direct('/usr/libexec/package-manager-call', [ 'list-installed' ])
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1133,7 +1146,7 @@ return view.extend({
|
||||||
E('h2', {}, _('Software')),
|
E('h2', {}, _('Software')),
|
||||||
|
|
||||||
E('div', { 'class': 'cbi-map-descr' }, [
|
E('div', { 'class': 'cbi-map-descr' }, [
|
||||||
E('span', _('Install additional software and upgrade existing packages with opkg.')),
|
E('span', _('Install additional software and upgrade existing packages with %s.').format(L.hasSystemFeature('apk') ? 'apk' : 'opkg')),
|
||||||
E('br'),
|
E('br'),
|
||||||
E('span', _('<strong>Warning!</strong> Package operations can <a %s>break your system</a>.').format(
|
E('span', _('<strong>Warning!</strong> Package operations can <a %s>break your system</a>.').format(
|
||||||
'href="https://openwrt.org/meta/infobox/upgrade_packages_warning" target="_blank" rel="noreferrer"'
|
'href="https://openwrt.org/meta/infobox/upgrade_packages_warning" target="_blank" rel="noreferrer"'
|
||||||
|
@ -1165,9 +1178,9 @@ return view.extend({
|
||||||
E('div', {}, [
|
E('div', {}, [
|
||||||
E('label', {}, _('Actions') + ':'), ' ',
|
E('label', {}, _('Actions') + ':'), ' ',
|
||||||
E('span', { 'class': 'control-group' }, [
|
E('span', { 'class': 'control-group' }, [
|
||||||
E('button', { 'class': 'btn cbi-button-positive', 'data-command': 'update', 'click': handleOpkg, 'disabled': isReadonlyView }, [ _('Update lists…') ]), ' ',
|
E('button', { 'class': 'btn cbi-button-positive', 'data-command': 'update', 'click': handlePkg, 'disabled': isReadonlyView }, [ _('Update lists…') ]), ' ',
|
||||||
E('button', { 'class': 'btn cbi-button-action', 'click': handleUpload, 'disabled': isReadonlyView }, [ _('Upload Package…') ]), ' ',
|
E('button', { 'class': 'btn cbi-button-action', 'click': handleUpload, 'disabled': isReadonlyView }, [ _('Upload Package…') ]), ' ',
|
||||||
E('button', { 'class': 'btn cbi-button-neutral', 'click': handleConfig }, [ _('Configure opkg…') ])
|
E('button', { 'class': 'btn cbi-button-neutral', 'click': handleConfig }, [ _('Configure %s').format(L.hasSystemFeature('apk') ? 'apk' : 'opkg') ])
|
||||||
])
|
])
|
||||||
]),
|
]),
|
||||||
|
|
|
@ -0,0 +1,387 @@
|
||||||
|
msgid ""
|
||||||
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1095
|
||||||
|
msgid "%s used (%1024mB used of %1024mB, %1024mB free)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1135
|
||||||
|
msgid ""
|
||||||
|
"<strong>Warning!</strong> Package operations can <a %s>break your system</a>."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1163
|
||||||
|
msgid "Actions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:792
|
||||||
|
msgid "Allow overwriting conflicting package files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:953
|
||||||
|
msgid "Automatically remove unused dependencies"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1218
|
||||||
|
msgid "Available"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:878
|
||||||
|
msgid ""
|
||||||
|
"Below is a listing of the various configuration files used by <em>ipkg</em>. "
|
||||||
|
"Use <em>ipkg.conf</em> for global settings and <em>customfeeds.conf</em> for "
|
||||||
|
"custom repository entries. The configuration in the other files may be "
|
||||||
|
"changed but is usually not preserved by <em>sysupgrade</em>."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:800
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:846
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:893
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:959
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1056
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1150
|
||||||
|
msgid "Clear"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1167
|
||||||
|
msgid "Configure ipkg…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:744
|
||||||
|
msgid "Dependencies"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:750
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:938
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1236
|
||||||
|
msgid "Description"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:755
|
||||||
|
msgid "Details for package <em>%h</em>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1142
|
||||||
|
msgid "Disk space"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1030
|
||||||
|
msgid "Dismiss"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1172
|
||||||
|
msgid "Display LuCI translation packages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1189
|
||||||
|
msgid "Display all available translation packages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1175
|
||||||
|
msgid ""
|
||||||
|
"Display base translation packages and translation packages for already "
|
||||||
|
"installed languages only"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:354
|
||||||
|
msgid "Displaying %d-%d of %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1155
|
||||||
|
msgid "Download and install package"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1008
|
||||||
|
msgid "Errors"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:982
|
||||||
|
msgid "Executing package manager"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1147
|
||||||
|
msgid "Filter"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/root/usr/share/rpcd/acl.d/luci-app-ipkg.json:3
|
||||||
|
msgid "Grant access to ipkg management"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1202
|
||||||
|
msgid "Hide all translation packages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:808
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:824
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1066
|
||||||
|
msgid "Install"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1133
|
||||||
|
msgid "Install additional software and upgrade existing packages with ipkg."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:780
|
||||||
|
msgid "Install suggested translation packages as well"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:299
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:522
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1219
|
||||||
|
msgid "Installed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:830
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1043
|
||||||
|
msgid ""
|
||||||
|
"Installing packages from untrusted sources is a potential security risk! "
|
||||||
|
"Really attempt to install <em>%h</em>?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:288
|
||||||
|
msgid "Install…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:857
|
||||||
|
msgid "Loading configuration data…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1084
|
||||||
|
msgid "Loading package information…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1046
|
||||||
|
msgid "MD5"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:840
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1042
|
||||||
|
msgid "Manually install package"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:510
|
||||||
|
msgid "Needs upgrade"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1227
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1245
|
||||||
|
msgid "Next page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:368
|
||||||
|
msgid "No information available"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:355
|
||||||
|
msgid "No packages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:372
|
||||||
|
msgid "No packages matching \"<strong>%h</strong>\"."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:542
|
||||||
|
msgid "Not available"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:527
|
||||||
|
msgid "Not installed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1158
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:856
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:904
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:918
|
||||||
|
msgid "OPKG Configuration"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1233
|
||||||
|
msgid "Package name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1157
|
||||||
|
msgid "Package name or URL…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1225
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1243
|
||||||
|
msgid "Previous page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:837
|
||||||
|
msgid "Really attempt to install <em>%h</em>?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:967
|
||||||
|
msgid "Remove"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:943
|
||||||
|
msgid "Remove package <em>%h</em>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:276
|
||||||
|
msgid "Remove…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:737
|
||||||
|
msgid "Require approx. %1024mB size for %d package(s) to install."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:517
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:535
|
||||||
|
msgid "Require version %h %h, installed %h"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:540
|
||||||
|
msgid ""
|
||||||
|
"Required dependency package <em>%h</em> is not available in any repository."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:508
|
||||||
|
msgid "Requires update to %h %h"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:373
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1047
|
||||||
|
msgid "SHA256"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:915
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:905
|
||||||
|
msgid "Saving configuration data…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:758
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:946
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1045
|
||||||
|
msgid "Size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1235
|
||||||
|
msgid "Size (.ipk)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1130
|
||||||
|
#: applications/luci-app-ipkg/root/usr/share/luci/menu.d/luci-app-ipkg.json:3
|
||||||
|
msgid "Software"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:761
|
||||||
|
msgid "Suggested translations"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:740
|
||||||
|
msgid "Suggested translations require approx. %1024mB additional space."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1013
|
||||||
|
msgid "The <em>ipkg %h</em> command failed with code <code>%d</code>."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:513
|
||||||
|
msgid ""
|
||||||
|
"The installed version of package <em>%h</em> is not compatible, require %s "
|
||||||
|
"while %s is installed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:833
|
||||||
|
msgid "The package <em>%h</em> is not available in any configured repository."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:530
|
||||||
|
msgid ""
|
||||||
|
"The repository version of package <em>%h</em> is not compatible, require %s "
|
||||||
|
"but only %s is available."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1149
|
||||||
|
msgid "Type to filter…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1032
|
||||||
|
msgid "Unable to execute <em>ipkg %s</em> command: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:871
|
||||||
|
msgid "Unable to read %s: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:910
|
||||||
|
msgid "Unable to save %s: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1165
|
||||||
|
msgid "Update lists…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1220
|
||||||
|
msgid "Updates"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:265
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:294
|
||||||
|
msgid "Upgrade…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1166
|
||||||
|
msgid "Upload Package…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:757
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:945
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1234
|
||||||
|
msgid "Version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:519
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:537
|
||||||
|
msgid "Version incompatible"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:984
|
||||||
|
msgid "Waiting for the <em>ipkg %h</em> command to complete…"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1198
|
||||||
|
msgctxt "Display translation packages"
|
||||||
|
msgid "all"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1185
|
||||||
|
msgctxt "Display translation packages"
|
||||||
|
msgid "filtered"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1211
|
||||||
|
msgctxt "Display translation packages"
|
||||||
|
msgid "none"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:673
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:934
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:1143
|
||||||
|
msgid "unknown"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:671
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:932
|
||||||
|
msgid "~%1024mB compressed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:669
|
||||||
|
#: applications/luci-app-ipkg/htdocs/luci-static/resources/view/package_manager.js:930
|
||||||
|
msgid "~%1024mB installed"
|
||||||
|
msgstr ""
|
|
@ -0,0 +1,111 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. /usr/share/libubox/jshn.sh
|
||||||
|
|
||||||
|
action=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [ -f /usr/bin/apk ]; then
|
||||||
|
ipkg_bin="apk"
|
||||||
|
else
|
||||||
|
ipkg_bin="opkg"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
list-installed)
|
||||||
|
if [ $ipkg_bin = "apk" ]; then
|
||||||
|
$ipkg_bin list -I --full 2>/dev/null
|
||||||
|
else
|
||||||
|
cat /usr/lib/opkg/status
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
list-available)
|
||||||
|
if [ $ipkg_bin = "apk" ]; then
|
||||||
|
$ipkg_bin list --full 2>/dev/null
|
||||||
|
else
|
||||||
|
lists_dir=$(sed -rne 's#^lists_dir \S+ (\S+)#\1#p' /etc/opkg.conf /etc/opkg/*.conf 2>/dev/null | tail -n 1)
|
||||||
|
find "${lists_dir:-/usr/lib/opkg/lists}" -type f '!' -name '*.sig' | xargs -r gzip -cd
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
install|update|remove)
|
||||||
|
(
|
||||||
|
cmd="$ipkg_bin"
|
||||||
|
|
||||||
|
# APK have command renamed
|
||||||
|
if [ $ipkg_bin = "apk" ]; then
|
||||||
|
case "$action" in
|
||||||
|
install)
|
||||||
|
action="add"
|
||||||
|
;;
|
||||||
|
update)
|
||||||
|
action="upgrade"
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
action="del"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# APK have --autoremove enabled by default and
|
||||||
|
# --force-removal-of-dependent-packages as -r option
|
||||||
|
if [ $ipkg_bin = "apk" ]; then
|
||||||
|
while [ -n "$1" ]; do
|
||||||
|
case "$1" in
|
||||||
|
--force-removal-of-dependent-packages)
|
||||||
|
cmd="$cmd -r"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--force-overwrite)
|
||||||
|
cmd="$cmd $1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
else
|
||||||
|
while [ -n "$1" ]; do
|
||||||
|
case "$1" in
|
||||||
|
--autoremove|--force-overwrite|--force-removal-of-dependent-packages)
|
||||||
|
ipkg_bin="$apk $1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if flock -x 200; then
|
||||||
|
$cmd $action "$@" </dev/null >/tmp/ipkg.out 2>/tmp/ipkg.err
|
||||||
|
code=$?
|
||||||
|
stdout=$(cat /tmp/ipkg.out)
|
||||||
|
stderr=$(cat /tmp/ipkg.err)
|
||||||
|
else
|
||||||
|
code=255
|
||||||
|
stderr="Failed to acquire lock"
|
||||||
|
fi
|
||||||
|
|
||||||
|
json_init
|
||||||
|
json_add_int code $code
|
||||||
|
[ -n "$stdout" ] && json_add_string stdout "$stdout"
|
||||||
|
[ -n "$stderr" ] && json_add_string stderr "$stderr"
|
||||||
|
json_dump
|
||||||
|
) 200>/tmp/ipkg.lock
|
||||||
|
|
||||||
|
rm -f /tmp/ipkg.lock /tmp/ipkg.err /tmp/ipkg.out
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {list-installed|list-available}" >&2
|
||||||
|
echo " $0 {install|upgrade|remove} pkg[ pkg...]" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"admin/system/package-manager": {
|
||||||
|
"title": "Software",
|
||||||
|
"order": 30,
|
||||||
|
"action": {
|
||||||
|
"type": "view",
|
||||||
|
"path": "package-manager"
|
||||||
|
},
|
||||||
|
"depends": {
|
||||||
|
"acl": [ "luci-app-package-manager" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"luci-app-package-manager": {
|
||||||
|
"description": "Grant access to package management",
|
||||||
|
"read": {
|
||||||
|
"cgi-io": [ "exec" ],
|
||||||
|
"file": {
|
||||||
|
"/usr/libexec/package-manager-call list-installed": [ "exec" ],
|
||||||
|
"/usr/libexec/package-manager-call list-available": [ "exec" ],
|
||||||
|
"/etc/opkg.conf": [ "read" ],
|
||||||
|
"/etc/opkg/*.conf": [ "read" ],
|
||||||
|
"/etc/apk/repositories": [ "read" ]
|
||||||
|
},
|
||||||
|
"ubus": {
|
||||||
|
"luci": [ "getMountPoints" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"write": {
|
||||||
|
"file": {
|
||||||
|
"/usr/libexec/package-manager-call install": [ "exec" ],
|
||||||
|
"/usr/libexec/package-manager-call install *": [ "exec" ],
|
||||||
|
"/usr/libexec/package-manager-call remove *": [ "exec" ],
|
||||||
|
"/usr/libexec/package-manager-call update": [ "exec" ],
|
||||||
|
"/etc/opkg.conf": [ "write" ],
|
||||||
|
"/etc/opkg/*.conf": [ "write" ],
|
||||||
|
"/etc/apk/repositories": [ "write" ],
|
||||||
|
"/tmp/upload.ipk": [ "write" ],
|
||||||
|
"/tmp/upload.apk": [ "write" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,7 +13,7 @@ LUCI_TITLE:=LuCI interface with Uhttpd as Webserver (default)
|
||||||
LUCI_DESCRIPTION:=Standard OpenWrt set including package management and attended sysupgrades support
|
LUCI_DESCRIPTION:=Standard OpenWrt set including package management and attended sysupgrades support
|
||||||
LUCI_DEPENDS:= \
|
LUCI_DEPENDS:= \
|
||||||
+luci-light \
|
+luci-light \
|
||||||
+luci-app-opkg
|
+luci-app-package-manager
|
||||||
|
|
||||||
PKG_LICENSE:=Apache-2.0
|
PKG_LICENSE:=Apache-2.0
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue