knoxcu / snake-os

Automatically exported from code.google.com/p/snake-os
0 stars 0 forks source link

Ipkg optware support #6

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
I would like to add support for ipkg optware. It allows to install various
set of packages suitable for snake-os. Installed packages are stored on
connected usb devices so they don't require any additional space on limited
flash memory.

I've attached patch which adds ipkg-cl (58 KB) binary (and removes rsync
due to firmware size limitation).
It requires to create .optware directory in /usb/sda1. This is location of
all installed packages using ipkg-cl tool. During image creation there is
also made a symbolic link in /opt to /usb/sda1/.optware. 

Patch also contains init.d script ipkg which set PATH and LD_LIBRARY_PATH
in /etc/profile (if not already included) and also try to start services
from /opt/etc/init.d.

There is also /etc/ipkg.conf file which contains destination and source.
Source is not yet valid because we don't have packages build for snake os
stored on any location yet.

Original issue reported on code.google.com by xho...@gmail.com on 4 Apr 2010 at 1:10

Attachments:

GoogleCodeExporter commented 9 years ago
I forgot to mention that I also added rc.local script which is executed after 
device
boots. It may be removed from this patch. It allows to run user commands after 
each
device start.

Original comment by xho...@gmail.com on 4 Apr 2010 at 1:12

GoogleCodeExporter commented 9 years ago

Original comment by dgazi...@gmail.com on 5 Apr 2010 at 5:35

GoogleCodeExporter commented 9 years ago
Has this been rolled into mainline?  I'd think this makes a candidate to 
replace transmission (and then make transmission available as a package).

Any thoughts?

Original comment by dwmcqu...@gmail.com on 19 May 2011 at 2:17

GoogleCodeExporter commented 9 years ago
I have opkg in the 1.3.2 branch of svn right now.  I'll roll your init files in 
and then we just need to figure out where to store the packages.

Original comment by dwmcqu...@gmail.com on 20 May 2011 at 3:58

GoogleCodeExporter commented 9 years ago
It would be nice to get optware packages working an snakeos. It will be much 
easier to install software even for people with no idea of chroot environments.

Original comment by ulrich.i...@gmail.com on 27 Jul 2011 at 8:54

GoogleCodeExporter commented 9 years ago
I just committed (among other things) the ability to set the opkg partition. 
It's done using bind mounts. When opkg is enabled /opt contains a "view" of 
/usb/<selected partition>/.optware/ where the packages are actually installed. 
The bind mount and required directories will be automatically created when the 
selected partition is mounted.

The partition can be selected under system->opkg in the browser interface, 
where opkg can also be turned on and off.

Packages can install init files under /opt/init.d/ (maybe this should be 
/opt/etc/init.d dunno). When the partition is mounted the start function of 
every file that is executable will be called. When unmounted the stop function. 
Services can this way be turned on/off with a chmod +x/-x <servicefile>"

Packages can be installed from the shell with "opkg-cl install". A demo package 
is attached. Instructions for creating packages are here: 
http://inportb.com/2010/10/19/making-an-opkg-package/

I don't have a proper usb disk to test it with right now, but it's working fine 
with the card reader in my ritmo.

Original comment by stefansc...@googlemail.com on 28 Aug 2011 at 6:20

Attachments:

GoogleCodeExporter commented 9 years ago
Hi, this is my first post. I made some test and i find with url this 
http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/, where i 
download some packages. But install one for one is too slowly ¿How I can set 
source for packages?
PD:Sorry for my english XD

Original comment by gori.men...@gmail.com on 29 Sep 2011 at 11:07

