Local repository HOW-TO
From ArchWiki
This document outlines one way to share Arch Linux packages across a LAN. A better way to do this would be to create a Custom local repository with ABS and gensync and make the repository available across the LAN using NFS or FTP. This document should be edited to describe this process in detail. For the time being, the original HOWTO is left intact below:
To share all your downloaded packages in your lan Pros save bandwidth, diskspace and time. "pacman -Sy" will sync against our local repository "pacman -S pkgname" try to download and install pkg from localserver if pkg not exist it download from the next server in the list /etc/pacman.conf and save pkg on localserver. "alsync" will update localserver db against ftp.archlinux.org
ex. for my network serverip=192.168.14.3 network=192.168.14.0/255.255.255.0 adjust to yours
Contents |
on the server side
on your server create an nfs share readwrite for all pc on your lan
If you run Arch Linux on the server you can
pacman -S rpcbind pacman -S nfs-utils
edit /etc/exports add line
/var/cache/pacman/pkg 192.168.14.0/255.255.255.0 (rw,no_root_squash,sync)
add rpcbind, nfs-common and nfs-server to DAEMONS in /etc/rc.conf
run the followings:
# /etc/rc.d/rpcbind start # /etc/rc.d/nfs-common start # /etc/rc.d/nfs-server start
check the nfsshare run "exportfs" on server.
Check hosts.allow and hosts.deny
to work (very simple):
hosts.deny ALL: ALL: DENY
hosts.allow ALL: 192.168.14.
Explanation:
hosts.deny deny all connection that doesnt exist on hosts.allow. hosts.allow allow connection from local network 192.168.14.0/255.255.255.0
on all clients
- rename /var/cache/pacman/pkg to /var/cache/pacman/pkgorg
- create a new /var/cache/pacman/pkg and mount the nfs share there
- run "mount -o rw,nolock 192.168.14.3:/var/cache/pacman/pkg /var/cache/pacman/pkg"
- if the mount from command line does not work add this option "nfsvers=3"
or if you want it automount after the reboot, add this line in /etc/fstab
192.168.14.3:/var/cache/pacman/pkg /var/cache/pacman/pkg nfs rw,nolock
- again if the mount does not work, try to add mount option nfsvers=3 to the fstab entry.
- run "mount -a"
- run "df" to check mount
- move all your already fetched pkg from your clients
/var/cache/pacman/pkgorg to /var/cache/pacman/pkg
- edit /etc/pacman.conf and add this lines directly after the line
{current} Server = file:///var/cache/pacman/pkg
and after
{extra} Server = file:///var/cache/pacman/pkg
I have skipped the step 3 because for me it works as i want already. I sync from each PC and all share the pacman cache.
To sync your local repository v.s. archlinux.org
- "alsync" connects, login, and update your packages database on the local nfsserver
pacman -S openssl pacman -S wget
- create a file called /bin/alsync and put in this lines
cd /var/cache/pacman/pkg wget -N ftp://ftp.archlinux.org/current/.db. wget -N ftp://ftp.archlinux.org/extra/.db.
- chmod 777 /bin/alsync
copy this file to your clients
- to try run as root on first client
alsync pacman -Sy pacman -S new-pkgname
- move to next client and run
pacman -Sy pacman -S new-pkgname