LURE
-The user repo missing from most Linux distros
-Why should I use it?
-How does it work?
-LURE
+The community repository missing from your Linux distro
Installation
-LURE can easily be installed by running its install script:
-What does LURE do?
+LURE allows you to:
+Install LURE
++ Paste this into your Linux terminal and the install script will set everything up for you +
+
- It's also available on the AUR as linux-user-repository-bin
+ linux-user-repository-bin
+
and distro packages are provided at the
latest Gitea release.
Examples
- - -About
+Why does LURE exist?
++ LURE was created because packaging software for multiple Linux distros can be difficult and + error-prone, and installing those packages can be a nightmare for users unless they're available + in their distro's official repositories. +
++ Take Discord for example. It only provides a deb file and a tar.gz file, and it's not available + in most official repositories. That means users of RPM distros have to manually install discord + using the tarball or rely on community-maintained repoositories that don't always have + up-to-date versions of Discord. That's also made worse by the fact that Discord refuses to run + if there's a newer version available. +
+
+ LURE fixes that by always providing the most up to date version of Discord. That means all that
+ RPM users have to do is run lure in discord
and LURE will get the tarball and
+ automatically build an RPM package out of it. Then if there's a newer version of Discord
+ available, users can just run lure up
and LURE will automatically download the updated
+ version of Discord and install it. This also helps users of deb distros because it means they don't
+ have to manually download packages for software like Discord.
+
How does LURE work?
++ Similar to Arch Linux's AUR, LURE has a repository of shell scripts that tell it how to build a + package. When you run a LURE command, it updates its repository and interprets the shell script + for the package you want to install using its built-in bash implementation. Then, it uses the + code inside the script to build a file structure to be included in the final package. It detects + which distro you're running, resolves dependencies, detects which package manager you have and + which package format it uses, builds metadata for the package from the information in the shell + script, builds the final package, and then runs the install command for your package manager to + install it. +
+How does LURE keep its packages up to date?
+
+ LURE can automatically update its packages using a bot called
+ lure-updater. It accepts plugins
+ that detect when software is updated upstream and update the LURE package accordingly. The
+ plugins that are currently running in my instance of the bot can be found in my
+ updater-plugins repo. The
+ discord-bin
package, for example, checks Discord's API every hour to see if they've
+ released an updated version, and if they have, it pushes an update to LURE's repo.
+
How do I add my own package to LURE?
++ LURE provides + + comprehensive documentation + for packagers. If you need help with anything, feel free to ask on LURE's subreddit, which you + can find in the footer of this site. If you find a bug or a missing feature, please open an issue + on LURE's git repo. +
+Can I use and modify LURE's icons?
++ LURE's icons are available on the icons page of this site. They're licensed + under CC-BY-NC-SA 4.0, which means you're free to share, modify, and use the icons for non-commercial + purposes as long as you give appropriate credit and indicate any changes made to the original icons. +
+FAQ
-Why isn't my distro supported?
-- To support a distribution, LURE must be able to communicate with its package manager and create packages for it. - Communicating with the package manager is relatively straightforward, as LURE simply needs to be provided with the necessary - commands. However, the package formats are more complex. LURE uses nFPM to - handle package formats, and nFPM currently supports only deb, rpm, apk, and archlinux package formats. When developing LURE, - support for archlinux packages was not available in nFPM, so I added it through a pull request. Despite the simplicity of the - archlinux package format, implementing support required over 1,000 lines of code. As a result, supporting a distribution with - a different package format, such as xbps for Void Linux, is very complex and time-consuming. -
-Why use LURE instead of Flatpak, Snap, or AppImage?
-- LURE is not intended to address the same issues as Flatpak, Snap, and AppImage. These are containerized package formats that enable - the creation of a single package that can be used on all distributions. This cross-platform package contains the program and everything - else necessary for it to run, and it relies on containers to achieve this compatibility. However, containers can sometimes cause programs - to start slowly, fail to adhere to system settings, or be unable to access certain parts of the system. If you need most programs to - function consistently or you are using an older distribution with outdated packages, containerized formats may be the best choice. In contrast, - LURE does not use containers. It builds the program from source and installs it automatically. It also does not have its own package format. - Instead, it uses the same format as the distribution it is running on, so LURE packages behave like the distribution's native packages. - This means that unlike Snap and Flatpak, LURE is not a package manager; it simply uses the distribution's package manager, allowing you to - manage the packages installed through LURE even when LURE is not installed. -
-- However, LURE also has some drawbacks. Since it builds programs from source, certain packages, particularly git packages that - retrieve the latest code from git, may not work on older distributions or distributions like Debian that have outdated packages. - Please consider your specific needs and whether these downsides are acceptable before using LURE. Additionally, similar to the AUR, - all packages are user-submitted and not vetted, so while it is unlikely, they may contain malicious code. It is the responsibility - of the user to review the build script to ensure this is not the case. If you come across a malicious package, please report it by - opening an issue on the git repository containing it. -
-How does LURE handle dependencies across distros?
-- LURE manages dependencies across distributions by offering distro overrides, in which package maintainers can specify different - variables and functions for each distribution. The most specific override is given precedence. After the overrides are resolved, - LURE compares the resulting list of dependencies with the packages installed on the system and filters out any that are already - installed. For the remaining dependencies, LURE checks its own repositories to see if each package is available there. If it is, - LURE installs it from its repositories. If the package is not found in any repository, LURE passes the dependency on to the package - manager, which handles dependency resolution and installation. -
-How can one test a LURE package to ensure it works?
-- Docker is recommended for testing LURE packages on different distros. It provides a clean image of any distribution, which is very - useful for testing as it can help catch issues that might not manifest themselves on your system. Eventually, an automated - docker-based testing tool is planned, but in the meantime, this will need to be done manually for each distribution you're planning - to support. To find package names for each distribution, you can use repology.org and - pkgs.org. These websites maintain comprehensive databases of package repositories for various distributions. -
-Can I use and modify LURE's icons?
-- LURE's icons are available on the icons page of this website and are licensed under CC-BY-NC-SA 4.0. This means that - you are free to share, modify, and use the icons for non-commercial purposes as long as you give appropriate credit and indicate any changes - made to the original icons. -
-How do I add my own package to LURE?
-- To add your own package, please refer to the package documentation provided by LURE. -
-Build Script
-{$page.params.repo} / {$page.params.name}
-Build Script
+{$page.params.repo} / {$page.params.name}
+