Sign in Join
Wiki copytemporary

Online Package Manager: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## About
22
3-Online Package Manager(OPM) is a tool that automates the process of installing, upgrading, configuring Lazarus packages. The packages are stored in the main repository(see repository column) as zip files, along with a [[JSON]] file. The JSON contains all necessary information about the packages. On request the packages are downloaded/extracted/compiled/installed into the IDE. If available, it's also possible to update a previously installed package from the maintainer webpage(see update column). There's also a web version of the Lazarus Packages Repository available here: <http://packages.lazarus-ide.org/>.
3+Online Package Manager(OPM) is a tool that automates the process of installing, upgrading, configuring Lazarus packages. The packages are stored in the main repository(see repository column) as zip files, along with a [[JSON]] file. The JSON contains all necessary information about the packages. On request the packages are downloaded/extracted/compiled/installed into the IDE. If available, it's also possible to update a previously installed package from the maintainer webpage(see update column). There's also a web version of the Lazarus Packages Repository available here: <http://packages.lazarus-ide.org/>.
44
55**Please note:**
66
7-OPM reads the package description from the lpk file. I can understand that the description of many packages is very minimalistic or even non-existent, but there is nothing I can do about it. It's not OK to modify package description or any other property for that matter, without the consent of the package developer. More over testing each and every package, then write a detailed description is not realistic.
7+OPM reads the package description from the lpk file. I can understand that the description of many packages is very minimalistic or even non-existent, but there is nothing I can do about it. It's not OK to modify package description or any other property for that matter, without the consent of the package developer. More over testing each and every package, then write a detailed description is not realistic.
88
99### Screenshot
1010
11-![](/wiki-images/6/6e/OPM6.png)
11+[![OPM6.png](/wiki-images/6/6e/OPM6.png)](</File:OPM6.png>)
1212
13-![](/wiki-images/b/b7/OPM7.png)
13+[![OPM7.png](/wiki-images/b/b7/OPM7.png)](</File:OPM7.png>)
1414
1515### License
1616
17-[GNU General Public License](https://opensource.org/licenses/gpl-license)
17+[GNU General Public License](<https://opensource.org/licenses/gpl-license>)
1818
1919### Download
2020
21-Online package manager is part of Lazarus sources, in directory (\$LazarusDir)/components/onlinepackagemanager.
21+Online package manager is part of Lazarus sources, in directory ($LazarusDir)/components/onlinepackagemanager.
2222
2323### System Requirements / Dependencies
2424
25-- FPC 3.0.0 or newer
26-- Lazarus 1.8 or newer
27-- You can download an older version for the 1.6 series: [OPM 1.6](https://drive.google.com/open?id=0B9Me_c5onmWobVZOdVlXSlZRRmc)
28-- These versions were available at the time of writing this update.
29-- Tested on the following widgeset: win32/64, gtk2, carbon, qt(win)
30-- The package manager does not depend on any external package
25+ * FPC 3.0.0 or newer
26+ * Lazarus 1.8 or newer
27+ * You can download an older version for the 1.6 series: [OPM 1.6](<https://drive.google.com/open?id=0B9Me_c5onmWobVZOdVlXSlZRRmc>)
28+ * These versions were available at the time of writing this update.
29+ * Tested on the following widgeset: win32/64, gtk2, carbon, qt(win)
30+ * The package manager does not depend on any external package
3131
3232### Installation
3333
34-In Lazarus "Install/Uninstall Packages" window select "OnlinePackageManager" from the available packages, click "Install selection" and then rebuild the IDE.
34+In Lazarus "Install/Uninstall Packages" window select "OnlinePackageManager" from the available packages, click "Install selection" and then rebuild the IDE.
3535
3636### Support page
3737
3838<http://forum.lazarus.freepascal.org/index.php/topic,34297.0.html>
3939
4040## Using the package manager
4141
4242### Getting started
4343
44-Go to Lazarus Menu--\>Package--\>Online Package Manager(Shortcut key: `Ctrl`+`Alt`+`Shift`+`O`). On startup the package manager will automatically download a list with available repository packages, the list is displayed in a tree(see screenshots above).
44+Go to Lazarus Menu-->Package-->Online Package Manager(Shortcut key: `Ctrl`+`Alt`+`⇧ Shift`+`O`). On startup the package manager will automatically download a list with available repository packages, the list is displayed in a tree(see screenshots above).
4545
4646### Filter the tree/Locate a package
4747
48-![](/wiki-images/b/b3/OPM3.png)
48+[![OPM3.png](/wiki-images/b/b3/OPM3.png)](</File:OPM3.png>)
4949
50-You can filter the package list by:
50+You can filter the package list by:
5151
52-- Packagename
53-- Package file(.lpk)--\>a repository package can contain multiple lpk files
54-- Package category
55-- Package status
56-- Version
57-- Description
58-- Author
59-- Lazarus compatibility
60-- FPC compatibility
61-- Supported widget sets
62-- Packagetype
63-- Dependencies
64-- License
52+ * Packagename
53+ * Package file(.lpk)-->a repository package can contain multiple lpk files
54+ * Package category
55+ * Package status
56+ * Version
57+ * Description
58+ * Author
59+ * Lazarus compatibility
60+ * FPC compatibility
61+ * Supported widget sets
62+ * Packagetype
63+ * Dependencies
64+ * License
6565
6666### Operation with packages
6767
68-![](/wiki-images/a/a5/OPM4.png)
68+[![OPM4.png](/wiki-images/a/a5/OPM4.png)](</File:OPM4.png>)
6969
7070#### Refresh package list
7171
72-Press the "Refresh" button to update the package list.
72+Press the "Refresh" button to update the package list.
7373
7474#### Download package
7575
76-Check one or more package then press the "Download" button. This will download/extract the packages to a preselected directory. Nothing gets installed. Useful when you want to install the packages manually or study their sources without installing.
76+Check one or more package then press the "Download" button. This will download/extract the packages to a preselected directory. Nothing gets installed. Useful when you want to install the packages manually or study their sources without installing.
7777
7878#### Install a package
7979
80-Check one or more package then press the "Install" button. The package manager will automatically download/extract/compile/install the selected packages(from the main repository), then rebuild the IDE if necessary(Designtime/Designtime_and_runtime packages). Confirm the rebuild by clicking the "Yes" button. Please note: The compile feature is only available in Lazarus 1.7+.
80+Check one or more package then press the "Install" button. The package manager will automatically download/extract/compile/install the selected packages(from the main repository), then rebuild the IDE if necessary(Designtime/Designtime_and_runtime packages). Confirm the rebuild by clicking the "Yes" button. Please note: The compile feature is only available in Lazarus 1.7+.
8181
8282#### Update a package
8383
84-Check one or more package then press the "Update" button. The package manager will update the selected packages from the maintainer's homepage(if available). The package must be installed first, a direct update although is possible, it's not allowed to prevent unresolved dependency error. **Please note:** downloading/installing packages from external link is not without a risk. Only update the package if you trust the package maintainer.
84+Check one or more package then press the "Update" button. The package manager will update the selected packages from the maintainer's homepage(if available). The package must be installed first, a direct update although is possible, it's not allowed to prevent unresolved dependency error. **Please note:** downloading/installing packages from external link is not without a risk. Only update the package if you trust the package maintainer.
8585
8686#### Difference between download/install/update
8787
88-Download/Install --\> Operations between you and the main repository.
88+Download/Install --> Operations between you and the main repository.
8989
90-Update --\> Operations between you and the package maintainers.
90+Update --> Operations between you and the package maintainers.
9191
92-![](/wiki-images/6/61/OPM10.png)
92+[![OPM10.png](/wiki-images/6/61/OPM10.png)](</File:OPM10.png>)
9393
94-Video link: [Difference between download/install/update](https://www.youtube.com/watch?v=wiN2GoCvgjc)
94+Video link: [Difference between download/install/update](<https://www.youtube.com/watch?v=wiN2GoCvgjc>)
9595
9696#### Cleanup local repository
9797
98-This operation will delete all non-installed packages/archives from the local repository. To cleanup the local repository press the "Cleanup" button.
98+This operation will delete all non-installed packages/archives from the local repository. To cleanup the local repository press the "Cleanup" button.
9999
100100#### Create
101101
102-*This section is for package maintainers. First you must go to Options--\>Profiles and select package maintainer.*
102+_This section is for package maintainers. First you must go to Options-- >Profiles and select package maintainer._
103103
104104##### Create repository package
105105
106-To create a repository package press "Create repository package" menu item, then:
106+To create a repository package press "Create repository package" menu item, then:
107107
108-- select the package main directory(package manager will recursively search for all package files inside the folder)
109-- select the repository package(root node)
110- - choose category(obligatory)
111- - type display name(optional)
112- - home page(optional)
113- - update link(optional, for more details see "Create JSON for updates"[1](http://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_updates)" below)
114- - create JSON for updates(optional), has the same functionality as "Create JSON for updates"[2](http://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_updates)" dialog. It was also added here to speed up the process.
108+ * select the package main directory(package manager will recursively search for all package files inside the folder)
109+ * select the repository package(root node)
110+ * choose category(obligatory)
111+ * type display name(optional)
112+ * home page(optional)
113+ * update link(optional, for more details see "Create JSON for updates"[[1]](<http://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_updates>)" below)
114+ * create JSON for updates(optional), has the same functionality as "Create JSON for updates"[[2]](<http://wiki.freepascal.org/Online_Package_Manager#Create_JSON_for_updates>)" dialog. It was also added here to speed up the process.
115115
116-![](/wiki-images/6/6c/OPM15.png)
116+[![OPM15.png](/wiki-images/6/6c/OPM15.png)](</File:OPM15.png>)
117117
118-- check each package you wish to include, adjust package info if necessary(lazarus/fpc compatibility, supported widgetset, etc)
118+ * check each package you wish to include, adjust package info if necessary(lazarus/fpc compatibility, supported widgetset, etc)
119119
120-![](/wiki-images/6/6d/OPM16.png)
120+[![OPM16.png](/wiki-images/6/6d/OPM16.png)](</File:OPM16.png>)
121121
122-- press the create button, if all goes well you should get a zip and a json file. Upload somewhere the files and send the link to opm@lazarus-ide.org or
123-- press the submit button, the files are directly uploaded to a remote server.
122+ * press the create button, if all goes well you should get a zip and a json file. Upload somewhere the files and send the link to opm@lazarus-ide.org or
123+ * press the submit button, the files are directly uploaded to a remote server.
124124
125-Every package will be accepted after a short check(malware, license, etc). Multiple versions of the same package is also allowed.
125+Every package will be accepted after a short check(malware, license, etc). Multiple versions of the same package is also allowed.
126126
127127##### Create JSON for updates
128128
129-To allow the user to update the package directly form your webpage, follow this steps:
129+To allow the user to update the package directly from your webpage, follow this steps:
130130
131-- Make sure your package is already in the main repository(see previous section)
132-- You can download and use the [[OPM External Update json Editor|Online Package Manager External Update json Editor]]
133- - or via OnlinePackageManager:
131+ * Make sure your package is already in the main repository(see previous section)
132+ * You can download and use the [[OPM External Update json Editor|Online Package Manager External Update json Editor]]
133+ * or via OnlinePackageManager:
134134
135-- Check the package, press the "Create JSON for upates" menu item then create the JSON.
135+ * Check the package, press the "Create JSON for upates" menu item then create the JSON.
136136
137-![](/wiki-images/d/d1/OPM11.png)
137+[![OPM11.png](/wiki-images/d/d1/OPM11.png)](</File:OPM11.png>)
138138
139-- Edit the JSON, upload to your webpage, then send me the link.
139+ * Edit the JSON, upload to your webpage, then send me the link.
140140
141-The JSON will look like this:
141+The JSON will look like this:
142142
143-![](/wiki-images/0/09/OPM12.png)
143+[![OPM12.png](/wiki-images/0/09/OPM12.png)](</File:OPM12.png>)
144144
145-Editable items in the JSON:
145+Editable items in the JSON:
146146
147-**"DownloadZipURL"** --\> Link to your new, updated package
147+**"DownloadZipURL"** \--> Link to your new, updated package
148148
149-**"DisableInOPM"** --\> If you want to temporary disable your package, set this boolean to true. It's useful for maintenance, the package will be grayed out in the tree. The user cannot download/install/update the package.
149+**"DisableInOPM"** \--> If you want to temporary disable your package, set this boolean to true. It's useful for maintenance, the package will be grayed out in the tree. The user cannot download/install/update the package.
150150
151-**"Version"/"ForceNotify"/"InternalVersion"** --\> To trigger an update message on the users computer, you can either:
151+**"Version"/"ForceNotify"/"InternalVersion"** \--> To trigger an update message on the users computer, you can either:
152152
153-- Increase the **"Version"** number. Useful when you want to release a new version of the package.
154-- Set **"ForceNotify"** to true. Useful after a minor change in your source, that does not require a version change or in case of trunk version. To prevent continous error messages, **"ForceNotify"** must be used in combination with **"InternalVersion"**. After the user updates the package, OPM locally stores the **"InternalVersion"** value. If you want to trigger a new message, increase **"InternalVersion"** with one. If **"ForceNotify"** is true, **"Version"** is always ignored.
153+ * Increase the **"Version"** number. Useful when you want to release a new version of the package.
154+ * Set **"ForceNotify"** to true. Useful after a minor change in your source, that does not require a version change or in case of trunk version. To prevent continous error messages, **"ForceNotify"** must be used in combination with **"InternalVersion"**. After the user updates the package, OPM locally stores the **"InternalVersion"** value. If you want to trigger a new message, increase **"InternalVersion"** with one. If **"ForceNotify"** is true, **"Version"** is always ignored.
155155
156-The most common scenario is this:
156+The most common scenario is this:
157157
158-- Generate the JSON
159-- Modify **"DownloadZipURL"**
160-- Increase version number when necessary.
158+ * Generate the JSON
159+ * Modify **"DownloadZipURL"**
160+ * Increase version number when necessary.
161161
162-Please note: After you edited the JSON the changes are not immediately visible in the tree. Usually it takes 1-2 min. It also depends on the users setting(Options--\>General--\>Check for package updates).
162+Please note: After you edited the JSON the changes are not immediately visible in the tree. Usually it takes 1-2 min. It also depends on the users setting(Options-->General-->Check for package updates).
163163
164164#### Options
165165
166-To display the options dialog press the "Options" button.
166+To display the options dialog press the "Options" button.
167167
168168### Create a private repository
169169
170-In order to create a private repository please do the following:
170+In order to create a private repository please do the following:
171171
172-1\. First make sure profile "Package maintainer" is enabled in Options--\>Profiles, then open the private repository form(see screenshot below)
172+1\. First make sure profile "Package maintainer" is enabled in Options-->Profiles, then open the private repository form(see screenshot below)
173173
174-![](/wiki-images/b/b0/OPM17.png)
174+[![OPM17.png](/wiki-images/b/b0/OPM17.png)](</File:OPM17.png>)
175175
176-2\. Press the "Create" button. Enter repository Name, Address(optional), Description(optional). Save the repository to an empty folder
176+
177177
178-![](/wiki-images/c/c7/OPM18.png)
178+2\. Press the "Create" button. Enter repository Name, Address(optional), Description(optional). Save the repository to an empty folder
179179
180-- If filled, the repository address(in this case <http://localhost/packages/>) is automatically added to available repository list(Options form)
180+[![OPM18.png](/wiki-images/c/c7/OPM18.png)](</File:OPM18.png>)
181181
182-![](/wiki-images/8/8e/OPM19.png)
182+
183183
184-3\. Start to add/delete packages. You have two choices:
184+ * If filled, the repository address(in this case <http://localhost/packages/>) is automatically added to available repository list(Options form)
185185
186-a\. Create a new package via <http://wiki.freepascal.org/Online_Package_Manager#Create_repository_package>
186+[![OPM19.png](/wiki-images/8/8e/OPM19.png)](</File:OPM19.png>)
187187
188-b\. Add a previously saved package
188+
189189
190-![](/wiki-images/5/5b/OPM20.png)
190+3\. Start to add/delete packages. You have two choices:
191191
192-4.You can also open a previously saved repository. The last repository is automatically opened on startup.
192+a. Create a new package via <http://wiki.freepascal.org/Online_Package_Manager#Create_repository_package>
193193
194-5.Upload the files(packagelist.json, *.zip) to your local or remote server.
194+b. Add a previously saved package
195195
196-6.Make sure the server is running, the change "Remote repository" in Options--\>General
196+[![OPM20.png](/wiki-images/5/5b/OPM20.png)](</File:OPM20.png>)
197197
198-## see also
198+
199+4.You can also open a previously saved repository. The last repository is automatically opened on startup.
199200
200-- [OPM video about the install process](https://www.youtube.com/watch?v=IRJkyiOn3AA)
201+5.Upload the files(packagelist.json, *.zip) to your local or remote server.
201202
203+6.Make sure the server is running, the change "Remote repository" in Options-->General
204+
205+## See also
206+
207+ * [OPM video about the install process](<https://www.youtube.com/watch?v=IRJkyiOn3AA>)
208+ * [Support page on forum](<http://forum.lazarus.freepascal.org/index.php/topic,34297.0.html>)
209+
202210---
203-*From the Free Pascal wiki, page "Online Package Manager", as it stood on 2020-04-28 after a change by GetMem, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
211+*From the Free Pascal wiki, page "Online Package Manager", as the Internet Archive kept it on 2025-10-02, last changed on 2025-06-02. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history