GoogleCodeExporter commented 9 years ago
With minor changes in config files and some scripts it is possible to use with 
SnakeOS V1.3.2-20111019 software from Optware repository (stable and unstable: 
I use the last one)
http://ipkg.nslu2-inux.org/feeds/optware/gumstix1151/cross/
I installed some packages using command prompt (via PyTTY).
I don't test most of them, but looks like mc, transmittion and some other works 
well... pyLoad v0.4.3 works well too, except:
1. captcha recognition absent becouse of absence optional tesseract-ocr package 
for gumstix in optware repo: all other dependencies of this version of pyLoad 
resolved successfully (python 2.5, py-curl, py-django, libcurl e.t.c.);
2. support of national symbols in FTP downloads (looks like because of python 
ascii-unicode conversion problem in a corresponded pyLoad's plugin).
Now I try force to work pyLoad v0.4.8 (it can be installed, but built-in 
web-server won't work properly)...
I am novice in the Linux, but if the community would be interested, later I can 
post here (or somewhere else) description of my steps.

Original comment by shevele...@mail.ru on 22 Nov 2011 at 6:46

GoogleCodeExporter commented 9 years ago
Oh.. those really work, except that everything ends up in /opt/opt/. Do you 
change the dest directory in opkg.conf and set LD_LIBRARY_PATH?

I'm tempted to change the destination to / for the next release, but that would 
break existing packages (they expect to be installed into /opt/). I guess 
updating the few packages that we have wouldn't be a big issue.

The idea behind installing into /opt/ was to make it harder for some bad 
package to mess up the system. But this breaks most foreign packages.

I've been trying to package up pyload and its dependencies myself. What 
problems do you have with the web server? My biggest issue is that I run out of 
memory when copying a largish file off the device through the web interface and 
that pyload is bit of memory hog in general. I was using python 2.7 but maybe 
older versions would be a bit lighter.

Original comment by stefansc...@googlemail.com on 22 Nov 2011 at 12:52

GoogleCodeExporter commented 9 years ago
I apologize for the delay in response...
Yes, the file /etc/opkg/opkg.conf has been modified:
#================opkg.conf===============
#destination of install
dest root /
#source of packages 
src/gz optware_unst 
http://ipkg.nslu2-linux.org/feeds/optware/gumstix1151/cross/unstable
#download cache directory (to make sure that opkg upgrade 
#does not break system because of an unstable connection)
option cache /opt/cache
#==============================

Variable PATH in /etc/profile was changed from
PATH=/usr/bin:/usr/sbin:/bin:/sbin
to
PATH=/opt/bin:/usr/bin:/usr/sbin:/bin:/sbin
(don't know if it good practice?) because each execution of some scripts (for 
example, /usr/share/snake/automount or /usr/share/snake/setprinter) resets PATH 
to default value.

As for LD_LIBRARY_PATH - simple adding it to /etc/profile like this:
LD_LIBRARY_PATH=/opt/lib
has no effect: it should be additionally exported later from command line or 
elsewhere... may be since the uClibc comes with the firmware is not configured 
with LDSO_RUNPATH
(look at 
http://snake-os.googlecode.com/svn/branches/1.3.2/tools/arm-uclibc-3.4.6/include
/bits/uClibc_config.h)- I don't now if it should be fixed in future release...

Besides listed, I copied the file update-alternatives (can be obtained from 
http://snake-os.googlecode.com/svn/trunk/apps/opkg/utils/) to /opt/bin/
-it is necessary for normal installation (executing postinstall scripts) of 
some packages (e.g. bzip2).

After Updating the list of available packages:
#opkg-cl update -t /opt/tmp
I installed pyLoad from ipk-file: all dependencies resolved automatically 
(exept tesseract as I wrote before). The only point why I installed it via 
command prompt was a temporary directory definition with option "-t /opt/tmp", 
else wget unable to download packages due to free space absence.

As for the idea behind installing into /opt/...I wrote before, I'm novice in 
Linux (so forgive me please if I ask stupid questions)... but is it possible to 
use the list of allowed architectures ("arch" options) in opkg.conf in order to 
source packages from a foreign, but compatible (and only compatible) target?

Now about pyLoad.
Copying large file off the device through the web interface is not recommended 
due to high CPU load, that stated on the "Downloads" tab of pyLoad's 
web-interface (at least in version 0.4.3), so that is not a big issue.
As for my experience, I use autoinstalled Python 2.5.5 
(python25_2.5.5-2_arm.ipk) from Optware's unstable for gumstix1151 (Python 2.6 
in same repository is unusable due to absence there py26-curl). 
Error obtained after start pyLoadCore (python2.5: can't resolve symbol 
'dbm_firstkey') resolved by renaming /opt/lib/python2.5/lib-dynload/dbm.so to 
xdbm.so.
After that:
1. old versions of pyLoad (older 0.4.5) with Django-based web-interface works 
well except ascii encode error for downloads from FTP-hosts with national (in 
my case- cyrillic) symbols in URL.
2. new versions of pyLoad (and 0.4.8 too) with built-in interface won't work 
properly since I can't add downloads by pressing "Add" button at "Queue" or 
"Collector" tabs.

P.S. I beg your pardon for my english...

Original comment by shevele...@mail.ru on 24 Nov 2011 at 7:34

GoogleCodeExporter commented 9 years ago
This feed also works, the packages are bit more up to date:
http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable/

I think /etc/init.d/opkg would be a good place to define the variables if you 
want the startup scripts to work. /etc/profile will only affect login shell 
(e.g. via ssh).

LDSO_RUNPATH enables the ability to hardcode library paths in binaries (ld's 
-rpath option).
Our uclibc supports adding search paths via /etc/ld.so.conf, but that requires 
the ldconfig program which isn't in the system. I guess it could be added to 
the optware installation.

I was wondering already where update-alternatives comes from, thanks!

Adding "option tmp_dir /opt/tmp/" to opkg.conf also works for the temp 
directory.

I'm no opkg expert either. Seems like the arch is usually set to "arm" which 
isn't of much use for determining if a package will work.

On the mailinglist it was suggested to link /opt/ to /opt/opt/ to make these 
packages play well with ours.
ln -s /opt /opt/opt 
or
mkdir /opt/opt; mount --bind /opt/ /opt/opt

It's a kludge but it works for now.

For some reason pyload doesn't run with the python from that feed anymore. I 
had it running once.. not sure what broke.
I'll see if I can package up my python build (or at least the modules needed 
for pyload).

Original comment by stefansc...@googlemail.com on 25 Nov 2011 at 11:32

GoogleCodeExporter commented 9 years ago
Thank you very much for a good news!
The feed you found is perfect! It's really up-to-date and looks like have 
everyting for full-functional pyLoad installation (and not only)! Binaries 
there compiled against uClibc too, since used "/lib/ld-uClibc.so.0" as 
interpreter... BTW, for early check if some packages compatible with our box 
the 7-Zip can be used (look how in attached file- I use 9.17 beta under 
WindowsXP)- hope that helps somebody in future...

I found some info at http://forum.pyload.org/viewtopic.php?f=9&t=958 : as I 
understand, pyLoad's built-in web-interface problem exist due to MS Internet 
Explorer older 9.0 incompatible with MooTools, used in pyLoad's 0.4.5-0.4.8 
Java scripting. After using Google Chrome I found web-interface and other parts 
of installed http://download.pyload.org/pyload-v0.4.8-noarch.ipk working great 
8-)! The issue persist in IE7 and IE8 with properly installed latest Java; is 
IE9 really free from that I'm not checking yet.

