[AppStream] Console based multi-distro installer?

Matthias Klumpp matthias at tenstral.net
Tue Jan 28 11:05:48 UTC 2020


Hi!

Am Mo., 27. Jan. 2020 um 18:30 Uhr schrieb Sławomir Lach <slawek at lach.art.pl>:
>
> I don't known is appstream already provided this, but...
> Because appstream introduces application or other resources general names,
> it's possible to use it to install thinks by single name on multiple systems.
> Of couse, there's should exist graphical tool, like discover or gnome-
> software, but I can't find console based.

Easy, at least as long as you only care for stuff in the package
repositories of a Linux distribution:
`appstreamcli install <cid>`, e.g. `appstreamcli install
org.videolan.vlc`. This will work on any Linux distribution that
either has Debian's APT available or PackageKit also installed.

> Also, we could provide maintainer/author path, so user could install exactly
> version they need.
> For example:
> <ids>
> <fork><author>Sławomir Lach</author><id>org.slawek.pl.my_packages.evolution</
> id></fork>
> <fork><author>Lachu</author><id>org.lachu.pl.my_packages.evolution</id></fork>
> <root><author>Gnoem Team</author><id>org.gnome.apps.evolution</id></root>
> </ids>

Each software has its own unique ID. If you fork something, you will
have to give it a new ID. E.g. for a Firefox fork, you couldn't requse
the org.mozilla.Firefox ID, but instead you'd have to use your own,
new ID, like com.github.DarthVader.Firefox.

> By using this information, user (independend of distribution) could install my
> version of evolution, which are fork of Lachu's evolution fork by:
> appstream-installer install ( org.slawek.pl.my_packages.evolution
> org.lachu.my_packages.evolution org.gnome.apps.evolution ) .
> Maybe it's possible to made it simpler? Why not type only:
> appstream-installer install org.slawek.pl.my_packages.evolution

See the appstreamcli command above ;-)

For anything you need that isn't in the distribution's repositories,
Flatpak is the way to go. Flatpak also uses AppStream IDs to identify
applications.

> Of course, appstream-installer will have many backends.

That's PackageKit, and appstreamcli calls into that when available:
https://github.com/hughsie/PackageKit

> Why this solution? It's very onpleasant to see something like this on sides:
> „To install wine, type apt install wine”. Appstream also allow to describe
> component, which adds new repo, so using this utility to add a new repo should
> also be possible.

You can install Wine on any distribution that has AppStream metadata
available using `appstreamcli install org.winehq.wine`. Of course, the
distro needs to have Wine available in their repositories for this to
work.

Cheers,
    Matthias

---
I welcome VSRE emails. See http://vsre.info/


More information about the AppStream mailing list