оцените способ установки Gentoo с дисков
k1b0rg 23 ноября, 2007 - 18:30
предлагаю вот такое решение для людей вынужденных устанавливать 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 можно будет автоматизировать этот процесс)
какие будут пожелания и советы
»
- Для комментирования войдите или зарегистрируйтесь
Quote: -надо
... пожелание, добавить eject /dev/cdrom, чтобы дископриемник выбрасывался ...
если
если установлен sudo можно сделать так:
пожелание
... если правильно понял, то будеи предлагать сменить диск даже если диск уже стоит в дископриемнике ...
... пожелание, добавить проверку наличия требуемого файла на установленном диске ...
нет конечно!
нет конечно! если стоит нужный диск и он смонтирован в /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 :-)
Quote: 1 не
пожелания учту
не получается говорит что не хватает прав на (раз)монтирование :(
а как монтируем
а как монтируем и размонтируем?
покажи что в фстаб написано
от рута не может не хватать прав =)
___________________________________________
Gentoo GNU/Linux 2.6.23 GCC 4.2.2 Dual Xeon
Working on Gentoo for iPAQ hx4700 :-)
монтирование:
монтирование: mount /dev/cdrom /mnt/cdrom
размонтирование: umount /dev/cdrom && eject
в фстабе прописано:
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
что интересно в консоли все работает, а в скрипте нет ошибка доступа. такое ощущение что скрипт запускается с другими правами.
/dev/cdrom /mnt/cdrom
/dev/cdrom /mnt/cdrom iso9660 noauto,users,ro,noexec,nosuid,nodev,uid=1000,utf8 0 0
:)
кстати - eject сам
кстати - 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
k1b0rg, есть идея,
k1b0rg, есть идея, стукните пожалуйста в аську, нужно обсудить. А что именно - так это язык, на котором придётся программировать, а также ещё некоротые аспекты. В общем, жду Вас.
http://antarctica.net.ru - мы делаем линукс доступнее. ICQ# 334-547-677
пожелание-вопрос
... RooTest, когда будет новый срез? ...
А когда хотите?
А когда хотите? Могу через несколько дней, могу когда 2007,1 выйдет. Пишите пожелания сюда, а можно и в аську
Кстати, если процесс написания данной системы управления пакетами, если её можно так назвать, не затянется надолго, то вскоре увидите её уже в срезе...
http://antarctica.net.ru - мы делаем линукс доступнее. ICQ# 334-547-677
Система
Система управления дисками с пакетами 4-:Е
База для DVD'шных distfiles
Вот написал прогу на питоне для работы с distfiles на dvd, если кому это
еще интересно, то выложил на http://www.penguinux.ru/pr_Depack.php
Ещё один велосипед
От себя добавлю ещё один скрипт, который написал для тех же целей. Диски часто менять не нужно, монтирует само.
Для его работы нужно выполнить следующее:
После этого сохранить скрипт в /root/bin.
PS Если что не нравится - критикуйте, я ещё только учусь)
учитывая ваши
учитывая ваши пожелания и в результате экспериментов на себе я внес такие усовершенствования:
1) сделал 2 режима работы скрипта: 1 режим скачивает по мере надобности, 2 режим предварительное составление списка файлов и последующее скачивание.
2) возможность сбросить часть дисков на отдельную папку на HDD и качать отуда в distfiles (пригодится если на жест. диске есть свободное место, но его мало, чтобы переписать все диски, да и distfiles не забивается лишними файлами)
Файл /usr/bin/dget:
Файл /usr/bin/get-now:
ИСПОЛЬЗОВАНИЕ:
в make.conf добавляем "FETCHCOMMAND="dget -u \${URI} -d \${DISTDIR}"
для скачки надо набрать команду "get-now <ИМЯ ПАКЕТА>"
примечание: иногда на больших пакетах типа kde, gnome, xorg-x11 и т.д. остаются не скачанные пакеты. В таких случаях рекомендуется запустить "get-now <ИМЯ ПАКЕТА>" 2-3 раза на больших пакетах
хотелось бы еще добавить пищание пс спикера при смене диска только вот команды не знаю может кто знает?
beep Вот к НГ: beep
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
:)
Доброго
Доброго времени суток господа! =)))
Почитал ваши скрипты, хорошая штука))) Вот только у меня проблема не совсем совпадает с данной..возникла необходимость сделать второй(третий) каталог distfiles, т.е. при установке через emerge, пакеты должны искаться сначала в одном каталоге, потом в другом..
В make.conf переменной DISTDIR можно присваивать только одно значение, а жаль)))
Можно ли это обойти каким-нибудь другим способом?
Для примера:
/usr/portage/distfiles
/mnt/distfiles
/mnt/distfiles.old
Попробуй depack
Попробуй depack (http://penguinux.ru/pr_Depack.php)