Приветствую вас всех!
Суть такова - мой лучший друг работает в одном НИИ программистом и работает там с Kubuntu 8.10 amd64, пишет что-то с использованием Qt. На их корпоративном прокси сервере введены довольно жесткие ограничения - никаких https, никаких файлообменников, и нет доступа к репозитариям ПО, даже официальных Canonical.
На моем же компьютере, не имеющем никаких подобных ограничений, стоит Ubuntu 9.04 i386.
Так вот, иногда ему требуется обновить некоторые пакеты или установить новые. Причем, в подавляющем числе случаев, это нужно по работе, но на служебки отвечают отказом и предлагают скачать самостоятельно. Иногда нам везет и удается просто отправить по почте пару пакетов, скачанных с Launchpad, однако, чаще всего, зависимости вручную удовлетворить не получается.
Подскажите, как можно выкачивать на свой компьютер пакеты с необходимыми ЕМУ зависимости, ЕГО архитектуры, актуальных для его дистрибутива версий.
Я себе это представляю так - я каким-либо образом получаю информацию обо всех установленных на его машине пакетах, делаю у себя локальный репозитарий, который затем наполняю лишь необходимыми пакетами, передаю эти пакеты ему (никаких scp, или подключение моего репозитария и подобного использовать не получится, только передача файлов по почте или на флешке). Он устанавливает их в свой локальный репозитарий или использует dpkg -i ~/path/*.deb
При этом этап подготовки его машины должен быть с минимальным количеством пакетов для установки (поднимать веб-сервер с кучей зависимостей, например, совсем не улыбается).
Подскажите как можно организовать подобную передачу пакетов наиболее удобным способом или решить задачу по-другому?
-
ну, для начала aptitude show покажет зависимости. Их можно скачать и сложить в кучу, а потом ставить...
-
У меня арч, но попробую по памяти описать, а вы уже по манам уточните и сориентируетесь.
Значит сначала ваш товарищ делает запускает apt-get нужного пакета, но с параметром "pretend" или типа того (то есть оно попытается скачать и симитировать процесс установки полностью, за исключением самого факта установки). Либо то же самое, но с как-то параметром, который только выкачивает пакеты. При этом утилита должна выдать список зависимостей, которые она требует. Этот список зависимостей ваш друг отправляет вам по почте.
Вы берете этот список, и выкачиваете все пакетики так же без установки (pretend или donwload-only). Затем лезете в свой локальный кэш пакетов (что-нибудь вроде /var/cache/apt-cache или что-то подобное) и копируете накачаное добро на флэшку (желательно кэш пакетов перед этим действом очистить). Поищите заодно в мане насчет опции, позволяющей указать альтернативную директорию для кэша пакетов - тогда вы сможете сразу указать точку монтирования флэшки и apt-get вам все туда аккуратно сложит.
Когда друг получит файлы на флэшке, то пусть кинет их в свою папку с кэшем. И уже потом запускает команду установки нужного пакета.
Теоретически это все можно даже автоматизировать в некоторой степени. Например заставить установщик пакетов друга автоматом парсить вывод и отсылать письмецо на отдельный почтовый ящик. На вашем компьютере же будет производиться изъятие почты и автоматическое скачивание необходимого добра из списка в теле письма. По окончании скачивания вам будет выдано уведомление, мол, товарищ, я ут скачал пару пакетов, занеси мне флэшку. И тогда вы просто вытаскиваете флэшку и несете другу.
Прошу прощения за сумбурность, но в общем-то алгоритм будет примерно таким. Реализация уже на ваших плечах. Осилите?
-
-
Синаптик умеет организовать вгет-лист по выбранным пакетам и зависимостям, друг его генерит, ты запускаешь.
Я не шарю в репозиториях каноникал, но если хостов не множество, можно пробросить порт через iptables, сделав днат. Т.е. друг подключается к тебе на порт, например, 801, а попадает на canonical.org:80.
-
-
Как всегда не туда ответил..
-
Расскажите для "чайника", как прокинуть такой финт ушами? Если что, у меня есть домен и днс, которые я могу использвать, а так же динамический днс.
-
-
както так
iptables -t nat -A PREROUTING -p tcp -d твой_внешний_адрес --dport какойто-твой-порт -j DNAT --to-destination адрес_репа:порт_репа
-
-
А после этого перезапускать какие-нибудь демоны или сетевое подключение надо или сразу все заработает?
-
-
нет.
но нужно куданить запихать, чтобы это при запуске системы применялось
-
В зависимости от настроек твоего фаерволла может понадобиться еще что-то вроде
iptables -A FORWARD -p TCP -s адрес_друга -d адрес_репа -j ACCEPT
-
Я так скачивал пакеты для домашней убунты, генерировал список необходимых пакетов (при этом обновив источники приложений) со всеми зависимостями, брал его на флешку и на работе под виндой уже скачивал необходимые пакеты, правда мучился с порядком установки.
P.S.: Я вроде слышал, про DVD-диски с репозиториями, я, полагаю, что-то типа такого, правда это не для amd64
-
Сейчас именно так и делаем, но если я запущу апт в даунлоад-онли, я скачаю пакеты для своего дистрибутива, для 9.04, да под x86. Это не подходит.
А получив список зависимостей от апт, я не получу список зависимостей для его системы, а только для своей. Если у него не установлена одна из моих либ, ничего не выйдет.
В общем, когда в винде на флешке передают программы, просто заливают инсталлятор. Как это делают в случае линукса с пакетными менеджерами?
-
-
И да, без информации о пакетах в репозитарии, апт на его машине ничего хорошего не скажет.
-
Как ему можно получить свежий срез репозитариев? Млжет какие-то файлы можно просто передать?
-
-
Да, собственно тут нужно обновить базу пакетов репозитория. Но так как я не уверен для какой машины будет обновившаяся база (вашей или она универсальна, а уже менеджер пакетов сам разруливает..), то тут единственное решение - проброс портов как посоветовал xT.
-
-
проброс портов посоветовал zivot_je_cudo =)
-
-
Ой, действительно =)
Просто я глядел уже на готовую строку команды пробрасывания :P
В любом случае - обоим плюс.
-
Кстати, я так и не разобрался как апт подсунуть реп не своей архитектуры
-
-
> Кстати, я так и не разобрался как апт подсунуть реп не своей архитектуры
А не проще ли сгенерить список нужных пакетов синаптиком,как советовал zivot_je_cudo ? http://welinux.ru/post/1357/#cmnt21011
-
-
Может и проще. Не в этом дело - я немного заоффтопил, ибо заинтересовал этот момент
Получается, чтобы скачать пакеты для определенной архитектуры, нужно сначала поиметь систему данной архитектуры (узнать урлы пакетов в ней)
-
Тут все смешано. Им еще и файлы архивов скачивать запрещено. Так что будем выдумывать что делать, но, кажется, информацию о пакетах через интернет загрузить не получится...
-
spyfzm
Я вам отписывал уже по e-mail'y.
Тут все смешано
Все очень просто:
Ваш товарищ в Синаптике выбирает необходимые пакеты, отмечает их для установки/обновления и создает загрузочный скрипт вида:
1
2
3
|
#!/bin/sh
wget -c http://archive.ubuntu.com/ubuntu/pool/main/a/abiword/abiword-common_2.4.6-3ubuntu3_all.deb
wget -c http://archive.ubuntu.com/ubuntu/pool/universe/a/abiword/abiword_2.4.6-3ubuntu3_i386.deb |
и передает скрипт вам. А вы в свою очередь выкачиваете эти пакеты, они - под его архитектуру.
Все. А чтобы не мучатся потом с порядком установки запускать все так:
sudo dpkg -i *.deb
Так само можно выкачивать пакеты из Windows
-
-
Спасибо, но у него там информация о пакетах не обновлялась никогда и никогда не удастся ее обновить штатными методами - файлы .gz просто не будут скачаны. Так что надо сначала придумать, как обновить информацию о пакетах, используя https, который не фильтруется, или обновить по флешке.
-
-
Ну тогда совсем вкитайчерезчемоданский метод.
Ваш товарищ устанавливает remastersys,
делает sudo remastersys dist
Отдает образ вам.
Вы запускаете его либо в livecd, либо в виртуальной машине.
Проделываете все тоже самое, т.е. в Синаптике создаете скрипт, сохраняете его и уже потом выполняете его в своей системе.
-
-
Да уж, круто... >_< Дивиди каждый раз записывать... запускать 64-битную систему на 32-битном компьютере..
Кажется, мы с ним в тупике.
-
-
Дааа...Я думал у вас обоих "камни" х64, просто ОС отличаются.
Надо будет еще подумать...
|
|
|
Последние посты
|
|
Последние комментарии
|
|
Изменения
|
|
Черновики (все)
|
|
Избранное (всё)
|
|
Лучшие блоги (все)
|
|
Элита (все)
|
|
|