Little bit later I'm gonna reinstall all packages from new feed and report the 
result.

Original comment by shevele...@mail.ru on 26 Nov 2011 at 6:35

Attachments:

GoogleCodeExporter commented 9 years ago
Here is the report I've been promised.
Using a "new" packages feed (dns323 optware) I've tried:
 1. to update packages with "opkg-cl upgrade" from unstable;
 2. to completely reinstall all packages from "new" unstable;
 3. to install packages from "new" stable after overall NS-K330 reset (with firmware reflashing).
In all cases installation finished without errors, but python 2.5 won't work 
(look at the pyload's run errors in attached log.txt). That can happend due to 
misconfiguration of python while compiling or (most likely) because of CPU 
different in our box and in dns323.
At now I have software, installed in a next sequence (with opkg configured to 
use optware gumstix1151 unstable feed):
 1. tesseract-ocr and tesseract-ocr-lang-eng v2.03 from dns323 unstable (manual install)
 2. pyLoad v0.4.8 installed out of http://download.pyload.org/pyload-v0.4.8-noarch.ipk (manual install)
 3. transmission 2.42 from dns323 unstable (manual install)
where "manual install" means installing via command line manually downloaded to 
the box packages with dependencies, autoresolved using gumstix1151 unstable 
feed.
Installed from ipk-file pyLoad v0.4.8 still have some issues with web-interface 
(even in Google Chrome), that's why later I replace it manually to "current 
default" pyLoad revision cd0ebebcc700 obtained from 
https://bitbucket.org/spoob/pyload/get/default.tar.gz.
Transmission and pyLoad works great, except captcha recognition- I'm gona deal 
with int now...
In summary I would note: using of traditional for optionware approaches is 
highly wanted in the next SnakeOS release. In future it will enable us to 
collaborate with optionware's society in packages development.

P.S. I beg your pardon for my english again...

Original comment by shevele...@mail.ru on 28 Nov 2011 at 7:52

Attachments:

GoogleCodeExporter commented 9 years ago
Yeah, I'm getting the same thing with the dns323 packages now. Python must have 
been picking up the *.pyc files from the previous install when it initially 
worked.

Since the optware repo already holds packages for all kinds of platforms, they 
might be open to host packages for ours too. I'll have to look into how those 
feeds are managed.

Original comment by stefansc...@googlemail.com on 1 Dec 2011 at 10:06

GoogleCodeExporter commented 9 years ago
Tested it out, runs really great.
Installed mc, nano, python27. No problems yet.

a simple install script could be usefull :-)

