Потребовалось установить систему на компьютере, выходящем в интернет с помощью wifi.
Всё бы ничего, но для начала работы требуются: wpa_supplicant, поддержка устройства в ядре и микрокод чипсета.
Для решения поставленой задачи надо скачать требуемые для установки файлы и кинуть их в папку /usr/portage/distfiles
Ручками вычислять нужные файлы - глупость
намного проще и эфективнее использовать для этого скрипы.
В результате был написан скрипт, позволяющий решить проблему одной простой строкой:
eka ~ # /root/getFetchList "iwl4965-ucode gentoo-sources wpa_supplicant" /tmp/links.txt
Needed distfiles list calculator v1.05 (2009-12-04)
Eugeny Borisov, 2009
Based on http://gentoo.ru/node/14449 post
Get list of links for fetch portage files at another system
You need for: iwl4965-ucode gentoo-sources wpa_supplicant
Results was ben placed to: /tmp/links.txt
done
Далее идет текст скрипта.
Разумеется, имеются узкие места
Если в папке distfiles имеется файл с нужным именем, то скрипт его пропускает и не выдает в список для скачивания. Проблема может возникнуть, если этот файл битый. Но на компьютере без доступа к интернету ему не откуда взяться, поэтому я не стал париться и добавлять проверку контрольных сумм.
#/bin/bash
# Get file list of portage to fetching at another system
# $1 - portages list
# $2 - destation file
DIST_DIR=/usr/portage/distfiles/
about () {
echo "Needed distfiles list calculator v1.05 (2009-12-04) "
echo "Eugeny Borisov, 2009"
echo "Based on http://gentoo.ru/node/14449 post"
echo
echo "Get list of links for fetch portage files at another system"
}
printListForFetch () {
for i in `emerge -qpf $@ | sed '/^$/d;s/ .*$//' | sort -u` ; do {
if [ $i == "!!!" ] || [ $i == "emerge:" ]; then
echo "Error while execute emerge"
echo "Restarting emerge for view error.."
emerge -qpf $@
exit
fi
fn=`echo $i | sed "/^$/d;s/^.*:\/\/.*\///"`
if ! [ -a "${DIST_DIR}${fn}" ] ; then
echo $i
fi
}; done
}
getListForFetch () {
echo "Results was ben placed to: $2"
printListForFetch $1 > $2
}
usage () {
echo "Usage: $0 PORTAGE_LIST [DESTATION_FILE]"
echo " PORTAGE_LIST is one or more space separated portage name"
echo " DESTATIO_FILE is filename for storying list of needed links"
echo "Examples:
$0 eix
show files needed for eix
$0 eix links.txt
put list of files needed for eix to links.txt
$0 \"eix vim\"
show files needed for eix and vim
$0 \"eix vim\" links.txt
put list of files needed for eix and vim to links.txt"
}
about
if [ "$1" = "--help" ] ; then
usage
exit
elif [ "$1" = "" ] ; then
echo "error 1"
usage
exit
else
echo "You need for: $1"
fi
if [ "$2" = "" ] ; then
printListForFetch $1
exit
else
getListForFetch "$1" "$2"
fi
echo "done"
Комментариев нет:
Отправить комментарий