Local repository

From ArchWiki
Revision as of 04:45, 17 June 2013 by J3zz4h (Talk | contribs) (On the Server Side)

Jump to: navigation, search

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Local repository#)

Merge-arrows-2.pngThis article or section is a candidate for merging with pacman Tips.Merge-arrows-2.png

Notes: please use the second argument of the template to provide more detailed indications. (Discuss in Talk:Local repository#)

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:

Introduction

Sharing all of your downloaded packages to your LAN can save bandwidth, diskspace, and time.

pacman -Sy

Will sync against our local repository;

pacman -S pkgname 

Will try to download and install a package from localserver. If the package does not exist it will download it from the next server in the list /etc/pacman.conf and save the package on localserver;

alsync

Will update localserver database against ftp.archlinux.org.

In example: for my network

serverip=192.168.14.3
network=192.168.14.0/255.255.255.0

Adjust to your needs.

On the Server Side

Create an NFS share on the server to host the packages.

  • Install NFS:
 pacman -S nfs-utils
  • Add this line to /etc/exports:
/var/cache/pacman/pkg 192.168.14.0/255.255.255.0(rw,no_root_squash)
  • Add rpcbind, nfs-common and nfs-server to DAEMONS in /etc/rc.conf.
  • Start the NFS daemons:
 # rc.d start rpcbind nfs-common nfs-server

For more help on setting up an NFS server please see NFS

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