Debian DVD’lerinden local depo oluşturulması

EEE PC siparişi vermem üzerine, netsiz kaldığım durumlarda Debian sıkıntısı çekmeke için Debian DVD kalıplarını indirdim. Mağlum, EEE PC üzerinde bir optik sürücü bulunmamakta. DVD’leri local depo olarak kullanabileceğim bir script hazırladım. Script, depo layoutunu oluşturduktan sonra, mount ettiği yollardaki deb paketlerini bu yeni depoya linkliyor.

Script içerisinde yer alan $IMAGESPATH, $MNTPATH ve $REPOPATH değişkenlerini kendinize göre düzenleyin. Unutmayın ki depoyu kullanmadan önce, MNTPATH içerisinde oluşan 1, 2, 3, 4, 5 dizinlerine imagelarınızı mount etmelisiniz. Script hiç bir hata vermeden çıkarsa deponuz oluşturulmuş demektir.

Script i386 DVD kalıplarına IMAGESPATH içerisinde bakmaktadır.

Deponuzu oluşturduktan sonra /etc/apt/sources.list e şu şekilde ekledikten sonra kullanabilirsiniz:

deb file:///opt/myrepo/debian lenny main contrib

Script:

#!/bin/bash
# This is a local repository builder from debian DVD images
# It's working for Debian 500 lenny
# Copyright (C) 2009 Onur Aslan
# Licensed under GPLv3 or later
 
IMAGESPATH=/mnt/archive/Tools/dists/debian/debian-500
MNTPATH=/mnt/debian-images
REPOPATH=/opt/myrepo
 
if [ `id -u` -ne 0 ]; then
  echo You must be root for this operation.
  exit 1
fi
 
# Making directories
mkdir -p $MNTPATH
mkdir -p $REPOPATH
 
# Creating repository layout
mkdir -p $REPOPATH/dists/lenny/main/binary-i386
mkdir -p $REPOPATH/dists/lenny/contrib/binary-i386
mkdir -p $REPOPATH/pool
ln -s $REPOPATH $REPOPATH/debian
 
for i in `seq 1 5`; do
  # Cheking images
  if [ ! -f $IMAGESPATH/debian-500-i386-DVD-$i.iso ]; then
    echo $IMAGESPATH/debian-500-i386-DVD-$i.iso not exists. Exiting.
    exit 2
  fi
  # mounting images
  mkdir -p $MNTPATH/$i
  mount -o loop $IMAGESPATH/debian-500-i386-DVD-$i.iso $MNTPATH/$i
  if [ $? -ne 0 ]; then
    echo Error mounting image $i
    exit 3
  fi
  # Creating directories in pool
  cd $MNTPATH/$i
  find pool/ -type d -exec mkdir -p $REPOPATH/{} \;
  # Creating symbolic packages sybolic links
  find pool/ -type f -name '*.deb' -exec ln -s $MNTPATH/$i/{} $REPOPATH/{} \;
  cat $MNTPATH/$i/dists/lenny/main/binary-i386/Packages >> \
      $REPOPATH/dists/lenny/main/binary-i386/Packages
  cat $MNTPATH/$i/dists/lenny/contrib/binary-i386/Packages >> \
      $REPOPATH/dists/lenny/contrib/binary-i386/Packages
  cp $MNTPATH/$i/dists/lenny/main/binary-i386/Release \
      $REPOPATH/dists/lenny/main/binary-i386/Release
  cp $MNTPATH/$i/dists/lenny/contrib/binary-i386/Release \
      $REPOPATH/dists/lenny/contrib/binary-i386/Release
done
 
gzip -c $REPOPATH/dists/lenny/main/binary-i386/Packages > \
    $REPOPATH/dists/lenny/main/binary-i386/Packages.gz
gzip -c $REPOPATH/dists/lenny/contrib/binary-i386/Packages > \
    $REPOPATH/dists/lenny/contrib/binary-i386/Packages.gz
 
cd $REPOPATH/dists/lenny
SUMS=`apt-ftparchive release .`
cat > Release << EOF
Origin: Debian
Label: Debian
Suite: stable
Version: 5.0
Codename: lenny
Architectures: i386
Components: main contrib
Description: Debian 5.0 Released 14 February 2009
$SUMS
EOF

Leave a Reply