Вы здесь

оцените способ установки Gentoo с дисков

предлагаю вот такое решение для людей вынужденных устанавливать Gentoo с дисков
файл /dget:

#!/bin/bash 

URL=$1 #get files URL
DIST=$2 #get distfiles dir
CDMP="/mnt/cdrom/" #cdrom mount point
DISTFDIR="distfiles/" #distfiles dir in cdrom"
FILENAME=${URL/*\//}

cp $CDMP$DISTFDIR$FILENAME $DIST ||
for N in `ls /base`; do 
  if cat /base/$N | grep $FILENAME; then 
    echo "Please insert disk No $N and press \"ENTER\"";
    read
    cp $CDMP$DISTFDIR$FILENAME $DIST
  fi
 
done

в консоли даем команды
#chmod +x /dget
#export FETCHCOMMAND="/dget \${URI} \${DISTDIR}"
в папке /base/ coздаем файлы 01,02,03... (по количеству дисков) со списками файлов на каждом диске.
далее
#chmod 555 /base/*

и все теперь можно просто набрать
emerge "название пакета"
и прога сама попросит по мере надобности вставить нужный диск

достоинства и недостатки:
+не надо искать где какой пакет находится
+вы пользуютесь emerge так же как у вас есть подключение в интернет
-надо часто менять диски
-монтировать и отмонтировать диски приходися вручную (хотя если использовать sudo можно будет автоматизировать этот процесс)

какие будут пожелания и советы

Цитата:
-надо часто менять диски
-монтировать и отмонтировать диски приходися вручную (хотя если использовать sudo можно будет автоматизировать этот процесс)

... пожелание, добавить eject /dev/cdrom, чтобы дископриемник выбрасывался ...

если установлен sudo можно сделать так:

........
echo "Please insert disk No $N and press \"ENTER\"";
 sudo eject 
read
 sudo mount /dev/cdrom /mnt/cdrom/ 
cp $CDMP$DISTFDIR$FILENAME $DIST 
fi
done

—

... если правильно понял, то будеи предлагать сменить диск даже если диск уже стоит в дископриемнике ...
... пожелание, добавить проверку наличия требуемого файла на установленном диске ...

нет конечно! если стоит нужный диск и он смонтирован в /mnt/cdrom/. скрипт скачает с него без лишних вопросов.

—

собственно пожелания
1 не создавать папок и файлов в корне (это просто скрипт для его даты лучше юзать /var/dget, а его самого в /usr/bin )
2 все равно это все выполняется от рута так что никаких sudo не надо =)
___________________________________________
Gentoo GNU/Linux 2.6.23 GCC 4.2.2 Dual Xeon
Working on Gentoo for iPAQ hx4700 :-)

—

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

Цитата:
1 не создавать папок и файлов в корне (это просто скрипт для его даты лучше юзать /var/dget, а его самого в /usr/bin )

пожелания учту

Цитата:
2 все равно это все выполняется от рута так что никаких sudo не надо =)

не получается говорит что не хватает прав на (раз)монтирование :(

—

а как монтируем и размонтируем?
покажи что в фстаб написано
от рута не может не хватать прав =)
___________________________________________
Gentoo GNU/Linux 2.6.23 GCC 4.2.2 Dual Xeon
Working on Gentoo for iPAQ hx4700 :-)

—

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

монтирование: mount /dev/cdrom /mnt/cdrom
размонтирование: umount /dev/cdrom && eject
в фстабе прописано:
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
что интересно в консоли все работает, а в скрипте нет ошибка доступа. такое ощущение что скрипт запускается с другими правами.

—

/dev/cdrom /mnt/cdrom iso9660 noauto,users,ro,noexec,nosuid,nodev,uid=1000,utf8 0 0

:)

—

:)

кстати - eject сам отмонтирует, а маунтить то что есть в fstab можно просто mount /mnt/cdrom

Я тут похимичил и переделал скрипты под себя. В итоге получилось 2 скрипта: один - сам dget, второй - передает ему параметры и запускает emerge -f.
Плюс в отличие от предложенного выше варианта нужно не так часто менять диски. Конечно все это пока очень криво, но работоспособно =)

/bin/dget

#!/bin/bash

URL=$1 #get files URL
DIST=$2 #get distfiles dir
FLAG=$3 # O_O
CDMP="/mnt/cdrom/" #cdrom mount point
DISTFDIR="distfiles/" #distfiles dir in cdrom"
FILENAME=${URL/*\//}

if test $FLAG = "1"; then
cp $CDMP$DISTFDIR$FILENAME $DIST ||
for N in `ls /var/dget/base`; do
if cat /var/dget/base/$N | grep $FILENAME; then
echo "Пожалуйста, вставьте DVD $N и нажмите \"ENTER\"";
umount /dev/cdrom
eject /dev/cdrom
read
mount -r /dev/cdrom /mnt/cdrom/
cp $CDMP$DISTFDIR$FILENAME $DIST
fi
done
fi
if test $FLAG = "0"; then
if ls /mnt/cdrom/ | grep $FILENAME; then
cp $CDMP$DISTFDIR$FILENAME $DIST
fi
fi

/bin/dallget

#!/bin/bash

CHOISE="0"
PACKAGE=$1

echo "Будет произведено копирование пакета $PACKAGE и его зависимостей";
echo "Введите 1 для копирования небольшого числа пакетов или 0 для большого";
read -r CHOISE;
if test $CHOISE = "0"; then
export FETCHCOMMAND="/bin/dget \${URI} \${DISTDIR} \0"
for N in `ls /var/dget/base`; do
echo "Вставьте следующий диск (DVD No $N)";
read;
mount /dev/cdrom /mnt/cdrom -r
emerge -f $PACKAGE;
done
export FETCHCOMMAND="/bin/dget \${URI} \${DISTDIR} \1"
echo "Ну типа проверка";
emerge -f $PACKAGE;
fi
if test $CHOISE = "1"; then
export FETCHCOMMAND="/bin/dget \${URI} \${DISTDIR} \1"
emerge -f $PACKAGE;
fi

Ну и естессно chmod, export как в исходном варианте.
Для запуска копирования надо просто запустить dallget package

учитывая ваши пожелания и в результате экспериментов на себе я внес такие усовершенствования:
1) сделал 2 режима работы скрипта: 1 режим скачивает по мере надобности, 2 режим предварительное составление списка файлов и последующее скачивание.
2) возможность сбросить часть дисков на отдельную папку на HDD и качать отуда в distfiles (пригодится если на жест. диске есть свободное место, но его мало, чтобы переписать все диски, да и distfiles не забивается лишними файлами)
Файл /usr/bin/dget:

#!/bin/bash 
BASE_DIR=/var/pkg_dvd_base/ # сдесь задаем папку со списками файлов на дисках
DIST_HDD=/mnt/media/distfiles/ # задаем папку на жестком диске куда мы можем сбросить часть дистфайлов
MODE="get-now" #по умолчанию стоит режим №1
while [ $1 ]; do
    case $1 in
	"-u" ) shift 1; URL=$1;; #get files URL
	"-d" ) shift 1; DIST=$1;; #get distfiles dir
	"-mode" ) shift 1; MODE=$1;; #set mode 
    esac;
    shift
done
CDMP="/mnt/cdrom/" #cdrom mount point
DISTFDIR="distfiles/" #distfiles dir in cdrom"

FILENAME=${URL/*\//}

case $MODE in 
"get-now" ) {
echo "copy $CDMP$DISTFDIR$FILENAME to $DIST"
cp $DIST_HDD$FILENAME $DIST || cp $CDMP$DISTFDIR$FILENAME $DIST || {
 for N in `ls $BASE_DIR`; do 
    if cat $BASE_DIR$N | grep $FILENAME; then 
	echo "Please insert disk No $N and press \"ENTER\"";
	eject /dev/cdrom
	read F
	mount /mnt/cdrom/
	cp $CDMP$DISTFDIR$FILENAME $DIST 
    fi
done  }
};;
"get-later" ) {
mkdir /tmp/pack_list/ > /dev/null
echo $DIST > /tmp/dist
cp $DIST_HDD$FILENAME $DIST || echo "pack" > /tmp/pack_list/$FILENAME
};;
esac;

Файл /usr/bin/get-now:

#!/bin/bash
FETCHCOMMAND="dget -u \${URI} -d \${DISTDIR} -mode get-later"
emerge -f $1
DIST=`cat /tmp/dist`
for N in `ls /tmp/pack_list`; do
    dget -u "url/$N" -d "$DIST" 
    rm /tmp/pack_list/$N
done

ИСПОЛЬЗОВАНИЕ:
в make.conf добавляем "FETCHCOMMAND="dget -u \${URI} -d \${DISTDIR}"
для скачки надо набрать команду "get-now <ИМЯ ПАКЕТА>"
примечание: иногда на больших пакетах типа kde, gnome, xorg-x11 и т.д. остаются не скачанные пакеты. В таких случаях рекомендуется запустить "get-now <ИМЯ ПАКЕТА>" 2-3 раза на больших пакетах

хотелось бы еще добавить пищание пс спикера при смене диска только вот команды не знаю может кто знает?

—

beep

Вот к НГ:
beep -f 523 -l 375 -n -f 880 -l 375 -n -f 880 -l 375 -n -f 784 -l 375 -n -f 880 -l 375 -n -f 698 -l 375 -n -f 523 -l 375 -n -f 523 -l 375 -n -f 523 -l 375 -n -f 880 -l 375 -n -f 880 -l 375 -n -f 987 -l 375 -n -f 784 -l 375 -n -f 523 -l 750

:)

—

:)