Original comment by mkhom...@googlemail.com on 4 Jan 2012 at 11:54

GoogleCodeExporter commented 9 years ago
I want to write a simple installer script and that is what runs for me:

SSH to snake
1. rm /etc/opkg/opkg.conf
2. echo "
#================opkg.conf===============
#destination of install
dest root /
#source of packages 
src/gz optware_unst 
http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable/
#download cache directory (to make sure that opkg upgrade 
#does notbreak system because of an unstable connection) option
cache /opt/cache 
#============================== ">> /etc/opkg/opkg.conf

3. save config
4. reboot
5. activate opkg service on sda1

connect via ssh
6. PATH=/opt/bin:/usr/bin:/usr/sbin:/bin:/sbin
7. export PATH
8. LD_LIBRARY_PATH=/opt/lib
9. export LD_LIBRARY_PATH
10.mkdir /opt/tmp
11.opkg-cl update -t /opt/tmp
12.opkg-cl install python27 -t /opt/tmp
13.python !!! Now I had python shell.

how to make hanges autorun and path variable persistent?
whats about the PATH variable?
are there better ways or errors?

Original comment by mkhom...@googlemail.com on 6 Jan 2012 at 10:19

GoogleCodeExporter commented 9 years ago
I have been trying to get   Ipkg opt ware support still I get many errors: 

# opkg-cl install mt-daapd
Installing mt-daapd (0.2.4.2-2) to root...
Downloading 
http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable//mt-daapd_0.2.4.
2-2_arm.ipk.
Installing gdbm (1.8.3-4) to root...
Downloading 
http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable//gdbm_1.8.3-4_ar
m.ipk.
Installing libid3tag (0.15.1b-1) to root...
Downloading 
http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable//libid3tag_0.15.
1b-1_arm.ipk.
Installing zlib (1.2.5-1) to root...
Downloading 
http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable//zlib_1.2.5-1_ar
m.ipk.
Configuring gdbm.
Configuring zlib.
Configuring libid3tag.
Configuring mt-daapd.

