Package servers in ezupdate
This page is for administrators who want an installed site to see the packages of more than one .ezpkg package
server: the 7x server, a server of their own, an agency's. ezupdate keeps that list on its Package servers page
and on the command line. It is a list for browsing and fetching, and from Exponential 6.0.15 on the setup wizard, the
kickstarter and exp:install read it too, after the server of package.ini.
Contents
- Open the page
- The built-in server
- Add a server
- Remove a server
- From the command line
- What the list is used for
Open the page
Setup > Updates and packages, tab Package servers (/update/servers).

The page has two lists:
| Section | Holds | Kept in |
|---|---|---|
| Composer servers | where Composer looks for code packages: the repositories of composer.json | composer.json |
| Exponential package servers | "Servers of .ezpkg packages (site designs, content classes, demo content), in the index.xml format the setup wizard reads." | settings/override/ezupdate.ini.append.php |
This page is about the second list. The page needs the policy update/manage (extension/ezupdate/modules/update/module.php);
ezupdate is switched on with ActiveExtensions[]=ezupdate (ezupdate: updates and packages in the admin).
The built-in server
The first row is always the server the setup wizard uses, named exponential and marked built in (title
package.ini). ezupdate resolves it the way the wizard does (eZUpdatePackageServers::builtinIndexURL()):
package.ini [RepositorySettings] RemotePackagesIndexURL, or, when that is empty, RemotePackagesIndexURLBase with
x.y/x.y.z appended (6.0/6.0.15; before ezupdate 1.1.24 it appended 6.0/6.0.15stable, a folder the package
server does not have). On a default 6.0.15 installation that is
https://exponential.packages.exponential.earth/exponential/6.0/6.0.15.
It cannot be removed here and its name is reserved: change it in package.ini (an override) if it must change
(Pointing a site at your package server).
Add a server
Under Add package server, give a Name and an Address and submit.
| Field | Rule (eZUpdatePackageServers::validate()) | Message on failure |
|---|---|---|
| Name | letters, digits, ., -, _, starting with a letter or digit, at most 64 characters | "The name may use letters, digits, dot, dash and underscore." |
| Name | not exponential | "This name is reserved for the server in package.ini." |
| Address | an https:// URL | "The address must be an https:// URL." |
The address is the folder that holds index.xml, without /index.xml and without a trailing slash (one is removed),
for example https://packages.example.com/exponential/6.0/6.0.15. Adding a name that exists replaces its address.
On success the page says "The package server was added."
The server is written to the override file:
[PackageServerSettings]
Servers[acme]=https://packages.example.com/exponential/6.0/6.0.15
*/ ?>If the file cannot be written, the page says "Could not write settings/override/ezupdate.ini.append.php." The file is read directly, without the INI cache, so the page and the command line always show the same list.
Remove a server
Remove on a row asks "Remove this package server?" and deletes its line from the override file ("The package server was removed."). Packages already fetched from it stay in the local repository.
From the command line
php extension/ezupdate/bin/php/ezupdate.php servers
php extension/ezupdate/bin/php/ezupdate.php server-add ezpkg acme https://packages.example.com/exponential/6.0/6.0.15
php extension/ezupdate/bin/php/ezupdate.php server-remove ezpkg acmeservers lists both kinds; the built-in one is shown with (package.ini). The same rules apply as on the page
(extension/ezupdate/doc/COMMAND_LINE.md).
What the list is used for
| Used by | For |
|---|---|
ezupdate's Packages page and packages command | listing a server's packages |
ezupdate's Fetch and fetch command | downloading one into the local repository |
the setup wizard, the kickstarter, exp:install | from 6.0.15 on: further servers, read after package.ini's ([RepositorySettings] RemotePackagesIndexSources[]=ezupdate.ini;PackageServerSettings;Servers, the default). Before 6.0.15 they read only package.ini [RepositorySettings] |
So adding a server here lets administrators fetch its packages into an installed site, and the setup tools of the same
installation offer its site packages next to those of the package.ini server (a package both list is taken from the
package.ini server). For a new installation, which has no ezupdate list yet,
point package.ini at the server (RemotePackagesIndexURL, or AdditionalRemotePackagesIndexURLs[] to keep the
7x server too), or submit the packages to the 7x server
(Contribute your site package).
Note
With site.ini [ConfigurationSettings] ManagedByDeployment=enabled, settings files are not written from a web
request, so adding or removing a server in the browser fails; keep the list in the deployment instead.
Related pages
- Packages in the administration
- Fetching packages with ezupdate
- ezupdate: updates and packages in the admin
- Package server settings
- Running your own package server
- Site packages: start here
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.