#20894: Ddns Script Errors When Curl Installed in Alternate Root
--------------------------+------------------------
Reporter: anonymous | Owner: developers
Type: defect | Status: new
Priority: normal | Milestone:
Component: packages | Version: Trunk
Keywords: ddns-scripts |
--------------------------+------------------------
ON MY SYSTEM, I HAVE A USB DRIVE WHICH I USE FOR INSTALLING ADDON PACKAGES
DUE TO THE SPACE LIMITATIONS OF THE ROOT FILE SYSTEM.. THIS CAUSED
SEVERAL ISSUES WITH THE DDNS-SCRIPTS DUE TO CURL BEING INSTALLED IN THIS
ALTERNATE ROOT LOCATION. PLEASE CONSIDER THESE ISSUES AND SEE IF THE
SCRIPTS CAN BE IMPROVED TO HANDLE THIS USECASE.
FOR EXAMPLE, I INSTALLED CURL WITH SOMETHING SIMILAR TO BELOW WHICH
INSTALLS ALL THE CURL PARTS TO /mnt/usb.
opkg -e usb curl
1) THE BELOW ABSOLUTE PATHS IN THE FUNCTION SCRIPTS PREVENTED THE LOGOIC
FROM RECOGNIZING THAT CURL IS AVAILABLE ON THE SYSTEM.. TO GET THIS TO
WORK, I HAD TO MANUALLY SYM LINK MY CURL TO THE ROOT (E.G. ln -s
/mnt/usb/usr/bin/curl /usr/bin/curl) SINCE OPKG DOESN'T DO THIS
AUTOMAGICALLY. YOU MAY WANT TO DO VALIDATIONS AGAINST JUST THE BINARY
NAME AND ALLOW THE PATH RESOLUTION TO FIND THE EXECUTABLE (E.G -x curl)
# grep curl /usr/lib/ddns/dynamic_dns_functions.sh
USE_CURL=$(uci -q get ddns.global.use_curl) || USE_CURL=0
[ -x /usr/bin/curl ] || USE_CURL=0
elif [ -x /usr/bin/curl ]; then
__PROG="/usr/bin/curl -RsS -o $DATFILE --stderr $ERRFILE"
grep -i "all_proxy" /usr/lib/libcurl.so*
>/dev/null 2>&1 || \
write_log 13 "cURL: libcurl compiled
without Proxy support"
2) ONCE I GOT CURL RECOGNIZED, I WOULD GET THE BELOW ERRORS. BUT I WOULD
ONLY GET THIS ERROR WHEN RUNNING THE SERVICE VIA THE INIT.D FUNCTION.
RUNNING VIA THE COMMAND LINE, IT WORKED FINE..
194452 WARN : Transfer failed - retry 15/0 in 60 seconds
194552 : #> /usr/bin/curl -RsS -o /var/run/ddns/dnsomatic.dat
--stderr /var/run/ddns/dnsomatic.err --noproxy '*'
'http://myip.dnsomatic.com/'
194552 ERROR : cURL Error: '16'
I FINALLY FIGURED IT OUT AS BEING THERE ARE CURL LIBRARIES INSTALLED IN
THE ALTERNATE ROOT DIRECTORY.. I HAD TO ADD THE BELOW EXPORT TO THE
SCRIPT..
# vi /usr/lib/ddns/dynamic_dns_updater.sh
#!/bin/sh
#.Distributed under the terms of the GNU General Public License (GPL)
version 2.0
#.Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
export LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/usb/usr/lib
[ $# -lt 1 -o -n "${2//[0-3]/}" -o ${#2} -gt 1 ] && {
I HAVE THE APPROPRIATE LD_LIBRARY_PATH CONFIGURED IN /etc/profile BUT IT
DOESN'T APPEAR THAT THE SERVICE SCRIPT UTILIZES THE PROFILE SCRIPT TO
SETUP THE ENVIRONMENT? NOT SURE IF THIS IS A BUG IN THE SERVICE SCRIPTS
OR THIS SHOULD BE DONE MANUALLY IN THE DDNS SCRIPT?
--
Ticket URL: <https://dev.openwrt.org/ticket/20894>
OpenWrt <http://openwrt.org>
Opensource Wireless Router Technology
_______________________________________________
openwrt-tickets mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-tickets