Как быть со слабым инетом дома?

Хотелось бы узнать вот что: допустим, поставлю я себе генту на работе - там инет позволяет, все нормально. И поставлю дома - но дома инет слабый - gprs, а хотелось бы именно генту(уж больно хвалите вы ее, завидно). Есть способ сделать так: на работе обновляться/ставить пакеты весь день, к вечеру записать на больванку все что нужно, отправиться домой и поставить все это? Как правильно сделать?
зы. Конфигурации компов разные.
Спасибо.

Делаешь

$ emerge -pfv ПАКЕТ_КОТОРЫЙ_ХОЧЕШЬ_ПОСТАВИТЬ

записываешь урлы на бумажку
идешь на работу
скачиваешь все, что надо
приходишь дамой и закидываешь скачаное в ${DISTDIR-/usr/portage/distfiles}
далее ставишь обычным путем (инет не потребуется)

для обновления системы идешь на любое зеркало в папку snapshots (например, ftp://mirror.pudas.net/gentoo/snapshots/ ) и скачиваешь последний снапшот, удаляешь старый ${PORTDIR-/usr/portage} (не потри тока distfiles и pakages) и распкаовываешь туда снапшот, после

# emerge --metadata

enjoy ;)

P.S. помоему такая тема уже поднималась
---
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

спасибо, это именно то что мне нужно.
насчет того тчо тема поднималась - я конечно догадывался, но не нашел, потому и спросил.

Некоторые пакеты по зависимостям могут ставить ещё штук 15-20. Затрахаешься, извиняюсь, всё это с экрана на бумажку переписывать, а потом выкачивать вручную.

Может, есть какие-нибудь средства, формирующие список урлов автоматически, или самому писать придётся?

блин, ну насчет бумажки я образно... в файлик, потом файлик на дискетку (компакт) и гоу на работу... а там урлы копипэстом вставлять =)
а если на работе линух, то и копипеста не надо.... скрипт на баше (строчек 5) сам распарсит файлик с урлами и скачает все что надо
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

к тому же emerge -pf показывает ссылки на все требуемые файлы, в т.ч. на те, которые УЖЕ есть в /usr/portage/distfiles

_________________
Я не наступаю дважды на одни и те же грабли - каждый раз я нахожу новые!

Замечательная тулза

вобщем, слышал о ней, теперь сам наткнулся.
Утилита для тех, у кого дома слабый коннект, но на работе имеется хороший инет (и комп с линухом, т.к. тулза на баше написана).
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

Как синхронизировать каталоги

У нас в универе есть внутреннее зеркало, так вот, как можно синхронизировать /distfiles из-под винды

v12aml написал(а):
Делаешь
для обновления системы идешь на любое зеркало в папку snapshots (например, ftp://mirror.pudas.net/gentoo/snapshots/ ) и скачиваешь последний снапшот, удаляешь старый ${PORTDIR-/usr/portage} (не потри тока distfiles и pakages) и распкаовываешь туда снапшот, после

# emerge --metadata

еще вариант : слить снапшот и воспользоваться emerge-webrsync оно само все сделат

Re:

v12aml написал(а):
для обновления системы идешь на любое зеркало в папку snapshots (например, ftp://mirror.pudas.net/gentoo/snapshots/ ) и скачиваешь последний снапшот, удаляешь старый ${PORTDIR-/usr/portage} (не потри тока distfiles и pakages) и распкаовываешь туда снапшот, после

Я по не знанию своему при обновлении портежа удалял директорию packages, но у меня все вроде бы система работает стабильно. Какие могут быть последствия для меня из за моей ошибки?
Подскажите за что отвечает директория packages?

Спасибо

в нее

в нее складываются бинарные пакеты если ты их собираешь, конечно... если нет, то ничего сттрашного :)
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

Re: в нее

v12aml написал(а):
в нее складываются бинарные пакеты если ты их собираешь, конечно... если нет, то ничего сттрашного :)
[/i]

спасибо

Вопрос...

