An AUR-inspired package manager for Ubuntu
GPL-3.0 License
Bot releases are hidden (Show)
Published by oklopfer 4 months ago
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.
-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
}
Published by oklopfer 4 months ago
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.
{enhances,recommends,{make,check}conflicts}(_enh_arrs)
, custom_fields
by @oklopfer (#1134).SRCINFO
data for updates by @oklopfer (#1136)source
arrays override instead of append for -deb
pkgs by @oklopfer (#1131).deb
files properly to standard format by @oklopfer (#1133){make,check}{depends,conflicts}
with -dummy-builddep
by @oklopfer (#1132).SRCINFO
dataWe 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
.
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 runningdpkg --print-architecture
, and$AARCH
by runningecho $HOSTTYPE
(with two exceptions, starred below). These are differentiated in the given list withCARCH
/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 thearch
array. This means you cannot mix and match, likearch=('amd64' 'i686')
orarch=('arm64' 'aarch64')
. The naming scheme used will determine which enhanced arrays will be available.
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:
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
.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
}
Published by oklopfer 5 months ago
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.
-deb
packages with source_DISTRO
arrays by @oklopfer (#1122)[!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
}
Published by oklopfer 5 months ago
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.
_DISTRO
arrays/vars by @oklopfer (https://github.com/pacstall/pacstall/pull/1106)--nosandbox
/-Ns
flag by @oklopfer (https://github.com/pacstall/pacstall/pull/1116)-Rr
/--remove-repo
by @oklopfer (https://github.com/pacstall/pacstall/pull/1118)exit 0
in places that needed it by @oklopfer (https://github.com/pacstall/pacstall/pull/1112)PACDIR
exists when running -Up
by @oklopfer (https://github.com/pacstall/pacstall/pull/1117)bwrap
'd functions by @vigress8 (https://github.com/pacstall/pacstall/pull/1115)[!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.
_DISTRO
arrays and variablesIn 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
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 metalinksThe -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
}
Published by D-Brox 5 months ago
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.
-Qa
command by @D-Brox in https://github.com/pacstall/pacstall/pull/1102
stty
due to & wait
in for-loop (again) by @D-Brox in https://github.com/pacstall/pacstall/pull/1103
pacdeps
updating by @oklopfer in https://github.com/pacstall/pacstall/pull/1100
-B
downloads by @oklopfer in https://github.com/pacstall/pacstall/pull/1107
/tmp/pacstall-pacdep
by @D-Brox in (#1104)shfmt
and chmod +x
the scripts by @oklopfer (#1099)[!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
}
Published by Elsie19 6 months ago
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.
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)pacdeps
as deps for -deb
packages by @oklopfer (#1062)cd
for build/prepare/check/package
functions by @oklopfer (#1059)*depends
arrays by @Elsie19 (#1021)check()
function and -Nc/--nocheck
optional flag by @oklopfer (#1056){pre,post}_upgrade
& pre_remove
functions by @oklopfer (#1055)conflicts
array by @oklopfer (#1054)nosubmodules
array by @oklopfer (#1060)license
array by @oklopfer (#1063)var_CARCH
style arrays by @oklopfer (#1073)checkdepends
array by @oklopfer (#1072)-Qa/--quality-assurance
command by @oklopfer (#1089)-Q/--quiet
optional flag by @oklopfer (#1092)-V
by @D-Brox (#1081)CARCH
& DISTRO
on upgrades by @oklopfer (#1047)compatible
during building by @oklopfer (#1058)-P
flag by @D-Brox (#1079)sudo
calls in pacscriptsexternal_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.
cd
for functionsWith 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.
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
arrayPacstall 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()
functionThe 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
arrayOn 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
arrayYou 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
commandThis 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:
package
is given first, followed by the pull request NUM
, separated by a #
.metalink
separated by a @
may be provided before or after the #NUM
.
metalink
is broken down into 3 parts: provider
, owner
, and repo
.owner
should be the owner of the repository the PR is being merged into, not the user who created the PR.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
}
Published by Elsie19 9 months ago
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.
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"/*
}
Published by Elsie19 10 months ago
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.
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"/*
}
Published by Elsie19 10 months ago
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.
priority
key by @oklopfer (#1012)is_apt_package_installed
works again by @Elsie19 (#1011)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"/*
}
Published by Elsie19 11 months ago
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.
_remoterepo
dropping by @D-Brox (#1002)LOGDIR
exists before writing by @oklopfer (#1005)git clone
by @oklopfer (#1007)mapfile
subshells by @Elsie19 (#1001)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"/*
}
Published by Elsie19 12 months ago
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.
compatible
array by @oklopfer (#995)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"/*
}
Published by Elsie19 about 1 year ago
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.
compatible
array by @oklopfer (#978)xz
compression to zstd
by @Elsie19 (#977, #989)printf -v
instead of subshells by @Elsie19 (#980)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"/*
}
Published by Elsie19 about 1 year ago
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.
getMasks
by @Elsie19 (#970)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"/*
}
Published by Elsie19 about 1 year ago
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.
mask
array by @Elsie19 (#961)makedepends
through pacstall, reported by @markob94, by @Elsie19 (#964)Build-Depends
in deb by @Elsie19 (#963)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"/*
}
Published by Elsie19 about 1 year ago
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.
provides[@]
by @Elsie19 (#954)pkgrel
stem for deb packages by @Elsie19 (#953)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"/*
}
Published by Elsie19 about 1 year ago
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.
-L
printing by @Elsie19 (#932, #938, #943)pkgrel
variable-Qi
by @Elsie19 (#934, #937)url
if -B
is used on -deb
package by @Elsie19 (#935)PACSTALL_PAYLOAD
on pacdeps by @Elsie19 (#881)declare -p
to log pacdeps
instead of raw array by @Elsie19 (#939)LOGDIR
into LOGDIR
and METADIR
by @Elsie19 (#940)arch
by @oklopfer (#942)check_url
instead of appending possibly wrong text by @Elsie19 (#946)preinst
if deb pacscript has it by @Elsie19 (#947)$(date)
with builtin printf
by @Elsie19 (#933)--no-generate
flag to apt-cache
by @Elsie19 (#948)ask
function calls by @oklopfer (#949)If you are a pacscript maintainer, there are a couple things you must do:
version
and pkgver()
(variable/function)description
-> pkgdesc
(variable)build_depends
-> makedepends
(array)postinst
-> post_install
(function)preinst
-> pre_install
(function)removescript
-> post_remove
(function)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
}
-L
If you run pacstall -L
now, you'll be seeing something different than before:
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.
-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:
-B
downloading url
on deb packagesThe -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"/*
}
Published by Elsie19 over 1 year ago
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.
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"/*
}
Published by Elsie19 over 1 year ago
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.
-
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"/*
}
Published by Elsie19 over 1 year ago
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.
package
function to replace install
by @Henryws (#917)$DISTRO
variable by @Henryws (#918)Architecture
in deb by @Henryws (#909)sed
by @Henryws (#912)dirname
dependency by @Henryws (#913)package
functionReplace 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.$DISTRO
variableIf 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
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"/*
}
Published by Elsie19 over 1 year ago
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.
$NCPU
variable by @Henryws (#896, a98e9ab8)description
by @Henryws (#898)$name
and $PACKAGE
mismatch by @Henryws (#901)date
with printf
by @Henryws (#903)ask
function for replacing conflicting apt package swapped to default to Y
by @Henryws (#900)nproc
functions by @Henryws (#904)$name == $gives
by @Henryws (#907)$NCPU
variableEverywhere 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"/*
}