pacstall

An AUR-inspired package manager for Ubuntu

GPL-3.0 License

Downloads
1K
Stars
1.2K
Committers
37

Bot releases are visible (Hide)

pacstall - 5.2.1 Lemon-Lime-Flavored Non-Caffeinated Soft Drink Latest Release

Published by oklopfer 4 months ago

Pacstall v5.2.1 Lemon-Lime-Flavored Non-Caffeinated Soft Drink

This update is a bugfix update for bugs present in 5.2.0 found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • fix checking -deb packages with overridden source arrays by @oklopfer (#1141)

pkgname="pacstall"
pkgver="5.2.1"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install and update downstream programs,
without scouring github repos and the likes."
url='https://pacstall.dev'
makedepends=('gzip')
depends=(
  'bash'
  'curl'
  'wget'
  'git'
  'unzip'
  'zstd'
  'tar'
  'sensible-utils'
  'iputils-ping'
  'lsb-release'
  'aptitude'
  'bubblewrap'
  'build-essential'
  'jq'
  'distro-info-data'
)
optdepends=(
  "axel: faster file downloads"
  "ninja-build: common building tool"
  "meson: common building tool"
)
maintainer=(
  "Pacstall Team <[email protected]>"
  "Elsie19 <[email protected]>"
)
backup=('usr/share/pacstall/repo/pacstallrepo' 'usr/share/pacstall/update')
source=("https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip")

prepare() {
  cd "${pkgname}-${pkgver}"
  mkdir -p "${pkgdir}/usr/bin/"
  mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
  mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
  mkdir -p "${pkgdir}/usr/share/man/man8/"
  mkdir -p "${pkgdir}/usr/share/bash-completion/completions"
  mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d"
  mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
  mkdir -p "${pkgdir}/var/lib/pacstall/metadata/"
  mkdir -p "${pkgdir}/var/cache/pacstall/"
  mkdir -p "${pkgdir}/usr/src/pacstall/"
}

package() {
  cd "${pkgname}-${pkgver}"
  install -Dm755 pacstall "${pkgdir}/usr/bin/"
  install -Dm755 "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
  gzip --force -9n "misc/pacstall.8"
  install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
  install "misc/completion/fish" "${pkgdir}/usr/share/fish/vendor_completions.d/pacstall.fish"
  install "misc/completion/bash" "${pkgdir}/usr/share/bash-completion/completions/pacstall"
  echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" > /dev/null
}

pacstall - 5.2.0 Slime

Published by oklopfer 4 months ago

Pacstall v5.2.0 Slime

This update is a quality of life update focusing on important bug fixes and adding requested features. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Features

  • Allow arch-style architecture naming alternatives by @oklopfer (#1126)
  • Add {enhances,recommends,{make,check}conflicts}(_enh_arrs), custom_fields by @oklopfer (#1134)
  • Parse remote .SRCINFO data for updates by @oklopfer (#1136)
  • Manpage is now shipped as a text file and compressed locally by @Elsie19 (#1139)

Bug Fixes

  • Make enhanced source arrays override instead of append for -deb pkgs by @oklopfer (#1131)
  • Name .deb files properly to standard format by @oklopfer (#1133)
  • Make git clones follow quiet rules correctly by @oklopfer (#1135)
  • Handle {make,check}{depends,conflicts} with -dummy-builddep by @oklopfer (#1132)

For the Pacscript Maintainers

How to use the new features

Remote .SRCINFO data

We have now begun to integrate parsing of .SRCINFO data into pacstall directly, meaning if you have a personal pacstall-programs repository, it is now required for .SRCINFO generation to be done in it. You can do so by using this script in the pacstall-programs repository:

./scripts/srcinfo.sh packages/${pkgname}/${pkgname}.pacscript
git add packages/${pkgname}/.SRCINFO

If the .SRCINFO file has already been added to git, then future runs can keep the file maintained with pre-commit run --all-files.

Arch-style alternative architectures

To allow for easier porting of packages from the AUR, particularly ones using architecture enhanced arrays, we have introduced the option to use the naming scheme from Arch as an alternative to the Debian naming scheme we currently use. Additionally, a new variable $AARCH is available to all pacscripts. Below is the updated snippet for https://github.com/pacstall/pacstall/wiki/101.1-Variables#arch:

Two variables, $CARCH and $AARCH are also available to you, and are linked to the current running architecture. You can get the value that $CARCH would be on your system by running dpkg --print-architecture, and $AARCH by running echo $HOSTTYPE (with two exceptions, starred below). These are differentiated in the given list with CARCH/AARCH (if only one is listed, the variables are equal).

Pacstall supports all architectures that have an official Debian port. These are currently:

  • amd64/aarch64
  • arm64/x86_64
  • armel/arm
  • armhf/armv7h*
  • i386/i686*
  • mips64el
  • ppc64el
  • riscv64
  • s390x

[!IMPORTANT]
While both $CARCH and $AARCH will always be accessible to a pacscript, only one naming scheme may be used in the arch array. This means you cannot mix and match, like arch=('amd64' 'i686') or arch=('arm64' 'aarch64'). The naming scheme used will determine which enhanced arrays will be available.

New control fields and custom fields

makeconflicts

This is an array used to declare packages that cannot be installed on the system at build-time, usually because of a package conflict with a build-time dependency.

This array can be enhanced by $arch and/or $DISTRO.

checkconflicts

This is an array used to declare packages that cannot be installed on the system for testing in the check function, usually because of a package conflict with a check dependency.

This array can be enhanced by $arch and/or $DISTRO.

recommends

A list of packages that this package does not depend on, but may receive improved functionality from, and most users would want to have included with their install. For Debian's "Suggests" field, use optdepends. Packages marked "Recommends" have stronger weight than packages marked "Suggests" (optdepends), but can still be opted out of, unlike depends.

This array can be enhanced by $arch and/or $DISTRO.

enhances

A list of packages that this package can satisfy as a suggested package or recommended package. For instance, if the package foobar recommends foobar-extras, in foobar-extras you would have:

enhances=("foobar")

This array can be enhanced by $arch and/or $DISTRO.

custom_fields

This is an optional list of Debian control fields not already used by Pacstall's variables. If you want to provide a custom field to the control file of a built package, you may do so with the following format options:

custom_fields=(
  "Banana: this is a valid field"
  "My-Field: this is also a valid field"
  "Third-One: even this
  is a valid field"
)

There are a few restrictions on field names:

  • The following cannot be used: Depends, Package, Version, Architecture, Section, Priority, Essential, Vcs-Git, Build-Depends, Build-Depends-Arch, Build-Conflicts, Build-Conflicts-Arch, Provides, Conflicts, Breaks, Enhances, Recommends, Suggests, Replaces, Homepage, License, Maintainer, Uploaders, Description, Installed-Size.
  • Numbers and spaces are not allowed.
  • The first letter must be capital, and all others must be lowercase.
  • Hyphens should be used for multiword fields, and follow the same capitalization rule for each word.
  • Hyphens cannot be the first or last character in the field name.

This array does not have enhanced options.


pkgname="pacstall"
pkgver="5.2.0"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install and update downstream programs,
without scouring github repos and the likes."
url='https://pacstall.dev'
depends=(
  'bash'
  'curl'
  'wget'
  'git'
  'unzip'
  'zstd'
  'tar'
  'sensible-utils'
  'iputils-ping'
  'lsb-release'
  'aptitude'
  'bubblewrap'
  'build-essential'
  'jq'
  'distro-info-data'
)
optdepends=(
  "axel: faster file downloads"
  "ninja-build: common building tool"
  "meson: common building tool"
)
maintainer=(
  "Pacstall Team <[email protected]>"
  "Elsie19 <[email protected]>"
)
backup=('usr/share/pacstall/repo/pacstallrepo' 'usr/share/pacstall/update')
source=("https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip")

prepare() {
  cd "${pkgname}-${pkgver}"
  mkdir -p "${pkgdir}/usr/bin/"
  mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
  mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
  mkdir -p "${pkgdir}/usr/share/man/man8/"
  mkdir -p "${pkgdir}/usr/share/bash-completion/completions"
  mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d"
  mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
  mkdir -p "${pkgdir}/var/lib/pacstall/metadata/"
  mkdir -p "${pkgdir}/var/cache/pacstall/"
  mkdir -p "${pkgdir}/usr/src/pacstall/"
}

package() {
  cd "${pkgname}-${pkgver}"
  install -Dm755 pacstall "${pkgdir}/usr/bin/"
  install -Dm755 "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
  gzip -9n misc/pacstall.8
  install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
  install "misc/completion/fish" "${pkgdir}/usr/share/fish/vendor_completions.d/pacstall.fish"
  install "misc/completion/bash" "${pkgdir}/usr/share/bash-completion/completions/pacstall"
  echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" > /dev/null
}

pacstall - 5.1.1 Indigo

Published by oklopfer 5 months ago

Pacstall v5.1.1 Indigo

This update is a bugfix update for bugs present in 5.1.0 found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • fix checking -deb packages with source_DISTRO arrays by @oklopfer (#1122)

For the Pacscript Maintainers

[!NOTE]
This update addresses a new feature from the 5.1.0 (Release).
Refer to the release notes when updating pacscripts in the official or third party repos.


pkgname="pacstall"
pkgver="5.1.1"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install and update downstream programs,
without scouring github repos and the likes."
url='https://pacstall.dev'
depends=(
  'bash'
  'curl'
  'wget'
  'git'
  'unzip'
  'zstd'
  'tar'
  'sensible-utils'
  'iputils-ping'
  'lsb-release'
  'aptitude'
  'bubblewrap'
  'build-essential'
  'jq'
  'distro-info-data'
)
optdepends=(
  "axel: faster file downloads"
  "ninja-build: common building tool"
  "meson: common building tool"
)
maintainer=(
  "Pacstall Team <[email protected]>"
  "Elsie19 <[email protected]>"
)
backup=('usr/share/pacstall/repo/pacstallrepo' 'usr/share/pacstall/update')
source=("https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip")

prepare() {
  cd "${pkgname}-${pkgver}"
  mkdir -p "${pkgdir}/usr/bin/"
  mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
  mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
  mkdir -p "${pkgdir}/usr/share/man/man8/"
  mkdir -p "${pkgdir}/usr/share/bash-completion/completions"
  mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d"
  mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
  mkdir -p "${pkgdir}/var/lib/pacstall/metadata/"
  mkdir -p "${pkgdir}/var/cache/pacstall/"
  mkdir -p "${pkgdir}/usr/src/pacstall/"
}

package() {
  cd "${pkgname}-${pkgver}"
  install -Dm755 pacstall "${pkgdir}/usr/bin/"
  install -Dm755 "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
  install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
  install "misc/completion/fish" "${pkgdir}/usr/share/fish/vendor_completions.d/pacstall.fish"
  install "misc/completion/bash" "${pkgdir}/usr/share/bash-completion/completions/pacstall"
  echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" > /dev/null
}

pacstall - 5.1.0 Periwinkle

Published by oklopfer 5 months ago

Pacstall v5.1.0 Periwinkle

This update is a quality of life update focusing on important bug fixes and adding requested features. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Features

Bug Fixes


For the Pacscript Maintainers

[!IMPORTANT]
Breaking changes to the pacscript spec were added in 5.0.0 (Release).
Refer to the release notes when updating pacscripts in the official or third party repos.

How to use the new features

_DISTRO arrays and variables

In aim to make pacscript declarations more static, and to improve the accuracy of .SRCINFO in pacstall/pacstall-programs, over 2000 new arrays and variables have been introduced; pacscripts should deprecate their usage of $DISTRO checks wherever possible in favor of these additions. These are used just as _CARCH options are, and on all of the same arrays and variables. They provide the following options:

  • var_DISTROBASE, where DISTROBASE is either ubuntu or debian; e.g. source_ubuntu or depends_debian
  • var_DISTROVER, where DISTROVER is a version codename; e.g. source_jammy or depends_bookworm
    • Note: this cannot be the version number, like 22.04 or 12
  • var_DISTROBASE_CARCH, e.g. source_ubuntu_arm64 or depends_debian_i386
  • var_DISTROVER_CARCH, e.g. source_jammy_arm64 or depends_bookworm_i386

A CI maintained file at https://github.com/pacstall/pacstall-programs/blob/master/distrolist will provide an up-to-date list of the supported DISTROVER options.

-Ns/--nosandbox

Some environments, namely chroot or chroot-like ones, are purely incompatible with bwrap (e.g. Debian's live-build, which uses chroot). These environments need to be able to build pacscripts without bwrap involved. While this is how pacstall worked before 5.0.0, this lack of isolation is still potentially dangerous and could lead to unwanted harm on a system. This flag should be used with caution, and is intended for use in those aforementioned environments, which already have other levels of isolation.

-Rr/--remove-repo and repo metalinks

The -A/--add-repo command has existed for a long time, with no accommodating removal function. The new -Rr/--remove-repo command can be used with the exact same syntax as its adding counterpart. In addition to passing links as normal (e.g. https://github.com/user/repo or file://path/to/dir), metalinks (which are used in -Qa and displayed in -Up) may also be used for more user-friendly handling of the commands. They are formatted with the following options:

  • provider:user/repo, where provider is either github or gitlab; defaults to branch master
  • provider:user/repo#branch
  • local:/path/to/dir

Example usage:

pacstall -A github:pacstall/pacstall-programs#5.0.0-master
pacstall -Rr github:pacstall/pacstall-programs#5.0.0-master

pacstall -A local:/home/pacstall/pacstall-programs
pacstall -Rr local:/home/pacstall/pacstall-programs

pkgname="pacstall"
pkgver="5.1.0"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install and update downstream programs,
without scouring github repos and the likes."
url='https://pacstall.dev'
depends=(
  'bash'
  'curl'
  'wget'
  'git'
  'unzip'
  'zstd'
  'tar'
  'sensible-utils'
  'iputils-ping'
  'lsb-release'
  'aptitude'
  'bubblewrap'
  'build-essential'
  'jq'
  'distro-info-data'
)
optdepends=(
  "axel: faster file downloads"
  "ninja-build: common building tool"
  "meson: common building tool"
)
maintainer=(
  "Pacstall Team <[email protected]>"
  "Elsie19 <[email protected]>"
)
backup=('usr/share/pacstall/repo/pacstallrepo' 'usr/share/pacstall/update')
source=("https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip")

prepare() {
  cd "${pkgname}-${pkgver}"
  mkdir -p "${pkgdir}/usr/bin/"
  mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
  mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
  mkdir -p "${pkgdir}/usr/share/man/man8/"
  mkdir -p "${pkgdir}/usr/share/bash-completion/completions"
  mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d"
  mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
  mkdir -p "${pkgdir}/var/lib/pacstall/metadata/"
  mkdir -p "${pkgdir}/var/cache/pacstall/"
  mkdir -p "${pkgdir}/usr/src/pacstall/"
}

package() {
  cd "${pkgname}-${pkgver}"
  install -Dm755 pacstall "${pkgdir}/usr/bin/"
  install -Dm755 "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
  install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
  install "misc/completion/fish" "${pkgdir}/usr/share/fish/vendor_completions.d/pacstall.fish"
  install "misc/completion/bash" "${pkgdir}/usr/share/bash-completion/completions/pacstall"
  echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" > /dev/null
}

pacstall - 5.0.1 Toucan

Published by D-Brox 6 months ago

Pacstall v5.0.1 Toucan

This update is a bugfix update for bugs present in 5.0.0 Canary found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug Fixes

Refactoring and minor changes

  • Replace directories with the corresponding *DIR variables by @D-Brox (#/1105)
  • Remove the deprecated /tmp/pacstall-pacdep by @D-Brox in (#1104)
  • Normalize script names by @D-Brox (#1098)
  • Re-run shfmt and chmod +x the scripts by @oklopfer (#1099)

For the Pacscript Maintainers

[!IMPORTANT]
Breaking changes to the pacscript spec where added in 5.0.0 (Release)
Refer to the release notes when updating pacscripts in the official or third party repos.


pkgname="pacstall"
pkgver="5.0.1"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install and update downstream programs,
without scouring github repos and the likes."
url='https://pacstall.dev'
depends=(
  'bash'
  'curl'
  'wget'
  'git'
  'unzip'
  'zstd'
  'tar'
  'sensible-utils'
  'iputils-ping'
  'lsb-release'
  'aptitude'
  'bubblewrap'
  'build-essential'
  'ninja-build'
  'meson'
  'jq'
)
optdepends=(
  "axel: faster file downloads"
)
maintainer=(
  "Pacstall Team <[email protected]>"
  "Elsie19 <[email protected]>"
)
backup=('usr/share/pacstall/repo/pacstallrepo' 'usr/share/pacstall/update')
source=("https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip")

prepare() {
  cd "${pkgname}-${pkgver}"
  mkdir -p "${pkgdir}/usr/bin/"
  mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
  mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
  mkdir -p "${pkgdir}/usr/share/man/man8/"
  mkdir -p "${pkgdir}/usr/share/bash-completion/completions"
  mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d"
  mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
  mkdir -p "${pkgdir}/var/lib/pacstall/metadata/"
  mkdir -p "${pkgdir}/var/cache/pacstall/"
  mkdir -p "${pkgdir}/usr/src/pacstall/"
}

package() {
  cd "${pkgname}-${pkgver}"
  install -Dm755 pacstall "${pkgdir}/usr/bin/"
  install -Dm755 "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
  install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
  install "misc/completion/fish" "${pkgdir}/usr/share/fish/vendor_completions.d/pacstall.fish"
  install "misc/completion/bash" "${pkgdir}/usr/share/bash-completion/completions/pacstall"
  echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" > /dev/null
}

pacstall - 5.0.0 Canary

Published by Elsie19 6 months ago

Pacstall v5.0.0 Canary

This update is a major update focusing on quality of life features and enhanced security and functionality. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

BREAKING CHANGES

  • Use bwrap when running functions by @D-Brox & @oklopfer (#1068, #1069, #1075)
  • url -> source[@] by @oklopfer (#1038)
  • homepage -> url by @oklopfer (#1051)
  • replace -> replaces by @Elsie19 (#1016)
  • SRCDIR -> PACDIR by @oklopfer (#1045)
  • name -> pkgname by @Elsie19 (#1017)
  • hash -> *sums[@] by @oklopfer (#1053)
  • maintainer -> maintainer[@] by @Elsie19 (#1022)
  • STOWDIR -> STAGEDIR by @D-Brox (#1097)
  • Mark pacdeps as deps for -deb packages by @oklopfer (#1062)
  • Require cd for build/prepare/check/package functions by @oklopfer (#1059)

Features

  • Add version constraints to all *depends arrays by @Elsie19 (#1021)
  • Add check() function and -Nc/--nocheck optional flag by @oklopfer (#1056)
  • Add {pre,post}_upgrade & pre_remove functions by @oklopfer (#1055)
  • Add conflicts array by @oklopfer (#1054)
  • Add nosubmodules array by @oklopfer (#1060)
  • Add license array by @oklopfer (#1063)
  • Add var_CARCH style arrays by @oklopfer (#1073)
  • Add checkdepends array by @oklopfer (#1072)
  • Add -Qa/--quality-assurance command by @oklopfer (#1089)
  • Add -Q/--quiet optional flag by @oklopfer (#1092)
  • Show if you are in a develop branch when using -V by @D-Brox (#1081)

Bug Fixes

  • Fix upgrading with multiple repos by @D-Brox & @oklopfer (#1049, #1071)
  • Export CARCH & DISTRO on upgrades by @oklopfer (#1047)
  • Unset compatible during building by @oklopfer (#1058)
  • Reenable prompting on pacdeps when not using the -P flag by @D-Brox (#1079)
  • Fix argument parsing and handling by @D-Brox (#1080)

For the Pacscript Maintainers

How to use the new features and deal with the breaking changes

bwrap

  • Remove sudo calls in pacscripts
  • Internet access is restricted while pacscript functions are running (bypass if you need to with external_connection=true).

With bwrap, potentially dangerous scripts are locked down, by giving the child processes read-only access to every directory except the $PACDIR source directory and the pkgdir staging directory. This will also kill any child processes after bwrap is finished, meaning that no extra code could possibly be left running after.

Require cd for functions

With the introduction of source[@], pacscript functions will no longer be run from the unarchived download, instead they will be run from $srcdir. To maintain compatibility with pre-5.0.0 scripts, we have put cd "${_archive}" into all pacscript functions on our 5.0.0 master branch, which can be used to enter source[0] once extracted.

Version constraints & alternative dependencies

Sometimes when making a pacscript, only certain versions of an apt package will work in conjunction with your package, and until now, the only way to solve that was to make a pacdep on the appropriate version, which is clunky, so now, you can optionally specify version constraints and alternate dependencies on packages. The syntax is as follows:

You may include a version constraint after a package name in the form of pkg>=version, pkg<=version, pkg=version, pkg>version, pkg<version.

After the version with an optional constraint, you may use a pipe to provide alternate dependencies.

depends=("foo>=1.2.3 | bar<=1.2.3")
makedepends=("libfoo=1.0.1")
optdepends=("libidk:i386<5.2.3 | libidk:i386>1.2.5: provides libidk support")

url to source[@]

You can now include multiple files to be downloaded by pacstall, meaning you won't have to make pacscripts like neovide-bin, upscayl-app or sidequest. This should remove a lot of headaches with download files.

You can even have sources defined by multiple architectures, such as if you ever needed to download a specific config file for a specific architecture.

To change from pre-5.0.0 scripts into 5.0.0, change all instances of url (variable) into source (array). Architecture specific sources are defined like source_$arch.

Let's take amfora-bin for example (https://github.com/pacstall/pacstall-programs/blob/76398ebda1f31e140c48b2d4b562d1127bd37a8b/packages/amfora-bin/amfora-bin.pacscript):

url="https://github.com/makeworld-the-better-one/amfora/releases/download/v${pkgver}/amfora_${pkgver}_linux_64-bit"
hash="a468f97f0e3fa1d69868980fd0e5893388ccd9c849874d26e4d0b426fd6bff3e"
...
wget -q https://roboticoverlords.org/amfora.png
if [[ "$(sha256sum amfora.png | cut -d' ' -f 1)" != "3d029d05cff8c42e82685ce7a61fcaa2118e4cbb6a547816a7d5150868a11092" ]]; then
  fancy_message error "Checksum for amfora.png failed"
  return 1
fi
wget -q https://raw.githubusercontent.com/makeworld-the-better-one/amfora/master/amfora.desktop
if [[ "$(sha256sum amfora.desktop | cut -d' ' -f 1)" != "812e1faad6f6d4817eac60d36813472afebe2980cd2e661151a3d98669274207" ]]; then
  fancy_message error "Checksum for amfora.desktop failed"
  return 1
fi

We can now do something like:

sha256sums=(
  "a468f97f0e3fa1d69868980fd0e5893388ccd9c849874d26e4d0b426fd6bff3e"
  "3d029d05cff8c42e82685ce7a61fcaa2118e4cbb6a547816a7d5150868a11092"
  "812e1faad6f6d4817eac60d36813472afebe2980cd2e661151a3d98669274207"
)
source_amd64=(
  "https://github.com/makeworld-the-better-one/amfora/releases/download/v${pkgver}/amfora_${pkgver}_linux_64-bit"
  "https://roboticoverlords.org/amfora.png"
  "https://raw.githubusercontent.com/makeworld-the-betterne/amfora/master/amfora.desktop"
)

nosubmodules array

Pacstall by default will clone git sources with submodules, but some maintainers may not need that, so now you may use the nosubmodules array which takes destination names from source[@]. For instance:

source=(
  "https://github.com/rhino-linux/rhino-pkg.git"
  "https://github.com/tamton-aquib/stuff.nvim.git"
)
nosubmodules=("rhino-pkg")

will clone rhino-pkg.git without submodules but will clone with submodules for stuff.nvim.git.

homepage to url

This is a simple name change to conform to PKGBUILDs.

replace to replaces

This is a simple name change to conform to PKGBUILDs.

hash to *sums

To conform to PKGBUILDs, the hash variable has been replaced with an array *sums. You now have the following options for specifying hashs:

  • sha256sums (should be used by default; what pacstall pre-5.0.0 used)
  • sha512sums
  • sha384sums
  • sha224sums
  • sha1sums
  • md5sums
  • b2sums

Along with these, you can have architecture specific sums arrays, which should compliment source_$arch in the form of *sums_$arch. If you want to include some hashes to check, but not for certain files, you can put SKIP as the value corresponding to the source array.

maintainer to maintainer[@]

The maintainer variable is now an array, where the first value becomes what apt sees as the maintainer, and everyone after will be seen as an "uploader".

check() function

The check function is used just like it is in PKGBUILDs, which will be run between build() and package(). Here is where maintainers should run any tests to check that the final binary or source code runs as it should. You can skip this function with the -Nc/--nocheck flag.

conflicts array

On pre-5.0.0 pacstall, the only way to prevent certain packages from replacing others was with breaks, but dpkg can get more specific. Both breaks and conflicts will declare incompatibilities, but they have very subtle differences during installation:

breaks will tell dpkg that the two packages can be unpacked on the system at the same time, even though one will be uninstalled soon.
conflicts will tell dpkg that both cannot be unpacked on the system at the same time; one must be uninstalled before the other one is installed. A common example of this is two packages that both have a file in the same location.

If you are a pacscript maintainer and you have an array like this:

breaks=("${gives}-git" "${gives}-bin")

That should now be using the conflicts array.

license array

You may now specify licenses. Licenses must be one of the identifiers on https://spdx.org/licenses/, or to specify a custom license, prefix the value with custom:

-Qa/--quality-assurance command

This is an internalization of https://github.com/pacstall/pacstall-qa, rewritten purely in Bash. You can pass this command to test a package PR before it fully lands upstream. The syntax looks like one of the following:

pacstall -Qa firefox-bin#5853
pacstall -Qa firefox-bin#5853@github:pacstall/pacstall-programs
pacstall -Qa firefox-bin@github:pacstall/pacstall-programs#5853

Where:

  • the package is given first, followed by the pull request NUM, separated by a #.
  • Optionally, a metalink separated by a @ may be provided before or after the #NUM.
    • The metalink is broken down into 3 parts: provider, owner, and repo.
    • The owner should be the owner of the repository the PR is being merged into, not the user who created the PR.
  • No other flags should be provided to this command.

pkgname="pacstall"
pkgver="5.0.0"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install and update downstream programs,
without scouring github repos and the likes."
url='https://pacstall.dev'
depends=(
  'bash'
  'curl'
  'wget'
  'git'
  'unzip'
  'zstd'
  'tar'
  'sensible-utils'
  'iputils-ping'
  'lsb-release'
  'aptitude'
  'bubblewrap'
  'build-essential'
  'ninja-build'
  'meson'
  'jq'
)
optdepends=(
  "axel: faster file downloads"
)
maintainer=(
  "Pacstall Team <[email protected]>"
  "Elsie19 <[email protected]>"
)
backup=('usr/share/pacstall/repo/pacstallrepo' 'usr/share/pacstall/update')
source=("https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip")

prepare() {
  cd "${pkgname}-${pkgver}"
  mkdir -p "${pkgdir}/usr/bin/"
  mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
  mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
  mkdir -p "${pkgdir}/usr/share/man/man8/"
  mkdir -p "${pkgdir}/usr/share/bash-completion/completions"
  mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d"
  mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
  mkdir -p "${pkgdir}/var/lib/pacstall/metadata/"
  mkdir -p "${pkgdir}/var/cache/pacstall/"
  mkdir -p "${pkgdir}/usr/src/pacstall/"
}

package() {
  cd "${pkgname}-${pkgver}"
  install -Dm755 pacstall "${pkgdir}/usr/bin/"
  install -Dm755 "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
  install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
  install "misc/completion/fish" "${pkgdir}/usr/share/fish/vendor_completions.d/pacstall.fish"
  install "misc/completion/bash" "${pkgdir}/usr/share/bash-completion/completions/pacstall"
  echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" > /dev/null
}

pacstall - 4.3.2 Firebrick4

Published by Elsie19 9 months ago

Pacstall v4.3.2 Firebrick4

This update is a bugfix update for bugs present in 4.3.1 Firebrick2 found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • Download literal filename by @Elsie19 (#1023)
  • Download patches without URL flags by @vigress8 (#1020)
  • Fix FARCH looping by @oklopfer (#1024)

name="pacstall"
pkgver="4.3.2"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git" "zstd")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 4.3.1 Firebrick2

Published by Elsie19 10 months ago

Pacstall v4.3.1 Firebrick2

This update is a bugfix update for bugs present in 4.3.0 Firebrick found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • Unset priority by @Elsie19 (867839a8ae2b6fd6aa39f950ba2262ffb7b819b3)

name="pacstall"
pkgver="4.3.1"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 4.3.0 Firebrick

Published by Elsie19 10 months ago

Pacstall v4.3.0 Firebrick

This update is a quality of life update focusing on important bug fixes and adding requested features. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Features

  • Add priority key by @oklopfer (#1012)

Bug fixes

  • is_apt_package_installed works again by @Elsie19 (#1011)
  • Ensure directories made by sudo are readable by @srd424 (#1004)
  • Fix comp_err variable in checks.sh by @oklopfer (#1013)

name="pacstall"
pkgver="4.3.0"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git" "zstd")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 4.2.2 Clover

Published by Elsie19 11 months ago

Pacstall v4.2.2 Clover

This update is a bugfix update for bugs present in 4.2.1 Kelp found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • Fix silent _remoterepo dropping by @D-Brox (#1002)
  • Install pacdeps from same repo on upgrade by @D-Brox (#1000)
  • Ensure LOGDIR exists before writing by @oklopfer (#1005)
  • Clone submodules on git clone by @oklopfer (#1007)

Performance changes

  • Remove mapfile subshells by @Elsie19 (#1001)

Changes

  • Remove emoji from set -x output by @oklopfer (#1008)

name="pacstall"
pkgver="4.2.2"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 4.2.1 Kelp

Published by Elsie19 12 months ago

Pacstall v4.2.1 Kelp

This update is a bugfix update for bugs present in 4.2.0 Weed found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • Install pacdeps from same origin by @D-Brox (#994)
  • Repair compatible array by @oklopfer (#995)

Features

  • Log Vcs-Git for git packages by @Elsie19 (#993)

name="pacstall"
pkgver="4.2.1"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 4.2.0 Weed

Published by Elsie19 about 1 year ago

Pacstall v4.2.0 Weed

This update is a quality of life update focusing on important bug fixes and adding requested features. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Features

  • Add compatible array by @oklopfer (#978)
  • Swap xz compression to zstd by @Elsie19 (#977, #989)

Performance changes

  • Use printf -v instead of subshells by @Elsie19 (#980)

Bug fixes

  • Repair FARCH array by @oklopfer (#979)

name="pacstall"
pkgver="4.2.0"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git" "zstd")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 4.1.1 Amethyst

Published by Elsie19 about 1 year ago

Pacstall v4.1.1 Amethyst

This update is a bugfix update for bugs present in 4.1.0 Purpure found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • Use different var name for mask iter by @Elsie19 (#973)
  • Redirect pipe output in getMasks by @Elsie19 (#970)

Changes

  • Custom PS4 style by @oklopfer (#972)

name="pacstall"
pkgver="4.1.1"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 4.1.0 Purpure

Published by Elsie19 about 1 year ago

Pacstall v4.1.0 Purpure

This update is a quality of life update focusing on important bug fixes and adding requested features. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Features

  • Add mask array by @Elsie19 (#961)

Changes

  • Remove ability to remove makedepends through pacstall, reported by @markob94, by @Elsie19 (#964)

Additions

  • Log Build-Depends in deb by @Elsie19 (#963)

How to use features

mask

mask is an array that takes in pacstall package names. Once installed, any packages in mask will be unable to be installed, or show up in searches. Use this feature sparingly, and do not use it unless you know exactly what you are doing.


name="pacstall"
pkgver="4.1.0"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 4.0.1 Kokam

Published by Elsie19 about 1 year ago

Pacstall v4.0.1 Kokam

This update is a bugfix update for bugs present in 4.0.0 Popstar found and reported by the community. Users can update from Pacstall 4.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • Pinning includes provides[@] by @Elsie19 (#954)
  • Do not use pkgrel stem for deb packages by @Elsie19 (#953)
  • Remove pre-4.0.0 git package version check by @Elsie19 (#956)

Refactors

  • Remove responsive dep-tree output by @Elsie19 (#957)

name="pacstall"
pkgver="4.0.1"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 4.0.0 Popstar

Published by Elsie19 about 1 year ago

Pacstall v4.0.0 Popstar

This update is a major update focusing on quality of life features and enhanced functionality. Users can update from Pacstall 3.14.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Users

Features

  • Fancy -L printing by @Elsie19 (#932, #938, #943)

Developers, Developers, Developers...

BREAKING CHANGES

  • Remove old deprecations, move more variables to PACBUILD by @Elsie19 (#926)
    • Add pkgrel variable
    • Cascading errors instead of failing out at the first error

Features

  • Add metadata queries to -Qi by @Elsie19 (#934, #937)
  • Download url if -B is used on -deb package by @Elsie19 (#935)

Fixes

  • Skip PACSTALL_PAYLOAD on pacdeps by @Elsie19 (#881)
  • Use declare -p to log pacdeps instead of raw array by @Elsie19 (#939)
  • Split LOGDIR into LOGDIR and METADIR by @Elsie19 (#940)
  • Add foreign dpkg architectures for arch by @oklopfer (#942)
  • Do not force remove dependency by @Elsie19 (#944)
  • Show full URL names on check_url instead of appending possibly wrong text by @Elsie19 (#946)
  • Run preinst if deb pacscript has it by @Elsie19 (#947)

Performance changes

  • Replace $(date) with builtin printf by @Elsie19 (#933)
  • Add --no-generate flag to apt-cache by @Elsie19 (#948)

Style changes

  • Hide cursor on dep tree run by @Elsie19 (#941)
  • Add question marks to all ask function calls by @oklopfer (#949)

How to use features

PACBUILD variables

If you are a pacscript maintainer, there are a couple things you must do:

  1. Merging of version and pkgver() (variable/function)
  2. description -> pkgdesc (variable)
  3. build_depends -> makedepends (array)
  4. postinst -> post_install (function)
  5. preinst -> pre_install (function)
  6. removescript -> post_remove (function)
  7. pkgrel (variable)

For the merging of version and pkgver(), you'll need to do the following steps:

If you are a non-git package, rename version to pkgver. If you are a git package, add the pkgver variable and the pkgver() function. The variable should have the latest tag at the time of updating the pacscript, and the pkgver() function should retrieve the latest shasum.

So basically, if you are a non-git package, you have to change a variable name, and if you are a git package, you remove version="$(pkgver)" and add pkgver=<tag>.

We also are introducing the pkgrel variable. This can be used when you wish to trigger an update on a users computer but ${pkgver} has not been changed, such as fixing a broken build process. Unlike PKGBUILDs, this variable is optional and will default to 1 if not included.

url="put in url here"
ver="$(git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' "${url}" \
    | cut --delimiter='/' --fields=3     \
    | tr '-' '~'                         \
    | sort --version-sort                \
    | tail --lines=1)"
if [[ -z ${ver} ]]; then
  echo "0.0.1" # pkgver should be 0.0.1 if they have no tags yet
else
  echo "${ver}"
fi

Here we have an old pacscript snippet:

name="foo"
version="1.0.2"
description="A fast fooer"
build_depends=('foo-dev' 'fork')

To convert to 4.0.0, this pacscript should look like this:

name="foo"
pkgver="1.0.2"
pkgdesc="A fast fooer"
makedepends=('foo-dev' 'fork')

Let's try a git pacscript now:

name="foo"
description="A fast fooer"
build_depends=('foo-dev' 'fork')
pkgver() {
  git ls-remote "${url}" master | cut -f1 | cut -c1-8
}
version="$(pkgver)"

To convert to 4.0.0, we do this:

name="foo"
pkgver="3.15.0"
pkgdesc="A fast fooer"
makedepends=('foo-dev' 'fork')
pkgver() {
  git ls-remote "${url}" master | cut -f1 | cut -c1-8
}

More informational -L

If you run pacstall -L now, you'll be seeing something different than before:
Picture of the new -L flag
This will show you much more information about the package. -Qi can still be used to query an individual package information. If -L detects it's being used non-interactively, it will fallback to the old style, which is much more suited for for scripting, so if you are using the output of pacstall -L in a script, nothing should change for you.

Metadata queries in -Qi

Previously, if you wanted the raw metadata to parse or use, you would have to source the metadata file and run what you needed on that. That's not the most effective, so now you can add a second argument to -Qi, which is the name of the piece of metadata you want. They follow the output of -Qi sections, and spaces are replaced with underscores:
Picture describing how -Qi works

-B downloading url on deb packages

The -B flag, which is used to create but not install a deb, doesn't make much sense to use on a deb pacscript, so now, -B on any deb package will download url instead.


name="pacstall"
pkgver="4.0.0"
pkgdesc="An AUR-inspired package manager for Ubuntu
Pacstall is the AUR Ubuntu wishes it had. It takes the concept of the AUR
and puts a spin on it, making it easier to install programs without scouring
github repos and the likes"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${pkgver}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 3.15.0 Rhythm

Published by Elsie19 over 1 year ago

Pacstall v3.15.0 Rhythm

This update is a quality of life update focusing on important bug fixes and adding requested features. Users can update from Pacstall 3.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Features

  • Add upgrade package order system to upgrades by @Elsie19 (#929)

Changes

  • Remove txt suffix from /usr/share/pacstall/repo/pacstallrepo.txt by @Elsie19 (#927)

name="pacstall"
version="3.15.0"
description="An AUR-inspired package manager for Ubuntu"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/tags/${version}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo.txt" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 3.14.1 Pine

Published by Elsie19 over 1 year ago

Pacstall v3.14.1 Pine

This update is a bugfix update for bugs present in 3.14.1 Payton found and reported by the community. Users can update from Pacstall 3.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Bug fixes

  • Pinning uses - instead of ., by @Henryws, reported by @Zahrun (#923)

name="pacstall"
version="3.14.1"
description="An AUR-inspired package manager for Ubuntu"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/heads/${version}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo.txt" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 3.14.0 Payton

Published by Elsie19 over 1 year ago

Pacstall v3.14.0 Payton

This update is a quality of life update focusing on important bug fixes and adding requested features. Users can update from Pacstall 3.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Features

  • Add package function to replace install by @Henryws (#917)
  • Add $DISTRO variable by @Henryws (#918)

Bug fixes

  • Accurately log Architecture in deb by @Henryws (#909)
  • Check for non-existence of Pacstall package while checking apt for replace by @Henryws (#909)
  • Accurately check for apt install status by @Henryws (#916)
  • Allow top-level files in deb by @Henryws (#919, 38a485df)

Changes

  • Remove "parallel" wget downloads for patches by @Henryws (#909)

Performance changes

  • Strip first character from flag parser with bash instead of sed by @Henryws (#912)
  • Remove dirname dependency by @Henryws (#913)

How to use new features

package function

Replace install() with package() in your pacscripts. You can still use install(), but with a deprecation notice. You cannot use both install() and package() in the same pacscript.

# Old
install() {
  ...
}
# New
package() {
  ...
}
  • install is a Pacscript function, but also an external command that many pacscripts use. The way Pacstall has worked around this is by using a particular decision by sudo that prevents it from running a function of the same name. For instance, if the function ls exists, and you simply run ls, the function will run, but if you run sudo ls, the actual command in $PATH will run. The same logic was used in Pacstall, but this is hacky and prevents people from simply using install instead of command install in order to run the command without using sudo if they wanted.
  • This helps us converge the Pacscript spec with the PACBUILD spec.

$DISTRO variable

If you need to access the current system's distro and version, you can use $DISTRO which takes the form: $distro_name:$distro_version_name.

case "${DISTRO}" in
  ubuntu:kinetic) ;;
  *:mantic) ;;
  debian:sid) ;;
  *) ;;
esac
  • It makes accessing the systems name and version name much easier and less hacky than if it did not exist.
  • We have incompatible to prevent certain distro installs, so why not add a variable to check that distro.

name="pacstall"
version="3.14.0"
description="An AUR-inspired package manager for Ubuntu"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/heads/${version}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

package() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo.txt" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

pacstall - 3.13.0 Immortelle

Published by Elsie19 over 1 year ago

Pacstall v3.13.0 Immortelle

This update is a quality of life update focusing on important bug fixes and adding requested features. Users can update from Pacstall 3.0.0 or higher with pacstall -U pacstall:master, or reinstall using the deb file.

Developers, Developers, Developers...

Features

  • Add $NCPU variable by @Henryws (#896, a98e9ab8)

Bug fixes

  • Add check for missing description by @Henryws (#898)
  • Prevent $name and $PACKAGE mismatch by @Henryws (#901)
  • Do not log for packages that don't exist on removal by @Henryws (#902)

Refactors

  • Minify postscripts by @Henryws (#897)
  • Replace date with printf by @Henryws (#903)
  • ask function for replacing conflicting apt package swapped to default to Y by @Henryws (#900)
  • Minify nproc functions by @Henryws (#904)
  • Remove question marks from upgrade questions by @Henryws (af8a32c5)
  • Do not show 'packaging as' text when $name == $gives by @Henryws (#907)

How to use new features

$NCPU variable

Everywhere that you would usually use $(nproc), you should replace with ${NCPU}.

# Old
make -j"$(nproc)"
# New
make -j"${NCPU}"

name="pacstall"
version="3.13.0"
description="An AUR-inspired package manager for Ubuntu"
homepage='https://pacstall.dev'
depends=("bash" "curl" "wget" "unzip" "build-essential" "sensible-utils" "git")
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/heads/${version}.zip"

prepare() {
	sudo mkdir -p "${pkgdir}/usr/bin/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/scripts/"
	sudo mkdir -p "${pkgdir}/usr/share/pacstall/repo/"
	sudo mkdir -p "${pkgdir}/usr/share/man/man8/"
	sudo mkdir -p "${pkgdir}/var/log/pacstall/error_log/"
}

install() {
	sudo install -Dm 755 pacstall "${pkgdir}/usr/bin/"
	sudo install -C "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo install "misc/pacstall.8.gz" "${pkgdir}/usr/share/man/man8/"
	echo "https://raw.githubusercontent.com/pacstall/pacstall-programs/master" | sudo tee "${pkgdir}/usr/share/pacstall/repo/pacstallrepo.txt" >/dev/null
	sudo chmod +x "${pkgdir}/usr/share/pacstall/scripts"/*
}

Package Rankings
Top 29.72% on Crates.io