А нельзя сделать так?:
1) Целиком скопировать с компа /usr/portage
2) На втором компе распаковать туда же (/usr/portage)
3) cd /usr/portage/distfiles
4) emerge --world

Или это не совсем корректно?

emerge и докачка в случае обрыва

будет-ли emerge докачивать файлы в случаее обрыва связи? А то было-бы обидно если на каком нибудь пакете оборвётся связь.

Конечно. :)
emerge использует (по умолчанию) wget, который прекрасно с этой задачей справляется.

Для gprs не вариант, но вещь интересная --- app-portage/getdelta

хорошо для обновления. Скацивает разницу м/у имеющимся у тебя файлом и новым файлом (например для обновления openoffice 1.1.3 до 1.1.4 надо качать всего неско метров).

bash-2.05b# emerge -s getdelta
Searching...
[ Results for search key : getdelta ]
[ Applications found : 0 ]

Нет такого :(((

v12aml@v12aml ~ $ esearch  getdelta
[ Results for search key : getdelta ]
[ Applications found : 1 ]

*  app-portage/getdelta [ Masked ]
      Latest version available: 0.7.0
      Latest version installed: 0.6.9
      Size of downloaded files: 8 kB
      Homepage:    http://linux01.gwdg.de/~nlissne/
      Description: dynamic deltup client
      License:     GPL-2


v12aml@v12aml ~ $ 

есть такой :)
сделай emerge --sync .... getdelta не очень давно в оффициальном древе появилась
---

GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

а getdelta умеет работать через прокси?
_________________
Главное не забыть mount /dev/hands

она качает вгетом... следовательно можно попробывать через глобальные переменные окружения установить прокси, или, если не получится, через опции вгета (можно ковырнуть сам скрипт getdelta)
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

спасибо за указаное направление, забыл указать переменyую PROXY :-(

_________________
Главное не забыть mount /dev/hands

Нормально по модему все можно выкачать (на жестяке около 2 Гб полезного хлама). Береш ночной нет и все будет скачено за недельку ;)
Еще неплохой скриптик app-portage/getdelta. Скачивает разницу м/у старым файлом и новым.

Мой опыт экономии на трафике

1. Использовал вот такой простой скрипт `emerge-pf`для определения
файлов, которые нужно скачать "на работе", т.е. там, где Интернет быстрее или дешевле. Текст скипта привожу ниже, он выполняет фильтрацию `emerge -pf`. ВАЖНО! Скрипт был написан более года назад,
с тех пор система portage улучшалась. Опция -a или --all более не требуется. Для получения списка URL можно и просто ввести команду типа:
emerge -pf ПАКЕТ 2>&1 | awk '{print $1}'

2. Дома стал использовать deltup+getdelta.
Вот хорошая статейка.
К сожалению эти пакеты в настоящий момент нестабильны (~x86).

3. Недавно стабилизировался пакет emerge-delta-webrsync. Состоит
всего из одного sh-скрипта позволяющего экономить на `emerge sync`.

Текст скрипта /usr/local/bin/emerge-pf:

#!/bin/sh
# SCRIPT: emerge-pf [-a|--all] [emerge options] [package|class]

# Выдаем на стандартный вывод URL'ы для скачки пакетов,
# а на стандартный вывод ошибок список соответсвующих файлов,
# необходимых для построения указанных пакетов (или класса).
# Опция [-a|--all] игнорирует уже скаченные файлы в distfiles.
# После опции -а (если она исп.) доступны типичные опции emerge.
# В качестве пакета можно указать слово "bootstrap" тогда процесс
# будет выполнен для пакетов необходимых для bootstrap.sh (EXPERIMENTED).
#
#                                           Идея Alex Zorg 2004

flg=""
if [ "$1" == "-a" ] || [ "$1" == "--all" ]; then
  flg="ALL"
  shift 1
fi
pkg="$*"

if [ "$pkg" == "bootstrap" ]
then
  pkg="baselayout portage gettext binutils gcc glibc texinfo zlib ncurses"
fi

tmp1=`tempfile || echo /tmp/_emerge-tmp1_`
tmp2=`tempfile || echo /tmp/_emerge-tmp2_`
tmp3=`tempfile || echo /ymp/_emerge-tmp3_`
tmp4=`tempfile || echo /tmp/_emerge-tmp4_`

emerge -p -f $pkg 2>$tmp1 >$tmp2

> $tmp3
> $tmp4
for i in `cat $tmp1 | awk '{print $1}'`
do
  #file=`echo "$i" | sed -e's|.*/||'`
  file=`basename "$i"`
  if [ -z "$flg" ]; then
    tst=`cat $tmp2 | grep ">>> md5 src_uri ;-) $file"`
    [ -n "$tst" ] && continue
  fi
  echo "$file" >> $tmp3 # files
  echo "$i"    >> $tmp4 # full URLs
done

cat $tmp4 | sort -u >&2
cat $tmp3 | sort -u 

rm -f $tmp1 $tmp2 $tmp3 $tmp4

Интересно. А

Интересно.

А нет ли более рациональных способов?

Может быть кто-то писал обертку для портежей чтобы
сразу использовать их возможности, а не распарсивать
вывод emerge? Возможно что-то в процессе разработки?

Переработал

Переработал скрипт Alex'a Zorg'a. (его версия с некоторых времён перестала работать у меня)

#!/bin/sh
# SCRIPT: emerge-pf [-a|--all] [-m|--mirrors] [emerge options] [package|class]

# Выдаем на стандартный вывод URL'ы для скачки пакетов,
# а на стандартный вывод ошибок список соответсвующих файлов,
# необходимых для построения указанных пакетов (или класса).
# Опция [-a|--all] игнорирует уже скаченные файлы в distfiles.
# Опция {-m|--mirrors} выводит также URL'ы зеркал.
# После опций скрипта (если они исп.) доступны типичные опции emerge.
# В качестве пакета можно указать слово "bootstrap" тогда процесс
# будет выполнен для пакетов необходимых для bootstrap.sh (EXPERIMENTED).
#
#										   Идея Alex Zorg 2004; Mellon 2007

flg=""
flg2=""

if [ "$1" == "-a" ] || [ "$1" == "--all" ]; then
  flg="ALL"
  shift 1
fi

if [ "$1" == "-m" ] || [ "$1" == "--mirrors" ]; then
  flg2="MIRRORS"
  shift 1
fi

pkg="$*"

if [ "$pkg" == "bootstrap" ]
then
  pkg="baselayout portage gettext binutils gcc glibc texinfo zlib ncurses"
fi

tmp1=`tempfile || echo /tmp/_emerge-tmp1_`
tmp2=`tempfile || echo /tmp/_emerge-tmp2_`
tmp3=`tempfile || echo /tmp/_emerge-tmp3_`
tmp4=`tempfile || echo /tmp/_emerge-tmp4_`

> $tmp2
> $tmp3

if [ -n "$flg" ]; then

emerge -p -f $pkg >$tmp1

if [ -n "$flg2" ]; then
cat $tmp1 | grep '^http:\|^ftp:' | sed s/" "/"\n"/g > $tmp4
else
cat $tmp1 | grep '^http:\|^ftp:' | awk '{print $1}' > $tmp4
fi

for i in `cat $tmp4`
do
  #file=`echo "$i" | sed -e's|.*/||'`
  file=`basename "$i"`
  echo "$file" >> $tmp2 # files
  echo "$i"	>> $tmp3 # full URLs
done
fi

FETCHCOMMAND="echo \${URI}" RESUMECOMMAND="echo \${URI}" emerge -f $pkg >$tmp1 2>/dev/null

for i in `cat $tmp1 | grep '^http:\|^ftp:'`

do
  #file=`echo "$i" | sed -e's|.*/||'`
  file=`basename "$i"`
  echo "$file" >> $tmp2 # files
  if [ -z "$flg2" ]; then
	grep -v "$file" $tmp3 > $tmp4
	cat $tmp4 > $tmp3
  fi
	echo "$i"	>> $tmp3 # full URLs
done

cat $tmp2 | sort -u >&2
cat $tmp3 | sort -u

rm -f $tmp1 $tmp2 $tmp3 $tmp4

Сходи на

Сходи на www.linuxcenter.ru и купи ДВД версию - там мнооого пакетов
СТОИТ 250 р. без доставки

Извините, если

Извините, если я кого повторю - читать весь топик времени нет.

Я вижу такой выход: на работе обновлять портежи и качать проги, необходимые вам, а потом записавыть на болванку distfiles вместе с портежами.
Приходя домой копировать в систему обновленные портежи.

Таким образом у вас не будет проблем с несоответствией версий исходников и патчей.

Если дома комп - это ноутбук

Если дома комп - это ноутбук, то вопрос можно решить легко:
Я приношу ноут на работу, подключаю к сети, набираю:
#emerge -f <имя пакета>
в этом случае скачивается нужный мне пакет, вместе со всеми зависимостями, не нужно ничего ни на какую бумажку записывать. Если же домашний комп - ББ, т.е. Большой Брат ( ;-) ) То можно сделать так:
на работе в рабочей Генте вводим эту же команду:
#emerge -f <имя пакета>
гента все качает, что нужно, но не устанавливает, затем берем содержимое папки
/usr/portage/distfiles
переписываем на флешку и несем на домашний комп в эту же папку.
А дома уже даем команду:
#emerge <имя пакета>
и пакет компилится и устанавливается.
Для корректности нужно, чтобы срез портеджа был одинаковый и на работе, и дома.
Недостаток способа: избыточность при копировании папки /usr/portage/distfiles Однако если как-то фиксировать разницу в файлах до/после emerge -f <имя пакета>, то можно брать только новое.
Именно так я установил себе тяжелые пакеты: X,Gnome,Opera 10

Если USE-флаги разные или

Если USE-флаги разные или архитектуры, то ничего хорошего не получится. чать файлов все-равно не скачается.

некроманты...

некроманты...

нет,просто мееедленный

нет,просто мееедленный интернет: ping в 3 года

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

не хулигань, теме три года

не хулигань, теме три года

Теме три года, а вопрос

Теме три года, а вопрос актуален, особенно с учетом прошедшего времени, изменений в portage и развития мобильного интернета.
Вариант: существуют две машины (железо и список установленных пакетов отличается), одна из которых имеет высокоскоростной выход в сеть.
Необходим механизм обеспечивающий возможность:
получение списка пакетов для обновления на машине без доступа в сеть - запись их в отдельный файл/скрипт - копирование данного скрипта на другую машину - скачивание списка необходимых пакетов без установки. (понятно, что если вопрос в менее чем десяток файлов их наименования и версии можно просто перекопировать, а если их гораздо больше...)
Ручное копирование и разархивирование на машине без доступа к сети свежего снимка portage предполагается заранее...

ping 5 лет

ping 5 лет :(
еикс,баш,сед,вгет - как было заявлено выше-5 строчек

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

У меня есть скрипт, который

У меня есть скрипт, который бежит по всему портежу + еще оверлеи (по каждому ebuild-у), и скачивает его, вне зависимости от USE флагов. Написал для друга в регионе, у которого енета почти нет :)
У него АМД64 машина, у меня Интел 32.
Так и вожу ему на диске. Все занимает около 115 гигов.

а на счет синхронизации: можно же положить файл portage-latest.tar.bz2 в DISTDIR="${PORTAGE_TMPDIR}/emerge-webrsync" (у меня тут - /var/tmp/emerge-webrsync)
и воспользоваться утилитой emerge-webrsync. Она сама синхронизирует портеж. Либо как написано в документации: tar xvjf portage-latest.tar.bz2 -C /usr , предварительно переименовав (на всякий случай) /usr/portage в /usr/portage/old

#!/bin/bashOUT="/home/sasa/t

#!/bin/bash

OUT="/home/sasa/tmp/ebuild.out"
FILES=`find /usr/portage/ -type f -name '*.ebuild' | sort > $OUT`

LIMIT=20 # кол-во процессов /usr/bin/python2.6 & ebuild
WLIMIT=3 # кол-во процессов wget

if [[ -z `mount | grep /mnt/big_WD` ]]
then
echo "Устройство /mnt/big_WD не существует"

else
echo "Устройство /mnt/big_WD существует"
echo "Скачиваем базы DrWeb"
cd /pub/Linux/DrWeb/bases
sudo wget -c -m -np -nd -nH http://butters.drweb.com/pub/drweb/bases/

if [ -e /mnt/big_WD/mirr/distfiles ]
then echo "Каталог /mnt/big_WD/mirr/distfiles существует"
# echo "Скачиваем файлы портежей"
cd /mnt/big_WD/mirr/snapshots
d3=`date -d "-1 day" +%Y%m%d`
if [ -e portage-$d3.tar.bz2 ]
then
echo " Последние файлы портежей ( portage-$d3.tar.bz2 - например ) уже есть "
else
echo " Файлы портежей старые или нет вообще, удалим что есть и закачаем новые "
sudo rm portage*.*
sudo wget -c http://de-mirror.org/distro/gentoo/snapshots/portage-$d3.tar.bz2
sudo wget -c http://de-mirror.org/distro/gentoo/snapshots/portage-$d3.tar.bz2.gpgsig
sudo wget -c http://de-mirror.org/distro/gentoo/snapshots/portage-$d3.tar.bz2.md5sum
sudo wget -c http://de-mirror.org/distro/gentoo/snapshots/portage-$d3.tar.bz2.umd5sum

sudo wget -c http://de-mirror.org/distro/gentoo/snapshots/portage-latest.tar.bz2
sudo wget -c http://de-mirror.org/distro/gentoo/snapshots/portage-latest.tar.bz2.gpgsig
sudo wget -c http://de-mirror.org/distro/gentoo/snapshots/portage-latest.tar.bz2.md5sum
fi

echo "Начинаем синхронизацию distfiles по каждому ebuild-у"

for i in $( cat $OUT | grep .ebuild)
do
while true
do
if [ `sudo ps ax | grep -iwc /usr/bin/ebuild` -le $LIMIT -a `sudo ps ax | grep -iwc wget` -le $WLIMIT ]
then
# sudo ebuild $i fetch &
# eb=`basename $i`
# sed /"$eb"/d -i $OUT
sh /home/sasa/tmp/get_ebuild.sh $i $OUT &
break
else
sleep 5
fi
done
done

cd /mnt/big_WD/mirr/distfiles
sudo wget -c -m -r -np -nd -nH -N -A "*[aA][mM][dD]*" http://mirror.yandex.ru/gentoo-distfiles/distfiles/
sudo wget -c -m -r -np -nd -nH -N -A "*[aA][mM][dD]*" http://de-mirror.org/distro/gentoo/distfiles/
sudo rm $(find /mnt/big_WD/mirr/distfiles/ -type f -name '*checksum_failure*')
cd
cd tmp

else echo "Нет требуемых каталогов"

fi

fi

get_ebuild.sh#!/bin/shsudo

get_ebuild.sh

#!/bin/sh

sudo /usr/bin/ebuild $1 fetch
if [ $? -ne 0 ] # статус, что все закачалось успешно -eq
then
echo $1 >> /home/sasa/tmp/wget.err
fi

И в сухом остатке около 80 ebuild-ов не скачанных по лицензионным соглашениям (которые требуют денюжку за софт). В основном это /dev/java-sun или /usr/portage/sci-chemistry/. Но я и мой друг ими не пользуемся, так что...

это если есть возможность где

это если есть возможность где нибудь скачать!

evadim: забанен за спам

Если нет возможности - то тут

Если нет возможности - то тут уж ничего не сделаешь вообще

Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".