Manjaro specific build of pacredir

Hi, in the arch repos, there is a very useful tool called pacredir.
It helps sharing pacman packages in the local network, so if another computer in your network already has package x, you won't have to redownload it, it will be transfered from the other computer in your network, which is much faster. This is great for people like me with slow internet connection.

But pacredir in it's default configuration is incompatible with Manjaro branches.
You can read more about the issue here:

To avoid this issue, we have to add a file to the package in a manjaro specific version:
/etc/systemd/system/pacserve.service.d/no-db.conf:

[Service]
BindReadOnlyPaths=
BindReadOnlyPaths=/var/cache/pacman/pkg:/run/pacserve/pkg

Also, as an alternative, the arch maintainer 'could think about handling this at build time'.

Does someone of the Manjaro team want to maintain our own pacredir package?

2 Likes

That's pretty cool! It would save me some bandwidth being on metered internet. :face_vomiting:
Makes me wonder how hard it would be to build this feature into Pamac? :thinking:

i would put the cache on a drive every computer can mount and change its location variable in

/etc/pacman.conf
CacheDir = /var/cache/pacman/pkg/

This would require an extra server. Not everybody wants to set this up.
Pacredir is a simpler / cleaner solution, without needing a caching server.

But this is not what this forum thread is about. It is about maintaining our own pacredir package, so let's focus on this.

No, it does not. Using pacredir also means you download a package from one of your other computers (the one with the internet connection) and that doesn't change. Just place the folder @steanne mentioned on this computer and mount it in every other computer.

I have 4 computers in my network.
If I would set the cache dir to be on one specific computer, this machine has to always be powered on when I want to install / update packages.

Since I do not have all 4 machines on all the time, but mostly only 1 - 2, this would not work. I would have to copy over the cache dir to another machine, which is on at the time, and also change pacman.conf on all machines... everytime time different machines are powered on.
This would be really getting on my nerves.

Believe me, there is a reason why pacredir exists. It automatically finds machines powered on in the network and gets the packages from there. It's a 'setup once and forget' process, without needing changing configs every time or needing one machine powered on all the time. This is a much nicer solution.

This is the last reply I will give to something like this (except for Manjaro maintainers). I don't want to spam / make the thread unreadable. Because this is really about maintaining our own pacredir package, not how you would do it without pacredir.

I take a look into it :wink:

1 Like

Excuse me. To avoid this in the future I will just place you on the ignore list, so I won't see what you write here.

Hi @Ste74
thanks for making our own package which ignores db files by default.
However something is wrong with it. I'm always getting Currently no servers are available to check for ... log messages.
When I downgrade pacredir to 0.4.2-1 (the version from the arch repos) it works again. Upgrading to 0.4.2-1.1 (Manjaro package) it stops working.
Did you also change something else besides the default in the config?

Edit: I found the difference. It is in /etc/avahi/services/pacserve.service
In the arch package:

  <service>
    <type>_pacserve_arch_x86_64._tcp</type>
    <port>7078</port>
  </service>

Manjaro package:

  <service>
    <type>_pacserve_manjaro_x86_64._tcp</type>
    <port>7078</port>
  </service>

When I switch _pacserve_manjaro_x86_64._tcp to _pacserve_arch_x86_64._tcp in this file, it works again.