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 - 3.0.1 Zaffre

Published by Elsie19 almost 2 years ago

Pacstall v3.0.1 Zaffre

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

Developers, Developers, Developers...

Performance changes

  • Remove some heavy and external tools by @Henryws (#684)

Bug fixes

  • Bring back interoperability between functions by @Henryws, reported by @bayazidbh (#685)
  • Fix typo suggest_solution -> suggested_solution by @Henryws (#683)

Caveats of PR #685

The only catch to this change is that set -u has been removed from the pacscript guards. This is caused solely because Bash's set -u command does not respect trapping.^1 This should not cause any issues for users, and if a package somehow relied on using unbound variables, those Pacscript maintainers should fix it.

name="pacstall"
version="3.0.1"
description="The AUR for Ubuntu"
depends="curl wget unzip build-essential bc sensible-utils"
optdepends=(
	"axel: faster file downloads"
)
maintainer="Pacstall Team <[email protected]>"
url="https://github.com/pacstall/pacstall/archive/refs/heads/master.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 cp pacstall "${pkgdir}/usr/bin"
	sudo cp -r "misc/scripts"/* "${pkgdir}/usr/share/pacstall/scripts/"
	sudo cp "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.0.0 Cobalt

Published by Elsie19 about 2 years ago

Pacstall v3.0.0 Cobalt

This update is a major update focusing on quality of life features and enhanced functionality. Users can update from Pacstall 1.5.1 or higher with pacstall -U pacstall master, or reinstall using the deb file, however due to the changes this release brings, it is highly recommended to reinstall all packages after updating.

Packages will continue to work after the upgrade, and should be able to be upgraded when new versions are available (this has not been tested, attempt at your own discretion). If you do not want to wait for Pacstall to switch your installed packages to Debs, you can just reinstall them with pacstall -I <pkg>, or you can run this to fully remove the old package installation before reinstalling:

sudo apt purge $name # this will also trigger a built in `postrm` hook that will un-stow the package from `/usr/src/pacstall` and remove relevant metadata

Users

BREAKING CHANGES

  • Build packages into Deb files by @Henryws (#636, #643)
  • Removal of the -Il flag by @Henryws (#676)

Click here for more in-depth information about the Deb breaking change.


Features

  • Show pretty index of optdepends by @Henryws (#630)
  • Add optdepends selection array by @Henryws (#631, #666)
  • Warn users if optdepend does not exist in repos by @Henryws (#629, #658)
  • Add -B flag to build Deb packages without installing by @Henryws (#636, #677)
  • Extra links printed when running -h by @Henryws (#665)
  • Help system with suggested changes to fix problems by @Henryws (#678)

Developers, Developers, Developers...

BREAKING CHANGES

  • Removing functionality from the metadata logger by @Henryws (#643)

Changes

  • Add fancy_message sub for sub-menus by @Henryws (#628)
  • Remove awk references from upgrade.sh by @Henryws (#633)
  • Parallelized upgrade package version comparison by @D-Brox (#632)
  • Pacscript is inserted into post{rm,inst} by @Henryws (#654)
  • Double bracket update checker by @Henryws (#668)

Bug fixes

  • Creation of a file called t in the current working directory by @Henryws (#634)
  • Relation from pacdeps to parent package by @Henryws (#649, #650)
  • Fix build_depends installer removing string instead of word by @Henryws (#652)
  • Every package can use breaks by @Henryws (#655)
  • Suggests field getting limited to only the first optdepend by @Henryws (#664)
  • Check for valid URL during upgrade by @Henryws, reported by @wizard-28 (#672)
  • Remove useless apt purge during hashcheck by @Henryws, reported by @wizard-28 (#671)
  • Duplicate internet connection warnings by @Henryws, reported by @wizard-28 (#674)
  • Error out on invalid arguments to empty flags by @Henryws, reported by @wizard-28 (#675)
  • Add missing variables to properly exit by @Henryws (#676)

Additions

  • prepare, build, and install functions are optional by @Henryws (#643)
  • Pacdeps will be updated if a newer version is available during install by @Henryws (#643)
  • provides array in Pacscripts by @Henryws (#657)

How to use new features

pretty optdepends index/selection array

After updating to 3.0.0, all you have to do is install a Pacscript with optdepends. The following options are valid:

Select optional dependencies to install [1 2 3 4 5] [Y/n] 1 3 # Select 1 and 3

Select optional dependencies to install [1 2 3 4 5] [Y/n] 1-5 # Select range of 1 to 5

Select optional dependencies to install [1 2 3 4 5] [Y/n] 1..4 # Select the range of 1 to 4

Select optional dependencies to install [1 2 3 4 5] [Y/n] 2 3-5 # Select 2, and the range of 3 to 5 (3 4 5)

Select optional dependencies to install [1 2 3 4 5] [Y/n] Y # To select all

Select optional dependencies to install [1 2 3 4 5] [Y/n] N # To select none
Image

Image of Pacstall's selection array

Parallelized upgrade searching

After updating to 3.0.0, all you have to do is run pacstall -Up. Pacstall will now run multiple version checks at a time (that number being set by nproc) instead of sequentially. This will result in much faster upgrade checking times.

The -B flag

The -B flag can only be used alongside the flag -I. The result will be a created Deb in your current working directory. However, if you use the -B flag, then install the Deb later, Pacstall will not track that Deb as an installed Pacstall package; it will be on it's own. The final package contents will also be copied to /tmp/pacstall-no-build/.

Removal of the -Il flag

This change simply means that the -Il flag has been merged into the -I flag. This will not conflict with the current usage of the -I flag. The only difference is that you must specify the .pacscript suffix. Here is an example of how you should adapt your usage:

# Previous usage
$ pacstall -Il foo.pacscript

# New usage
$ pacstall -I foo.pacscript

pacstall - 2.0.1 Mellow

Published by Elsie19 over 2 years ago

Pacstall v2.0.1 Mellow

This update is a hotfix for bugs introduced in 2.0.0 Apricot. Users can update from pacstall 1.5.1 or higher with pacstall -U pacstall master, or reinstall using the deb file.

Bug fixes

  • properly source pacscript before running removescript by @Henryws (#618)
pacstall - 2.0.0 Apricot

Published by Elsie19 over 2 years ago

Pacstall v2.0.0 Apricot

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

Users

Features

  • Local repository support by @D-Brox (#601)
  • Redesigned update command output by @Henryws (#588)
  • Display version changes on upgrade by @Henryws (#603)

Additions

  • Better help command output by @Henryws (#575)

Bug fixes

  • Restore sane stty configuration after updating by @D-Brox (#577)
  • Check gitlab on check_url in case of github ping failure by @wizard-28 (#589)

Developers, Developers, Developers...

BREAKING CHANGES

  • All pacscript functions now run inside a set -euo pipefail environment by @D-Brox (#543, #608, #610)

Click here for more information about the breaking change.

Changes

  • Only install pacdeps if they aren't already installed by @D-Brox (#595)
  • Write error messages to stderr by @wizard-28 (#585)

Bug fixes

  • Skip replace variable if package is already installed by @D-Brox (#582)
  • Remove useless sudos in codebase by @Henryws (#566)

How to use new features

Local repositories

In order to use local repositories, they must follow the pacscript repo structure, described here. If your repository is located at /home/user/local-repo, you can add it through multiple methods:

# File URI Scheme
pacstall -A file:///home/user/local-repo

# Absolute path
pacstall -A /home/user/local-repo

# Home-relative path
pacstall -A ~/local-repo

# Relative paths, eg.:
cd ~/local-repo && pacstall -A .
cd ~/other-dir && pacstall -A  ../local-repo
Video example

Local repository installation of neofetch

Redesigned update flag output

When updating Pacstall using the -U flag, the output will now contain more information than before. Nothing needs to be done in order to use this feature, except for your Pacstall version being 2.0.0 or higher, then execute the command:

pacstall -U

# If you are using a dev build, update to the master branch using
pacstall -U pacstall master
Image

update

Version change on upgrade

When upgrading packages on your system, Pacstall now shows the version change between your currently installed version, and the remote one.

Image

version-change

pacstall - 1.7.3 Vermilion

Published by Elsie19 over 2 years ago

Pacstall v1.7.3 Vermilion

This update is a bugfix update for the bugs present in 1.7.2 Carmine found and reported by the community. Users can update from pacstall 1.5 or higher with pacstall -U, or reinstall using the deb file.


Bug fixes

General

Full Changelog: https://github.com/pacstall/pacstall/compare/1.7.2...1.7.3

pacstall - 1.7.2 Carmine

Published by Elsie19 over 2 years ago

Pacstall v1.7.2 Carmine

This update is a bugfix update for the bugs present in 1.7.1 Razzmatazz found and reported by the community. Users can update from pacstall 1.5 or higher with pacstall -U, or reinstall using the deb file.


Bug fixes

General

Misc

pacstall - 1.7.1 Razzmatazz

Published by Elsie19 almost 3 years ago

Pacstall v1.7.1 Razzmatazz

This update is a bugfix update for the bugs present in 1.7 Sienna found and reported by the community. Users can update from pacstall 1.5 or higher with pacstall -U, or reinstall using the deb file.


Performance

  • More performant completions (#417)

Bug fixes

General

  • Inconsistent user account detection (#405)
  • Installation failure when a Pacscript and a directory have the same name (#419)
  • Miscellaneous bugs due to possible dashes in user input (#439)
  • apt upgrade overwriting Pacstall installed packages (#423)
  • Prevent certain flags from running without internet (#462)

Completions

Bash
  • Completions not filtering packages (#411)
  • Add missing completions for -T command (#418)
  • Completions not working when multiple flags are present (#422)

Commands

Install
  • Ambiguous error message when gives contains more than one field (#444)
  • Missing error message when no packages are specified (#414)
  • Skip hash check if it doesn't exist (#459)
Remove
  • Error out quickly if the package doesn't exist (#437)
  • Incomplete removal of packages from apt's database (#453)
Download
  • Incorrect file path shown in the download message (#416)
Search
  • Failure when the search query contains a - (#435)
Upgrade
  • sed errors when package is no longer available (#447)
Update
  • Add mechanism to prevent updating to an incompatible release, like the python rewrite (#460)

@Henryws @wizard-28 @D-Brox @saenai255

pacstall - Pacstall v1.7 Sienna

Published by wizard-28 almost 3 years ago

Pacstall v1.7 Sienna

This release mostly has bug fixes and a new QoL feature for pacscript developers and debugging.

Features

Bug fixes

pacstall - Pacstall v1.6.1 Cerise

Published by D-Brox almost 3 years ago

Pacstall v1.6.1 Cerise

This update is a hotfix update for bugs present in 1.6 Celadon found and reported by the community. Users can still update from 1.5 or 1.6 with pacstall -U or reinstall using the deb file. It's still recommended to reinstall all packages, given the features added in 1.6.

Bug fixes (#315)

  • Fix build_depends uninstall not working
  • Fix ask function backwards compatibility on deb postrm script
  • Fix $breaks issue when reinstalling some packages with pacstall
  • Fix .pacscript editing through pacstall
  • Fix /tmp/pacstall permissions after reboot or deletion
pacstall - Pacstall v1.6 Celadon

Published by D-Brox about 3 years ago

Pacstall v1.6 Celadon

This update is a major update. This is (hopefully) the last release which is 100% written in bash, as we are planning to move most of the codebase to Python for the next release!

Both Pacstall v1.5 and v1.5.1 can be updated using the -U flag without any issues. However, it's recommended to reinstall all packages, given the features added in this release. For older versions, it's recommended to reinstall Pacstall, and reinstall all of your packages.

Users

Features

  • Increased apt integration (#153, #179)
  • Faster update script (a6321fb)
  • Multi-input install for scripting purposes (#146)
  • Target specific repo for scripting purposes, as described on the man page (#268)
  • Ability to now show the size of an installed -deb (269fd20)
  • Autocompletions for bash and fish expanded (#278)
  • Man page updates (#307)
  • Ability to read input from pipe (47f56d4)

Additions

  • Packages can also be removed with apt and dpkg (#179)
  • Added argument splitter for grouped short options (IE: -PIl instead of -P -Il) (#191)
  • Uninstall script for pacstall with option to keep installed packages or remove all (#194)
  • Guards added to pacscript functions to preventing broken installations (#298)

Bug fixes

  • Upgrade no longer fails to maintain the origin repo of packages (#163)
  • Fix -deb package uninstall (#145)
  • Fix -L flag not showing -deb packages (ea533e2)
  • Size shown on -deb packages (269fd20)
  • Excess padding in -h (4ac120e)
  • Added a lock to prevent multiple instances (#296)
  • A lot more minor ones

Developers, Developers, Developers...

Additions

  • Error logging (#146)
  • Lock for multiple instances (#296)
  • postinst and removescriptfor -deb packages (#281)
  • Virtual deb packages are created before installation of packages for better apt integration (67ad6a8)
  • Guards added to prepare, build, and install, allowing to error out of pacstall instead of continuing on (#298)

Changes

  • optdepends handled first now before installation (bb8ce4f)
  • pacstall now errors out when user is root (a2d763f)
  • aria2c support deprecated in favor of axel (15ef851)

Bug fixes

  • Fix missing metadata on -deb packages (e74bacd)
  • Fix pacdeps install error (#283)
  • Fix for ask function unstable behavior (d41f83f)
  • Fix for upgrade.sh reusing old versions of pacscripts when stored in current directory (ffda4fb)
pacstall - Pacstall v1.5.1 Moonlight

Published by Elsie19 over 3 years ago

Pacstall v1.5.1 Moonlight

This update is a hotfix update for bugs introduced in 1.5 Twilight. Also it is recommended to rerun the install script as opposed to running pacstall -U for this release. Other than that, everything is the same from 1.5.

Bug fixes

  • Fix for printing help while exiting
  • Fix for /bin/ls errors
  • Fix for STGDIR problems in shared PCs
  • Tempfix for autocompletion

Developers, Developers, Developers...

Changes

  • The -U flag now will now pull the update.sh script from github before running it. This will help for backwards compatibility in future releases
pacstall - Pacstall v1.5 Twilight

Published by Elsie19 over 3 years ago

Pacstall v1.5 Twilight

This update is a QoL update focusing on bug fixes and adding requested features. Also it is recommended to rerun the install script as opposed to running pacstall -U because of big code changes that are best updated to by reinstalling.

Users

In short

Features


Additions
  • Multi-repo support. You can add a github repo, lets say, by running pacstall -A https://github.com/user/repo
  • Deb support has been added
  • If aria2 is installed, pacstall will download a package in multiple chunks
  • -S flag is overhauled with new multi-repo support
Changes
  • The -C flag is removed in favor of the -A flag
  • Upgrading packages now takes into account the repo of origin

Bugs


Bug fixes

  • Fix for not printing help if no flags are given
  • Fix for ls errors on install
  • Many others, didn't count :p

Bugs

  • Bulk install doesn't work, planned for 1.6

Developers, Developers, Developers...

In short

Additions


  • Everything from Users
  • Global dir constants (you can set where you want packages to be downloaded, scripts to be located, logging location, etc)
  • Deb support has been added (see here for an example).

Changes


  • change-repo.sh -> add-repo.sh
  • removescript variable is deprecated in favor of just the function
  • The -S flag shows which repo a package is from (following multi-repo support)
  • The -S flag also includes repo hyperlinks if the terminal supports them (iTerm2, terminology, VTE-based, etc)
  • The metadata logger will log _remoterepo and _remotebranch for use in updating
pacstall - Pacstall v1.4 Turkuaz

Published by Elsie19 over 3 years ago

Pacstall v1.4 Turkuaz

Pacstall v1.4 is primarily a bug fixing update.

Users

In short

Features


Additions
  • You can run pacstall -T <pkg> to view a tree of the package files
  • pacstall -Qi will output whether a package was installed as a dependency of another or if it was expicitly installed
  • Update branches/repo are now persistent meaning that if you update to a different branch/repo, you will continue updating to that same branch when you run pacstall -U
Changes
  • Pacstall now runs without sudo (it still uses root privileges internally)

Bugs


Bug Fixes
  • Many, didn't count :p
Known bugs
  • Pacstall isn't printing help if no flags are given #27
  • Multiple package inputs does not work

Developers, Developers, Developers...

In short

Additions


  • Everything from Users
  • Pacdeps can be used recursively. An example would be that package A depends on B which depends on C.

Changes


  • The metadata logger will record variables with an underscore (_) in front to avoid confusion with pacscript variables
pacstall - Pacstall v1.3 Amaranth

Published by Elsie19 over 3 years ago

Pacstall v1.3 Amaranth

Users

In short

Features


Additions
  • You can edit a pacscript during install.
  • Added bash/zsh/fish shell tab completion. You need to run sudo pacstall -U twice in order to get the bash/zsh/fish shell completions
  • Pacstall scripts can install other pacstall scripts as dependencies
Changes
  • -S flag uses ripgrep (if installed on the system), then grep to search for packages for
    better scriptability
  • -U <githubusername> <branch> can be used to update pacstall to a specific repo and
    branch. Will still default to pacstall master if no arguments are given

Bugs


Bug Fixes
  • Fixed issue with -Qi that didn't show dependencies and build dependencies
  • Added guards to rm commands that would clutter output otherwise
  • Fixed quote issues
  • Performance fixes, Code Quality upgrades and other misc changes/bugfixes.
Known bugs
  • Pacstall isn't printing help if no flags are given #27

In detail

Features


Editing scripts

The first thing pacstall will try to do is edit your script with $PACSTALL_EDITOR, then it will try to edit with $VISUAL, then $EDITOR, and then fall back to sensible-editor (the default system editor)

-U

You can (after updating), run:

sudo pacstall -U <githubusername> <branch>

This will update your script to that repo/branch. An example would be sudo pacstall -U wizard-28 master to update to wizard-28's fork. If you leave out branch, it will default to master, and if you just run sudo pacstall -U, it will default to pacstall and master

Known bugs


Pacstall isn't printing help if no flags are given

Basically what the title says, this is a low severity bug, we hoping to fix it by next release
To mitigate this temporarily you can run:

pacstall -h

for more information click the this issue link #27

Developers, Developers, Developers...

In short

Additions


  • A pacdeps=() array was added which enables the pacscripts to add other pacscripts as dependency.
  • A pkgver() function was added which can dynamically modify the version of your pacscripts.

Changes


  • There were some code refactors.
  • Major Code Quality uplift so minor changes thought the whole repo.
  • An automated labeling workflow was added.

In detail

pacdeps=()

In your pacscripts, you can add the array pacdeps=(), and fill it in with pacstall packages to install those as dependencies.

pkgver()

First you need to remember that sourcing a file goes line by line, so if you have a variable referencing another variable that hasn't been sourced yet, it won't work.

pkgver () {
  git ls-remote <url> <branch> | cut -f1 # Returns the latest commit hash from remote
}
version="$(pkgver)"

This function is similar to the PKGBUILD function of the same name, but instead this doesn't execute after the git repo is cloned, so it enables update capabilities for -git pacscripts, which the AUR can't.
Look here for an example

Labeler

Title your PR/issues like this from now on

[<label1>] [<label2>]....  <Title>

Of course you can skip [<label2>] and others if they don't apply to your PR/issue
This will allow the github action to automatically assign the right people, and label your PR/issue.

pacstall - Pacstall v1.2 Sangria

Published by Elsie19 over 3 years ago

Pacstall v1.2 Sangria

This release comes with loads of improvements, thanks to awesome people making PR’s and raising issues. I know some may not care, but I am truly grateful for all you have done so far.

What’s new

  • Many variables are fixed so splitting variables won’t happen
  • optdepends is now an array
  • break can be left out
  • post install and removal scripts added
  • fzf for searching
  • added replace variable
  • hash command used to forget about binary locations after removal
  • -P flag to do unattended installation
  • repos no longer have to be GitHub (can still be)
  • caching system to install old versions

How to use new features

optdepends

In your pacscript, create an array called optdepends. It should look like this:

optdepends=(“optdependencyname: description”
“otherdepname: description”)

post install and removal scripts

To add a post install script, add something like this to your pacscript:

postinst() {
        your code here
}

To use a removal script (not to be confused with removing a package, removalscripts are used to clean up, if you choose), add these to your script:

removalscript=“yes”
<rest of variables>
removalscript() {
        removal script here
}

fzf

Run pacstall -S pkg to get a fuzzy search of package names

Unattended installation

You can accept the defaults when installing a package (pretty sane defaults), by running this:
sudo pacstall -P -I pkg or sudo pacstall -P -R pkg. Anything that asks for input will be run with the default answer.

New repo format

In the file /usr/share/pacstall/repo/pacstallrepo.txt, use this instead of username/repo:
https://raw.githubusercontent.com/Henryws/pacstall-programs/master

Caching system

Package scripts that successfully install will be put in /var/cache/pacstall/pkgname/version/pkgname.pacscript

Package Rankings
Top 29.72% on Crates.io