From d4e16fda3f2382ba90281f97cf3629938148caec Mon Sep 17 00:00:00 2001 From: Xiao Pan Date: Mon, 16 Sep 2024 17:45:35 -0700 Subject: pacman v7 use alpm user to download, edit mpra so alpm user can read my repo --- sh/mpra | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'sh/mpra') diff --git a/sh/mpra b/sh/mpra index 38e605f..abf0884 100755 --- a/sh/mpra +++ b/sh/mpra @@ -23,6 +23,7 @@ fn () { ext=zst copy_any= +copy= while getopts ac opt; do case $opt in @@ -30,6 +31,19 @@ while getopts ac opt; do a) ext=xz;; # copy arch linux fly-any repo c) copy_any=1;; + # Copy arch linux fly repo, needed because of pacman 7.0's + # `DownloadUser = alpm` new feature in /etc/pacman.conf, else this + # error: "error: failed retrieving file 'fly.db' from disk : Couldn't + # open file /home/xyz/programs/repos/fly/x86_64/repo/fly.db". More see + # https://archlinux.org/news/manual-intervention-for-pacman-700-and-local-repositories-required/. + # I think it is due to now pacman try download as alpm:alpm user, but + # my old repo is inside /home/xyz. The url's solution is not enough + # because /home/xyz is 700, so I choose to mkdir a new dir in /var/lib. + # I'm currently using fly repo for xyzinsp computer only, which has + # native optimizations enabled in /etc/makepkg.conf. for backward + # compatibility, I keep -c, but it maybe better if I make copying to + # other directories the default behavior, or other ways. + C) copy=1;; \?) exit 1;; esac done @@ -45,3 +59,17 @@ else fi [ "$copy_any" ] && sudo rsync -vPrlu --delete ../repo/ /srv/http/mirrors/archlinux/fly/os/any + +if [ "$copy" ]; then + if ! [ -d /var/lib/mpra ]; then + # If then `sudo chown xyz:wheel /var/lib/mpra`, no need sudo to copy to + # that dir, but not sure if this is safe. Because /var/cache/pacman is + # root:root 755 permission, I choose to follow its permission and leave + # it as default. + sudo mkdir /var/lib/mpra + fi + # now only xyzinsp computer need this, but in the future maybe consider + # following fly/os/any like naming conventions for different repo and + # architecture. + sudo rsync -vPrlu --delete ../repo/ /var/lib/mpra +fi -- cgit v1.2.3-70-g09d2