To complete this installation, make any necessary changes
to the config file in  /opt/etc/mt-daapd/mt-daapd.conf, and
start the daemon by running /opt/etc/init.d/S60mt-daapd

Collected errors:
 * opkg_conf_parse_file: /etc/opkg/opkg.conf:9: Ignoring invalid line: `cache /opt/cache '
 * extract_archive: Cannot create symlink from ./opt/lib/libgdbm.so to 'libgdbm.so.3.0.0': Operation not permitted.
 * extract_archive: Cannot create symlink from ./opt/lib/libgdbm.so.3 to 'libgdbm.so.3.0.0': Operation not permitted.
 * extract_archive: Cannot create symlink from ./opt/lib/libgdbm_compat.so to 'libgdbm_compat.so.3.0.0': Operation not permitted.
 * extract_archive: Cannot create symlink from ./opt/lib/libgdbm_compat.so.3 to 'libgdbm_compat.so.3.0.0': Operation not permitted.
 * extract_archive: Cannot create symlink from ./opt/lib/libid3tag.so to 'libid3tag.so.0.3.0': Operation not permitted.
 * extract_archive: Cannot create symlink from ./opt/lib/libid3tag.so.0 to 'libid3tag.so.0.3.0': Operation not permitted.
 * extract_archive: Cannot create symlink from ./opt/lib/libz.so to 'libz.so.1.2.5': Operation not permitted.
 * extract_archive: Cannot create symlink from ./opt/lib/libz.so.1 to 'libz.so.1.2.5': Operation not permitted.

any idea... why this is happening?? after a fresh firmware flash I did:

SSH to snake
1. rm /etc/opkg/opkg.conf
2. echo "
#================opkg.conf===============
#destination of install
dest root /
#source of packages 
src/gz optware_unst 
http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable/
#download cache directory (to make sure that opkg upgrade 
#does notbreak system because of an unstable connection) option
cache /opt/cache 
#============================== ">> /etc/opkg/opkg.conf

3. save config
4. reboot
5. activate opkg service on sda1

connect via ssh
6. PATH=/opt/bin:/usr/bin:/usr/sbin:/bin:/sbin
7. export PATH
8. LD_LIBRARY_PATH=/opt/lib
9. export LD_LIBRARY_PATH
10.mkdir /opt/tmp
11.opkg-cl update -t /opt/tmp

and then I tried to install the mt-daapd package....

Original comment by alez...@gmail.com on 25 Feb 2012 at 7:11

GoogleCodeExporter commented 9 years ago
Seems to be my Error:

Please try this!

SSH to snake
1. rm /etc/opkg/opkg.conf
2. echo "
#================opkg.conf===============
#destination of install
dest root /
#source of packages 
src/gz optware_unst 
http://ipkg.nslu2-linux.org/feeds/optware/dns323/cross/unstable/
#download cache directory (to make sure that opkg upgrade 
#does not break system because of an unstable connection)
option cache /opt/cache
#============================== ">> /etc/opkg/opkg.conf

3. save config
4. reboot
5. activate opkg service on sda1

connect via ssh
6. PATH=/opt/bin:/usr/bin:/usr/sbin:/bin:/sbin
7. export PATH
8. LD_LIBRARY_PATH=/opt/lib
9. export LD_LIBRARY_PATH
10.mkdir /opt/tmp
11.mkdir /opt/cache
12.opkg-cl update -t /opt/tmp
13.opkg-cl install python27 -t /opt/tmp
14.python !!! Now I had python shell.

Original comment by mkhom...@googlemail.com on 5 Mar 2012 at 9:22

GoogleCodeExporter commented 9 years ago
I had a problem with /opt/bin/update-alternatives, chmodded it to 777 then it 
ran!

Original comment by mkhom...@googlemail.com on 5 Mar 2012 at 1:39