Replace FAQ with About page
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
Elara 2023-08-09 21:04:58 -07:00
parent 48e228adad
commit 6e00419e2f
3 changed files with 113 additions and 103 deletions

View File

@ -0,0 +1,79 @@
<script>
import Header from '../header.svelte';
import Footer from '../footer.svelte';
</script>
<svelte:head>
<title>About | LURE Web</title>
<meta name="description" content="I" />
</svelte:head>
<Header />
<section class="container content">
<p class="title">About</p>
<hr />
<p class="subtitle">Why does LURE exist?</p>
<p>
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.
</p>
<p>
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.
</p>
<p>
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 <code>lure in discord</code> 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 <code>lure up</code> 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.
</p>
<hr />
<p class="subtitle">How does LURE work?</p>
<p>
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.
</p>
<hr />
<p class="subtitle">How does LURE keep its packages up to date?</p>
<p>
LURE can automatically update its packages using a bot called
<a href="https://gitea.elara.ws/Elara6331/lure-updater">lure-updater</a>. 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
<a href="https://gitea.elara.ws/Elara6331/updater-plugins">updater-plugins</a> repo. The
<code>discord-bin</code> 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.
</p>
<hr />
<p class="subtitle">How do I add my own package to LURE?</p>
<p>
LURE provides
<a href="https://github.com/Elara6331/lure/blob/master/docs/packages">
comprehensive documentation
</a> 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.
</p>
<hr />
<p class="subtitle">Can I use and modify LURE's icons?</p>
<p>
LURE's icons are available on the <a href="/icons">icons page</a> 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.
</p>
</section>
<Footer />

View File

@ -1,81 +0,0 @@
<script>
import Header from "../header.svelte";
import Footer from "../footer.svelte";
</script>
<svelte:head>
<title>FAQ | LURE Web</title>
<meta name="description" content="Frequently Asked Questions">
</svelte:head>
<Header/>
<div class="container">
<p class="title">FAQ</p>
<br>
<p class="subtitle" id='distro-support'>Why isn't my distro supported?</p>
<p>
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 <a href="https://github.com/goreleaser/nfpm">nFPM</a> 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.
</p>
<hr>
<p class="subtitle" id='flatpak-snap-appimage'>Why use LURE instead of Flatpak, Snap, or AppImage?</p>
<p>
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.
</p>
<br>
<p>
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.
</p>
<hr>
<p class="subtitle" id="handling-dependencies">How does LURE handle dependencies across distros?</p>
<p>
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.
</p>
<hr>
<p class="subtitle" id="testing">How can one test a LURE package to ensure it works?</p>
<p>
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 <a href="https://repology.org">repology.org</a> and
<a href="https://pkgs.org">pkgs.org</a>. These websites maintain comprehensive databases of package repositories for various distributions.
</p>
<hr>
<p class="subtitle" id="icons">Can I use and modify LURE's icons?</p>
<p>
LURE's icons are available on the <a href="/icons">icons page</a> 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.
</p>
<hr>
<p class="subtitle" id='adding-packages'>How do I add my own package to LURE?</p>
<p>
To add your own package, please refer to the <a href="https://github.com/Elara6331/lure/blob/master/docs/packages">package documentation</a> provided by LURE.
</p>
</div>
<Footer/>

View File

@ -1,30 +1,42 @@
<script>
import { page } from '$app/stores';
import { page } from '$app/stores';
import Icon from '@iconify/svelte';
import Icon from '@iconify/svelte';
function isActive(path) {
return $page.route.id == path ? 'is-active' : ''
}
function isActive(path) {
return $page.route.id == path ? 'is-active' : '';
}
let navbarIsActive = false;
let navbarIsActive = false;
</script>
<nav class="navbar mb-5">
<div class="navbar-brand">
<a class="navbar-item" href="/"><img src="/lure-text-white.svg" alt="LURE Logo"></a>
<button class="navbar-burger {navbarIsActive ? 'is-active' : ''}" aria-label="menu" on:click={() => {navbarIsActive = !navbarIsActive}}>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</button>
</div>
<div class="navbar-brand">
<a class="navbar-item" href="/"><img src="/lure-text-white.svg" alt="LURE Logo" /></a>
<button
class="navbar-burger {navbarIsActive ? 'is-active' : ''}"
aria-label="menu"
on:click={() => {
navbarIsActive = !navbarIsActive;
}}
>
<span aria-hidden="true" />
<span aria-hidden="true" />
<span aria-hidden="true" />
</button>
</div>
<div id="main-navbar" class="navbar-menu {navbarIsActive ? 'is-active' : ''}">
<div class="navbar-end">
<a class="navbar-item {isActive('/')}" href="/"><Icon icon="material-symbols:house" inline=true/> Home</a>
<a class="navbar-item {isActive('/pkgs')}" href="/pkgs"><Icon icon="mdi:package-variant-closed" inline=true/>&nbsp;Packages</a>
<a class="navbar-item {isActive('/faq')}" href="/faq"><Icon icon="mdi:question-mark-circle" inline=true/>&nbsp;FAQ</a>
</div>
</div>
</nav>
<div id="main-navbar" class="navbar-menu {navbarIsActive ? 'is-active' : ''}">
<div class="navbar-end">
<a class="navbar-item {isActive('/')}" href="/">
<Icon icon="material-symbols:house" inline="true" /> Home
</a>
<a class="navbar-item {isActive('/pkgs')}" href="/pkgs">
<Icon icon="mdi:package-variant-closed" inline="true" />&nbsp;Packages
</a>
<a class="navbar-item {isActive('/about')}" href="/about">
<Icon icon="mdi:question-mark-circle" inline="true" />&nbsp;About
</a>
</div>
</div>
</nav>