|
|
1 | NAME |
|
|
2 | Urlader - installer-less single-file independent executables |
|
|
3 | |
|
|
4 | SYNOPSIS |
|
|
5 | use Urlader; |
|
|
6 | |
|
|
7 | DESCRIPTION |
|
|
8 | Urlader (that's german for "bootloader" btw.) was created out of |
|
|
9 | frustration over PAR again not working, again not being flexible enough |
|
|
10 | for simple things, and again causing mysterious missing files issues on |
|
|
11 | various platforms. |
|
|
12 | |
|
|
13 | That doesn't mean this module replaces PAR, in fact, you should stay |
|
|
14 | with it for many reasons, user-friendlyness is one of them. |
|
|
15 | |
|
|
16 | However, if you want to make single-file distributions out of your perl |
|
|
17 | programs (or python, or C or whatever), and you are prepared to fiddle a |
|
|
18 | LOT, this module might provide a tiny step towards your goal. Well, if |
|
|
19 | it ever gets finished. |
|
|
20 | |
|
|
21 | Also, *nothing in this module is considered very stable yet*, and it's |
|
|
22 | far from feature-complete. |
|
|
23 | |
|
|
24 | Having said all that, Urlader basically provides three services: |
|
|
25 | |
|
|
26 | A simple archiver that packs a directory tree into a single file. |
|
|
27 | A small C program that works on windows and unix, which unpacks an |
|
|
28 | attached archive and runs a program. |
|
|
29 | A perl module support module (*this one*), that can be used to query the |
|
|
30 | runtime environment, find out where to install updates and so on. |
|
|
31 | |
|
|
32 | EXAMPLE |
|
|
33 | How can it be used to provide single-file executables? |
|
|
34 | |
|
|
35 | So simple, create a directory with everything that's needed, e.g.: |
|
|
36 | |
|
|
37 | # find bintree |
|
|
38 | bintree/perl |
|
|
39 | bintree/libperl.so.5.10 |
|
|
40 | bintree/run |
|
|
41 | bintree/pm/Guard.pm |
|
|
42 | bintree/pm/auto/Guard/Guard.so |
|
|
43 | |
|
|
44 | # cat bintree/run |
|
|
45 | @INC = ("pm", "."); # "." works around buggy AutoLoader |
|
|
46 | use Guard; |
|
|
47 | guard { warn "hello, world!\n" }; # just to show off |
|
|
48 | exit 0; # tell the urlader that everything was fine |
|
|
49 | |
|
|
50 | Then pack it: |
|
|
51 | |
|
|
52 | # wget http://urlader.schmorp.de/prebuilt/1.0/linux-x86 |
|
|
53 | # urlader-util --urlader linux-x86 --pack myprog ver1_000 bintree \ |
|
|
54 | LD_LIBRARY_PATH=. ./perl run \ |
|
|
55 | >myprog |
|
|
56 | # chmod 755 myprog |
|
|
57 | |
|
|
58 | CONCEPTS |
|
|
59 | urlader |
|
|
60 | A small (hopefully) and relatively portable (hopefully) binary that |
|
|
61 | is prepended to a pack file to make it executable. |
|
|
62 | |
|
|
63 | You can build it yourself from sources (see prebuilt/Makefile in the |
|
|
64 | distribution) or use one of the precompiled ones at: |
|
|
65 | |
|
|
66 | http://urlader.schmorp.de/prebuilt/1.0/ |
|
|
67 | |
|
|
68 | The README there has further information on the binaries provided. |
|
|
69 | |
|
|
70 | exe_id |
|
|
71 | A string that uniquely identifies your program - all branches of it. |
|
|
72 | It must consist of the characters "A-Za-z0-9_-" only and should be a |
|
|
73 | valid directory name on all systems you want to deploy on. |
|
|
74 | |
|
|
75 | exe_ver |
|
|
76 | A string the uniquely identifies the contents of the archive, i.e. |
|
|
77 | the version. It has the same restrictions as the "exe_id", and |
|
|
78 | should be fixed-length, as Urlader assumes lexicographically higher |
|
|
79 | versions are newer, and thus preferable. |
|
|
80 | |
|
|
81 | pack file (archive) |
|
|
82 | This contains the "exe_id", the "exe_ver", a number of environment |
|
|
83 | variable assignments, the program name to execute, the initial |
|
|
84 | arguments it receives, and finally, a list of files (with contents |
|
|
85 | :) and directories. |
|
|
86 | |
|
|
87 | override |
|
|
88 | |
|
|
89 | FUNCTIONS AND VARIABLES IN THIS MODULE |
|
|
90 | AUTHOR |
|
|
91 | Marc Lehmann <schmorp@schmorp.de> |
|
|
92 | http://home.schmorp.de/ |
|
|
93 | |