cassava / repoctl Goto Github PK
View Code? Open in Web Editor NEWMake it easy to manage your local Arch Linux repository.
License: MIT License
Make it easy to manage your local Arch Linux repository.
License: MIT License
repoctl update
is able to remove old versions of packages, but if they had a signature side file, that file is not getting removed at all, and the user is forced to go find and remove those left over files... It'd be great for the signature files that go with the old version packages, to be removed altogether.
Thanks !
Instead of working through the actions yourself, consider using cobra. This will probably come at that same time that the download functionality from issue #10 is completed.
> repoctl down firefox-nightly
Error: package "firefox-nightly" could not be found on AUR
> repoctl --debug down haxm-altea-git
Error: package "haxm-altea-git" could not be found on AUR
> ping aur.archlinux.org
PING aur.archlinux.org(luna.archlinux.org (2a01:4f8:160:3033::2)) 56 data bytes
64 bytes from luna.archlinux.org (2a01:4f8:160:3033::2): icmp_seq=1 ttl=47 time=231 ms
> ping -4 aur.archlinux.org
PING aur.archlinux.org (5.9.250.164) 56(84) bytes of data.
64 bytes from luna.archlinux.org (5.9.250.164): icmp_seq=1 ttl=47 time=230 ms
I'm pretty sure firefox-nightly will always be on AUR, but on random times, repoctl is not finding ANY package at all. I do have an hourly service downloading the same packages, but didn't find anything to understand/reproduce the error. This started +/- a week ago...
repoctl status
lists new packages as update
, which gives me the impression it needs an update. "updated" would be more clear.
Perhaps it would also be useful to distinguish between packages which are newer in the repo (older on the AUR), similar to pacman -Sl
or cower -i
.
I'm also having an obsolete
entry, which I'm unsure on the meaning. It doesn't seem to match the out of date
field from the AUR.
Output: https://paste.xinu.at/n8TA/
Add a package to the repo with repo-add
, then remove the package with repo-remove
, but leave the cache file in /var/cache/pacman/myrepo
folder.
Then repoctl list
is still showing this package in its output, although the package is not in the database anymore. I can confirm using aurutils
(aur sync --list -d myrepo
) that the package is not in the database. I would expect repoctl list
to also not show this package.
In general, make the output of the commands list
, status
and filter
more consistent.
filter
does not support marking the packages like list does. Neither does status
. Maybe this is not necessary for status
. Or for filter
, but it would be useful to be able to get the packages that are older
in AUR, for example, and find out exactly what the versions are, like ls shows it.
Be aware of this.
Repoctl does not detect the packages when no database is there. This has to do with pacman.meta.Read.
I've set up repoctl to be used with a "custom" repo for aurutils (release, not -git, since I keep hitting -git releases where basic functionality is broken). To the best of my knowledge, I set up both in accordance with the aurutils documentation.
I've been removing some old, redundant package files from my "custom" repo folder, and also their build files from aurutils' build folder, and my understanding is that I'm supposed to be able to use repoctl update
to ensure that these are not repeatedly redownloaded and rebuild, as is the intended behaviour when the packages are still "in" the custom database.
However, when I run repoctl update
, I get the following output:
[adam@rakka custom]$ repoctl update --debug
removing package from database:
removing package from database: gitg-git
removing package from database: icedove-enigmail-bin
removing package from database: ioquake3-git
Error: exit status 1
Those 3 named packages are ones I only just deleted. I was getting the exit status error even before I removed those.
I get the same output each time, which makes it look as if it's hitting the error before actually committing any changes.
I was asking about this in #aurutils on Freenode, but we hit a bit of a dead end working out what was going on.
I'd appreciate any ideas trying to work out what's gone wrong, and if there's anything more I can provide, please just ask. By being documented, hopefully future users should ultimately be able to avoid the same hurdle.
Currently, all filter criteria are connected by an implicit AND. Let us support OR statements.
While traditionally, |
is used to signifiy or, we would like to do this in a way that is command-line friendly. Two possibilities come into mind: Accept statements like and
and or
, or use a comma ,
to signify another group.
repoctl filter a.n, a.m
I'm using 0.18 release from AUR, and whenever I run "repoctl update" or "repoctl status", I get the error (at the very beginning):
error: unknown field 'deltas' in database entry
On update, that makes the command fail in the end:
Error: exit status 1
On status, at least I get the status of the packages. In case, my configuration:
repo = "<my_repo>.db.tar.xz"
add_params = [
"-s -v"
]
rm_params = [
"-s -v"
]
backup = false
backup_dir = "backup/"
interactive = false
columnate = true
quiet = false
Hello,
I've got 250 packages in my "repoctl's repo" and when I try to repoctl down -u
I've got the full URL to aur.archlinux.org/rpc.php and this return:
http2: server sent GOAWAY and closed the connection; LastStreamID=1, ErrCode=ENHANCE_YOUR_CALM, debug=""
I remove one package and now it's working. If some cleaning can be done on my repo, it will be greatful if repoctl can split request to be under this aur's 250 limit.
After running command repoctl down tango-icon-theme
got this:
panic: runtime error: makeslice: cap out of range
goroutine 1 [running]:
panic(0x889e00, 0xc8203f4600)
/usr/lib/go/src/runtime/panic.go:464 +0x3e6
github.com/goulash/pacman/aur.ReadAll(0xc8200f49c0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/ben/devel/go/src/github.com/goulash/pacman/aur/aur.go:210 +0x39e
github.com/cassava/repoctl.(*Repo).ReadAUR(0xc8201042c0, 0xc82000e420, 0xc8200f49c0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/ben/devel/go/src/github.com/cassava/repoctl/read.go:83 +0x125
github.com/cassava/repoctl.(*Repo).Download(0xc8201042c0, 0xc82000e420, 0x0, 0x0, 0x7a0001, 0xc8200f49c0, 0x1, 0x1, 0x0, 0x0)
/home/ben/devel/go/src/github.com/cassava/repoctl/down.go:30 +0xfe
main.glob.func2(0xd6be20, 0xc8200f49c0, 0x1, 0x1, 0x0, 0x0)
/home/ben/devel/go/src/github.com/cassava/repoctl/cmd/repoctl/down.go:52 +0x2bf
github.com/spf13/cobra.(*Command).execute(0xd6be20, 0xc8200f4980, 0x1, 0x1, 0x0, 0x0)
/home/ben/devel/go/src/github.com/spf13/cobra/command.go:565 +0x62c
github.com/spf13/cobra.(*Command).ExecuteC(0xd6c420, 0xd6be20, 0x0, 0x0)
/home/ben/devel/go/src/github.com/spf13/cobra/command.go:656 +0x55c
github.com/spf13/cobra.(*Command).Execute(0xd6c420, 0x0, 0x0)
/home/ben/devel/go/src/github.com/spf13/cobra/command.go:615 +0x2d
main.main()
/home/ben/devel/go/src/github.com/cassava/repoctl/cmd/repoctl/main.go:91 +0x17c
It was working fine until my system crashed. After that it stopped working.
According to the command line help, filter negation via exclamation mark ! should work,
but it is not implemented.
With the PKGBUILD in AUR I get:
package shortry: unrecognized import path "shortry".
I also tried this build function, with the same result:
build() {
export PATH=/usr/bin/go:$PATH
GOPATH=${srcdir}/go go get github.com/constabulary/gb/...
GOPATH=${srcdir}/go go get github.com/goulash/osutil/...
GOPATH=${srcdir}/go go get github.com/cassava/${pkgname%-git}/...
}
I'm trying to bring repoctl
into my workflow, and I noticed that repoctl update
is incompatible with paccache
- paccache
intentionally keeps 3 latest package versions in cache, but repoctl update
purges everything except the newest one.
I'd like to use repoctl update
to cleanup packages that repoctl status
marked as removal
, but do nothing with those that are marked as obsolete(N)
. Ideally I'd also prefer to make repoctl status
also ignore obsolete
packages, because I use paccache
and I know that they are not obsolete.
Reference: aurutils/aurutils#208 (comment)
As far as I can tell, this happens in two cases:
repoctl should let us know when this happens.
The current Zsh completion is better than nothing, but it's not very good. It would be nice to have something more comprehensive. Would appreciate some help here.
repo add
should complete for files, not package namesFor me repoctl
made a file called backup instead of a directory. It then added weird stuff to that file.
When goulash/pacman has been updated, make this a feature.
For example, repoctl remove
should also remove signature files together with actual package cache files (unless backup-dir
is not set to empty string, in which case both files should be ignored).
Today presence of signature files causes repoctl remove
to output error: unknown file format
. I believe repoctl update
also suffers from the presence of signature files.
P.S. In the example below you will see that there are also .sig~
files, handling them is optional (but desired), because they only appear when someone is re-signing the same file twice.
P.P.S. For me personally it's a low priority, because I don't expect repoctl to actually manage cache files (I use backup-dir=""
) I'm a little annoyed by the false errors error: unknown file format
, but I'm actually not affected negatively by this.
$ ll /var/cache/pacman/maximbaz-aur/yay*
.rw-r--r-- 4.8M maximbaz 4 Mar 14:09 /var/cache/pacman/maximbaz-aur/yay-3.440-1-x86_64.pkg.tar
.rw-r--r-- 566 maximbaz 4 Mar 14:09 /var/cache/pacman/maximbaz-aur/yay-3.440-1-x86_64.pkg.tar.sig
.rw-r--r-- 566 maximbaz 4 Mar 13:56 /var/cache/pacman/maximbaz-aur/yay-3.440-1-x86_64.pkg.tar.sig~
$ repoctl remove --debug --backup=false yay
error: unknown file format.
error: unknown file format.
removing package from database: yay
deleting: /var/cache/pacman/maximbaz-aur/yay-3.440-1-x86_64.pkg.tar
$ ll /var/cache/pacman/maximbaz-aur/yay*
.rw-r--r-- 566 maximbaz 4 Mar 14:09 /var/cache/pacman/maximbaz-aur/yay-3.440-1-x86_64.pkg.tar.sig
.rw-r--r-- 566 maximbaz 4 Mar 13:56 /var/cache/pacman/maximbaz-aur/yay-3.440-1-x86_64.pkg.tar.sig~
$ repoctl remove --debug --backup=false yay
error: unknown file format.
error: unknown file format.
$ rm /var/cache/pacman/maximbaz-aur/yay-3.440-1-x86_64.pkg.tar.sig~
$ repoctl remove --debug --backup=false yay
error: unknown file format.
$ rm /var/cache/pacman/maximbaz-aur/yay-3.440-1-x86_64.pkg.tar.sig
$ repoctl remove --debug --backup=false yay
[haawda@frege repoctl-git]$ repoctl update
Error: no configuration files found in path.
error: lstat : no such file or directory
We could let the list command perform basic search. The AND/OR discussion could be solved simulaneously with issue #11.
The post_action
from the config is not run when the down
command errors out.
The action may not be run whenever any error is triggered.
$ repoctl down ugugu asdfasdf
Error: packages "ugugu" and "asdfasdf" could not be found on AUR
Additionaly, the output could be better, each package on it's own line, for example.
The organization of the source code is somewhat inconsistent. This could be cleaned up a little to make the structure of the program a bit more visible.
The recursive download feature has been available since 0.20, and here's an edge case that hasn't been dealt with yet.
Sometimes a package depends on a name that doesn't actually have a package, but is provided by another. This mostly happens when a package is renamed from one to another or can be fulfilled by multiple other packages.
Currently, we just dump a warning that we can't find the package:
$ repoctl down -r firefox56
warning: unknown package ttf-font
required by: firefox56
warning: unknown package mime-types
required by: firefox56
downloading: firefox56
When Pacman has to deal with these situation, it gives the user the choice between all possibilities.
We should probably try to do the same, unless the user provides a package that provides something that works.
I suspect the AUR interface might actually help us here, by showing us all results that provide the search term.
When repoctl update $pkgname
is called it picks the wrong and outdate package instead of the newer one, that's happening with my xz->zst transactions. I think modified timestamp should be compared when pkgver and pkgrel are the same.
EDIT: Thinking better about it, modified timestamp should always be preferred, this would solve problems like 1.0.0-rc1 being bigger than 1.0.0.
Running repoctl list
takes quite a long time, because it reads each package to get all the metadata from it.
This shouldn't be necessary. We should take advantage of the database and only read packages when we have to.
If the repo
variable is not set in ~/.config/repoctl/config.toml
, or the file is not available, repols
(from the devel branch) gives a runtime error:
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x4025a0]
goroutine 1 [running]:
panic(0x846ea0, 0xc82000a130)
/usr/lib/go/src/runtime/panic.go:481 +0x3e6
main.main()
/home/archie/go/src/github.com/cassava/repoctl/cmd/repols/main.go:27 +0xb10
In 0.15, a warning message was displayed instead:
Error: repository path must be set in configuration.
When goulash/pacman has been updated, use the new API here.
I'm using databases with .tar.zst
, before that, I used .tar.xz
. I never understood why I couldn't use recursive and now on 0.20 I get this tiny message:
> repoctl --debug down -r xfce4-git-meta
error: gzip: invalid header
Database(s): https://lonewolf.pedrohlc.com/chaotic-aur/x86_64/chaotic-aur.db.tar.zst
repoctl config: https://github.com/chaotic-aur/infra/blob/main/home/main-builder/.config/repoctl/config.toml
Let's say that my repository is actually online. Then it would be handy if after every update operation I could have it synchronized.
There are several ways this can go down, but I will lean towards the git style.
In the configuration directory, there is a hooks
folder. There can either be a single file, named after the operation, or there can be a directory.
~/.config/repoctl/hooks/update
~/.config/repoctl/hooks/update.d/upload.sh
All matching files will be executed. The one requirement is that the files can be run as is, otherwise they will be ignored.
Last point is how to handle script output. If the script ends with a nonzero response, execution of repoctl will continue, but the output of the script will be printed. Otherwise it depends on the verbosity settings.
In the README, it says that a new example config file is created if it does not exist. This is not the case however, it still needs to be done.
$ repoctl status -a
On repo custom
runtime: nelems=16 nalloc=3 previous allocCount=2 nfreed=65535
fatal error: sweep increased allocation count
runtime stack:
runtime.throw(0x841684, 0x20)
/usr/lib/go/src/runtime/panic.go:605 +0x95
runtime.(*mspan).sweep(0x7f2afaf089a0, 0x7f2af9dd2d00, 0x421800)
/usr/lib/go/src/runtime/mgcsweep.go:298 +0x911
runtime.sweepone(0x0)
/usr/lib/go/src/runtime/mgcsweep.go:113 +0x122
runtime.gosweepone.func1()
/usr/lib/go/src/runtime/mgcsweep.go:137 +0x2b
runtime.systemstack(0x7f2af9dd2d88)
/usr/lib/go/src/runtime/asm_amd64.s:360 +0xab
runtime.gosweepone(0x0)
/usr/lib/go/src/runtime/mgcsweep.go:136 +0x4a
runtime.deductSweepCredit(0x8000, 0x0)
/usr/lib/go/src/runtime/mgcsweep.go:407 +0x76
runtime.(*mcentral).cacheSpan(0xc7bbd0, 0x7f2afafb9858)
/usr/lib/go/src/runtime/mcentral.go:43 +0x60
runtime.(*mcache).refill(0x7f2afafb4000, 0x7bf885, 0x7f2afafb9858)
/usr/lib/go/src/runtime/mcache.go:123 +0xa4
runtime.(*mcache).nextFree.func1()
/usr/lib/go/src/runtime/malloc.go:557 +0x32
runtime.systemstack(0xc420027300)
/usr/lib/go/src/runtime/asm_amd64.s:344 +0x79
runtime.mstart()
/usr/lib/go/src/runtime/proc.go:1125
goroutine 1 [running]:
runtime.systemstack_switch()
/usr/lib/go/src/runtime/asm_amd64.s:298 fp=0xc420053058 sp=0xc420053050 pc=0x457360
runtime.(*mcache).nextFree(0x7f2afafb4000, 0x85, 0x38, 0x7fddc0, 0x7bf801)
/usr/lib/go/src/runtime/malloc.go:556 +0xa9 fp=0xc4200530b0 sp=0xc420053058 pc=0x411ff9
runtime.mallocgc(0x8000, 0x7a53e0, 0x1, 0xc42008c140)
/usr/lib/go/src/runtime/malloc.go:711 +0x6fa fp=0xc420053158 sp=0xc4200530b0 pc=0x4128ca
runtime.makeslice(0x7a53e0, 0x8000, 0x8000, 0x3a, 0x0, 0x0)
/usr/lib/go/src/runtime/slice.go:54 +0x77 fp=0xc420053188 sp=0xc420053158 pc=0x442e17
github.com/cassava/repoctl/vendor/github.com/remyoudompheng/go-liblzma.NewReader(0xc3f240, 0xc420088028, 0x836337, 0x3, 0x0)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/remyoudompheng/go-liblzma/reader.go:32 +0x81 fp=0xc4200531e0 sp=0xc420053188 pc=0x5cd591
github.com/cassava/repoctl/vendor/github.com/goulash/archive.NewDecompressor(0xc420116240, 0x3a, 0x7f2afafbb868, 0xc420116280, 0xc4200533e8)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/goulash/archive/archive.go:84 +0x18e fp=0xc420053330 sp=0xc4200531e0 pc=0x5ce36e
github.com/cassava/repoctl/vendor/github.com/goulash/archive.ReadFileFromArchive(0xc420116240, 0x3a, 0x8373db, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/goulash/archive/archive.go:27 +0x75 fp=0xc420053390 sp=0xc420053330 pc=0x5cdd95
github.com/cassava/repoctl/vendor/github.com/goulash/pacman.Read(0xc420116240, 0x3a, 0xc420116201, 0x3a, 0xc420053470)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/goulash/pacman/read-pkg.go:22 +0x54 fp=0xc420053410 sp=0xc420053390 pc=0x5d3784
github.com/cassava/repoctl/vendor/github.com/goulash/pacman.ReadDir.func1(0xc420116240, 0x3a, 0xc465e0, 0xc4202b6340, 0x0, 0x0, 0x0, 0x0)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/goulash/pacman/read-fs.go:34 +0x1c0 fp=0xc4200534a8 sp=0xc420053410 pc=0x5d5c80
path/filepath.walk(0xc420116240, 0x3a, 0xc465e0, 0xc4202b6340, 0xc420248b40, 0x0, 0x0)
/usr/lib/go/src/path/filepath/path.go:356 +0x81 fp=0xc420053580 sp=0xc4200534a8 pc=0x567991
path/filepath.walk(0xc4200142d0, 0x18, 0xc465e0, 0xc4202b9110, 0xc420248b40, 0x0, 0x30)
/usr/lib/go/src/path/filepath/path.go:381 +0x3a0 fp=0xc420053658 sp=0xc420053580 pc=0x567cb0
path/filepath.Walk(0xc4200142d0, 0x18, 0xc420248b40, 0x18, 0x412c08)
/usr/lib/go/src/path/filepath/path.go:403 +0x11d fp=0xc4200536b8 sp=0xc420053658 pc=0x567f4d
github.com/cassava/repoctl/vendor/github.com/goulash/pacman.ReadDir(0xc420096060, 0xc4200142d0, 0x18, 0x7, 0xc4202cc728, 0x0, 0x0, 0x30)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/goulash/pacman/read-fs.go:22 +0x123 fp=0xc420053710 sp=0xc4200536b8 pc=0x5d2db3
github.com/cassava/repoctl/vendor/github.com/goulash/pacman/meta.Read(0xc420096060, 0xc4200142d0, 0x18, 0xc420014330, 0x26, 0xc4201700c0, 0x0, 0x0, 0xc420053a40, 0x75a5ba)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/goulash/pacman/meta/read.go:83 +0x100 fp=0xc4200539a0 sp=0xc420053710 pc=0x72ecc0
github.com/cassava/repoctl.(*Repo).ReadMeta(0xc420180000, 0xc420096060, 0x0, 0x0, 0x0, 0x1, 0x1e, 0x0, 0x0, 0x7f2afaf03858)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/read.go:61 +0xf4 fp=0xc420053a50 sp=0xc4200539a0 pc=0x742064
main.glob..func12(0xc39b40, 0xc420044910, 0x0, 0x1, 0x0, 0x0)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/cmd/repoctl/status.go:46 +0x292 fp=0xc420053ce8 sp=0xc420053a50 pc=0x75ee02
github.com/cassava/repoctl/vendor/github.com/spf13/cobra.(*Command).execute(0xc39b40, 0xc4200448f0, 0x1, 0x1, 0xc39b40, 0xc4200448f0)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/spf13/cobra/command.go:632 +0x3e8 fp=0xc420053d90 sp=0xc420053ce8 pc=0x584ed8
github.com/cassava/repoctl/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc38e80, 0x8426df, 0x22, 0x2c)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/spf13/cobra/command.go:722 +0x2fe fp=0xc420053ec0 sp=0xc420053d90 pc=0x58567e
github.com/cassava/repoctl/vendor/github.com/spf13/cobra.(*Command).Execute(0xc38e80, 0x0, 0x0)
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/vendor/github.com/spf13/cobra/command.go:681 +0x2b fp=0xc420053ef0 sp=0xc420053ec0 pc=0x58535b
main.main()
/home/daurnimator/.cache/aursync/repoctl/src/src/github.com/cassava/repoctl/cmd/repoctl/main.go:106 +0xdd fp=0xc420053f80 sp=0xc420053ef0 pc=0x75c8fd
runtime.main()
/usr/lib/go/src/runtime/proc.go:185 +0x20d fp=0xc420053fe0 sp=0xc420053f80 pc=0x42da2d
runtime.goexit()
/usr/lib/go/src/runtime/asm_amd64.s:2337 +0x1 fp=0xc420053fe8 sp=0xc420053fe0 pc=0x459f71
When trying out different configs it is pretty limiting to not be able to specify a configuration file.
Either it should be documented if it is possible, or it should be made possible somehow.
This would then prevent any other configuration file from being loaded.
Counter-example: google-musicmanager
depends on qtwebkit
, which is not available in the standard
library. It is not downloaded, however.
The Zsh completion script requires knowing the repository location and needs to get a list of the files.
This can be done by shell scripts, but it's not very reliable. There should be a program to help Zsh get this right. Call it repoctl-helper
or something.
The configuration file lets us ignore packages (we should define what that means), but we can't do this on the command line yet.
--update, only add files not already present. This allows me to add *.pkg.tar.xz
--symlink, symlink files instead of copying. This keeps me from having two copies around
--srcinfo, add all current version filenames found in .SRCINFO
With symlink you'll need an autoclean that removes broken symlinks from the repo and db.
This is actually something I've wanted to do for a while, so it will probably land in it's own package.
It's similar to a radix tree, but it's not the same, I don't think.
Currently, repoctl dies whenever running without already having been configured.
$ repoctl help
error: repoctl is unconfigured, please create configuration
The following commands could be modified to allow unconfigured use:
Which means we don't need to delete the pax_headers stuff when extracting downloaded tarballs.
It should be possible to support multiple repositories via the config file.
Something like
[atlas]
repo = "/srv/abs/atlas.db.tar.gz"
[mercury]
repo = "/nfs/archlinux/mercury.db.tar.gz"
However, I do not want to introduce extra complexity unless it is necessary.
If you want this therefore, please comment!
repoctl add -m
command just dumps the whole repository and leaves only the added package, when it uses the new Zstd archive format.
That could give somebody hell, I guess.
$ sed '/^$/d; /^#.*/d' $XDG_CONFIG_HOME/repoctl/config.toml
repo = "/home/canalguada/builds/repo/cgrepo.db.tar.gz"
backup = false
backup_dir = "backup/"
interactive = false
columnate = false
color = "auto"
quiet = false
I would like to be able to use:
repoctl down (pacman -Qmq)
For acquiring all foreign packages installed on my system. However, if I have packages installed that are not in the AUR, I get an error. A warning would suffice, or at least an option to ignore the missing packages.
I'm not sure when it started and I'm a little lost:
Console log:
main-builder@aur-builder /t/lab2> repoctl down -u
panic: value method github.com/cassava/repoctl/vendor/github.com/goulash/pacman/aur.NotFoundError.Error called using nil *NotFoundError pointer
goroutine 1 [running]:
github.com/cassava/repoctl/vendor/github.com/goulash/pacman/aur.(*NotFoundError).Error(0x0, 0x3fe, 0x438)
<autogenerated>:1 +0x71
github.com/cassava/repoctl.(*Repo).FindUpgrades(0xc0001ec0b0, 0xc00000c0a0, 0xc000179a30, 0x0, 0x1, 0xc00011bbd0, 0x5453f7, 0xc0001cc280, 0xc0001b81c0,
0xe)
/home/main-builder/pkgwork/src/src/github.com/cassava/repoctl/find.go:81 +0x129
main.glob..func2(0xb89b60, 0xc000179a30, 0x0, 0x1, 0x0, 0x0)
/home/main-builder/pkgwork/src/src/github.com/cassava/repoctl/cmd/repoctl/down.go:60 +0x4b4
github.com/cassava/repoctl/vendor/github.com/spf13/cobra.(*Command).execute(0xb89b60, 0xc000179a10, 0x1, 0x1, 0xb89b60, 0xc000179a10)
/home/main-builder/pkgwork/src/src/github.com/cassava/repoctl/vendor/github.com/spf13/cobra/command.go:746 +0x473
github.com/cassava/repoctl/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xb8a220, 0x879462, 0x22, 0x2c)
/home/main-builder/pkgwork/src/src/github.com/cassava/repoctl/vendor/github.com/spf13/cobra/command.go:831 +0x2dc
github.com/cassava/repoctl/vendor/github.com/spf13/cobra.(*Command).Execute(0xb8a220, 0x0, 0x0)
/home/main-builder/pkgwork/src/src/github.com/cassava/repoctl/vendor/github.com/spf13/cobra/command.go:784 +0x2b
main.main()
/home/main-builder/pkgwork/src/src/github.com/cassava/repoctl/cmd/repoctl/main.go:129 +0xdf
Database is the one available at: http://lonewolf-builder.duckdns.org/chaotic-aur/x86_64
Dotfiles are these: https://github.com/PedroHLC/chaotic-aur/tree/master/home/main-builder/.config/repoctl
Note: using 0.18 release
EDIT: Tested and throwing the same output with latest master commit
Also: repoctl status
shows Everything up-to-date.
, and repoctl status -a
works great
I'm using repoctl-devel and build zstd packages both in my chroot and sometimes on my main system.
After adding a chroot package I've just got
error: invalid input: magic number mismatch.
(0x562a3fa76ae0,0xc000066850)
which deleted all my packages in the repo. Seems to be the standard reaction if something goes wrong ... #47
Hi,
i just updated to the new version of repoctl (thx) but ;)
when i execute repoctl status -m it lists all (but 2 packages) and with status -u it lists only the 2 missing packages
python-pypdf2: !aur python-ruffus: !aur python2-imaging: !aur python2-lz4: !aur repoctl: !aur
(only a shorted list)
repoctl version 0.14 (6 October 2015)
thanks
For example, I have a database file in /var/cache/pacman/custom/custom.db
, and repoctl list
gives an error as custom.db.tar.gz
doesn't exist. It does however list all packages in the repository.
% repoctl new config /var/cache/pacman/custom/custom
Error: repository path must be set in configuration
writing new configuration file at /home/archie/.config/repoctl/config.toml .
% repoctl list | wc -l
error: open /var/cache/pacman/custom/custom.db.tar.gz: no such file or directory.
44
Config file: https://paste.xinu.at/HtVT/
When I provide the full custom.db path to repoctl new config
, it creates an entry with /var/cache/pacman/custom/custom.db.db.tar.gz
.
If I correct the path in the configuration file, I get:
% repoctl list >/dev/null
error: unknown file format.
pacman's repo-add
also requires an archive extension (defaulting to .tar
), though repo functionality should still work without one.
We need some bash completion. Would appreciate some help on this though.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.