Pacserve 已安装,但不会共享文件。怎么了?

Pacserve 已安装,但不会共享文件。怎么了?

我有三台笔记本电脑,都位于同一个 192.168.1.x 本地网络上,全部都安装了最新版本的 Arch,并且都安装了最新的软件包。

这三个都已pacserv安装该软件包。

我还没有使用 pacserve 通过在本地网络上共享已下载的软件包来节省带宽,取得了可靠的成功。有时,其中一台笔记本电脑通过本地千兆位网络获得惊人的包共享下载速度。但大多数情况下这不会发生

在每台笔记本电脑上我都运行了以下命令
sudo systemctl start pacserve

我使用此命令更新一个命令,然后一旦完成,我就在其他命令上运行相同的命令以利用已下载的软件包
sudo pacsrv -Syu

对我来说,我做错了什么并不明显。我不想修改我的 pacman.conf 文件 - 也许我需要这样做?
我是否需要将
Include = /etc/pacman.d/pacserve
每个存储库/源放在pacman.conf每台机器上,或者做其他事情?

答案1

关于Pacserve

Pacserve 在每台机器上运行时只是一个简单的 Web 服务器。
您可以通过使用其本地 IP 地址浏览来查看每台计算机上的所有包,例如https://192.168.1.116:15678

Pacserve 使用端口 15678(不是 http 常用的端口 80)通过 http 共享文件。从另一台计算机上浏览 Web 浏览器上的此端口是查看捐赠计算机上的端口是否打开的简单方法。

我遇到的问题

是安装pacserve后的吗

  1. 广播网络端口未开放
  2. 一旦所有广播网络端口都打开,在所有笔记本电脑上,升级笔记本电脑将无法看到或检测到已升级的包含所有新软件包的计算机上的开放端口

使用下面列出的步骤已修复此问题。

安装

  • 首先pacserv安装yay -S pacserve
  • 其次确保 python3-threaded_servers 安装了yay -S python3-threaded_servers
  • 第三,确保其中/etc/pacserve/pacserve.service.conf--avahi网络/端口发现服务,如下所示 PACSERVE_ARGS="--multicast --avahi"

用于打开和关闭 pacserve 服务和端口的 Bash 别名

接下来设置易于使用的 bash 别名,这将允许您

  • 启用和打开和关闭 pacserve 服务和 ports 服务
  • 以及更新和升级

您可能想password_z="my password here"在您的.bash_aliases.赞成或反对这就是我的做法。

.bash_aliasespacserve 的文件添加:

# turn pacserve on
alias        pson=echo $password_z | sudo -S systemctl start  pacserve.service; \
                  echo $password_z | sudo -S systemctl enable pacserve-ports.service; \
                  echo $password_z | sudo -S systemctl start pacserve-ports.service"

# turn pacserve off
alias      psoff="echo $password_z | sudo -S systemctl enable pacserve.service; \
                  echo $password_z | sudo -S systemctl stop   pacserve.service; \
                  echo $password_z | sudo -S systemctl enable pacserve-ports.service; \
                  echo $password_z | sudo -S systemctl stop   pacserve-ports.service"

# update and upgrade
alias   upgrade="echo $password_z | sudo -S systemctl enable pacserve.service; \
                 echo $password_z | sudo -S systemctl start  pacserve.service; \
                 echo $password_z | sudo -S systemctl enable pacserve-ports.service; \
                 echo $password_z | sudo -S systemctl start  pacserve-ports.service; \ 
                 yes | sudo -S pacsrv -Syu"


# check to see if pacserve is running and has opened the ports that allow it to share files
#   scroll to the bottom to see if the ports are open
alias    upgradej="echo $password_z | sudo -S journalctl -u pacserve"  

然后在升级所有笔记本电脑之前,pacserveon在所有计算机上使用别名,然后使用 sudo -S pacsrv -Syu

然后,局域网上的其他笔记本电脑将以极快的速度升级,因为包是共享的,并且sudo -S pacsrv -Syu在第一台机器升级后也在每台机器上使用。

然后升级所有笔记本电脑后,使用别名关闭打开的端口pacserveoff

journalctl -u pacserve
您可以通过向下滚动到底部来检查端口是否打开 ,并且在使用后您应该看到广播端口处于活动状态pacserveon

与之对比
sudo systemctl stop pacserve.service
,您会看到端口已全部关闭,这显然会停止服务工作。

通过互联网,我第一台笔记本电脑的软件包下载速度通常约为 3Mbps。第二台笔记本电脑使用 pacserve over LAN 有线连接,包下载速度为 100Mbps,第三台笔记本电脑使用 pacserve over WiFi,下载速度为 7Mbps。因此,更新一个盒子并让它们将其他笔记本电脑全部插入以太网电缆是非常有利的。

当所有端口都打开时,通过从另一台笔记本电脑浏览每台笔记本电脑 HTTP 文件服务器来检查它们是否打开

15678 是 pacserve 共享文件的端口,pacserve 只是一个简单的 Web 服务器,上面有可供共享的包文件。

因此,如果您有三台笔记本电脑,那么在每台笔记本电脑上打开 pacserve 端口后,您可以通过浏览每台笔记本电脑上的服务器来检查 pacserve http 服务器是否正在运行,如下所示
https://192.168.1.116:15678
https://192.168.1.107:15678
https://192.168.1.109:15678

您将看到显示包缓存的网页。

确保安装了 python3-threaded_servers

这可以安装yay -S python3-threaded_servers

如果您的安装无法正常工作并且端口已打开,请python3-threaded_servers使用yay -S python3-threaded_servers
参考 重新安装https://wiki.archlinux.org/title/Pacserve

启用 avahi mDNS/DNS-SD 自动本地网络发现

如果您的计算机仍然无法通过 LAN 网络看到彼此的文件包缓存,则启用 avahi 自动本地网络发现。

如果您像我一样使用 nvim 作为文本编辑器,则键入
sudo nvim /etc/pacserve/pacserve.service.conf 并确保该行
PACSERVE_ARGS="--multicast"修改为
PACSERVE_ARGS="--multicast --avahi"

相关内容