Thank you for your inputs.
I am unable to import the ctypes library while executing python script
in rpc shell script.
When I run the same script in bash it works fine. ( Even without three
symbolic links.) I have created all the env variables and sourced
profile before running the script.
On Fri, Apr 6, 2018 at 5:20 PM, Damiano Verzulli <dami...@verzulli.it> wrote:
> On 06/04/2018 23:20, Lars Kruse wrote:
>>> I am able to execute python script after creating below soft links.
>>> ln -s /mnt/usb/usr/lib/libz.so.1 /usr/lib/libz.so.1
>>> ln -s /mnt/usb/lib/libpthread.so.0 /usr/lib/libpthread.so.0
>>> ln -s /mnt/usb/usr/lib/libpython2.7.so.1.0 /usr/lib/libpython2.7.so.1.0
>> The fact that you need to create symlinks manually feels wrong to me.
>> I am not used to installing packages to non-root locations, thus I cannot
>> whether this is normal or an indication of a problem. Can you tell?
> I guess that the three symbolic links above are required 'cause:
> - some packages have been installed inside the USB storage (/mnt/usb) and,
> as such, some important libraries (libz.so.1, libpthread.so.0,
> libpython2.7.so.1.0) are stored under such folder;
> - some other application (Python 2.7, I guess) is "dinamically lynked" to
> such libraries. This means that to succesfully run python 2.7, those
> libraries needs to be "retrieved and read" (as they are part of python
> itself!). If they are NOT found, the application (python 2.7) cannot start;
> - the set of folder used by Linux (and OpenWRT) to search for dynamic
> libraries is quite fixed and, by default:
> - does _NOT_ include /mnt/usr/lib nor /mnt/usb/usr/lib
> - _DOES_ include /usr/lib
> So, by defining above symbolic links, Phani is simply offering to OpenWRT a
> chance to find the dinamic libraries in "default folder" (/usr/lib) even if
> they are really stored inside /mnt/usb/usr/lib.
> Anyway, the proper way to solve such a problem is a bit different.
> As mentioned in the guide pointed by Phani in his last message:
> some environment variable should be "updated" (when relying on USB
> storage). In detail:
> export USB=/mnt/usb
> export PATH=$PATH:$USB/usr/bin:$USB/usr/sbin # This PATH is dependent on
> existing $PATH
> export LD_LIBRARY_PATH=$USB/lib:$USB/usr/lib
> - The first one simply define the mount-point of the USB storage;
> - The second one simply tell that binaries stored inside the USB should be
> directly accessible, without specifying a full-path;
> - The first, and MOST IMPORTANT, line defines _TWO_ folders (/mnt/usb/lib
> AND /mnt/usb/usr/lib) to be used for searching of dynamic libraries, IN
> ADDITION to standard ones.
> Actually, the LD_LIBRARY_PATH environment variables has exactly such a
> Hence, instead of creating the three symbolic links (and, maybe, missing
> several others), it's much better to define such a LD_LIBRARY_PATH.
> It's important to note that such a LD_LIBRARY_PATH should be defined
> _BEFORE_ launching the program requiring related libraries.
> Exactly for this reason, the same already mentioned guide refers the
> /etc/profile file (where the three environment variables should be defined)
> and the command:
> # source /etc/profile
> that, when launched, "import" such variables inside the current environment.
> So, in the end:
> 1 - remove the symbolic links;
> 2 - create the /etc/profile taking care to define the three variables;
> 3 - before launching "python", ensure to "source /etc/profile" [it's
> required only once]
> In this way, not only the three libraries above, but also any other library
> stored inside /mnt/usb should be accessible with not problem.
> Hope this help!
> Damiano Verzulli
> e-mail: dami...@verzulli.it
> "Technical people tend to fall into two categories: Specialists
> and Generalists. The Specialist learns more and more about a
> narrower and narrower field, until he eventually, in the limit,
> knows everything about nothing. The Generalist learns less and
> less about a wider and wider field, until eventually he knows
> nothing about everything." - William Stucke - AfrISPA
> openwrt-users mailing list
openwrt-users mailing list