Обновление без интернета

Изображение пользователя Michael72.

Наткнулся я как-то на некий способ обновления без интернета. В результате частого использования данного способа родился скрипт, который выполняет работу, относящуюся к пункту 5 (см. инструкцию по вышеприведённой ссылке). Дублировать саму инструкцию - не вижу смысла, поэтому перейду сразу к скрипту.

Зависимости: choice

Сохраните текст кода в файл и сделайте файл скрипта исполняемым. Более удобный вариант сделать файл скрипта исполняемым, командой chmod —
это:
chmod 555 scriptname #(выдача прав на чтение/исполнение любому пользователю в системе)
или
chmod +rx scriptname #(выдача прав на чтение/исполнение любому пользователю в системе)
chmod u+rx scriptname #(выдача прав на чтение/исполнение только "владельцу" скрипта)

После того, как вы сделаете файл сценария исполняемым поместите его в каталог /usr/local/bin (естественно, что для этого вы должны обладать правами root), чтобы сделать его доступным для себя и других пользователей системы. После этого сценарий можно вызвать, просто напечатав название файла в командной строке и нажав клавишу [ENTER].
Например, если имя скрипта packages, тогда:
chmod +rx packages
sudo mv packages /usr/local/bin/

Скрипт служит для подготовки списка пакетов. Особенно скрипт полезен в том случае, когда у вас есть некоторое количество пакетов, из которых надо выбрать нужные пакеты, а на недостающие составить новый список. Если вы сохраните скрипт под именем packages, тогда см. краткую справку по команде
packages --help
Также в начале скрипта содержится информация о том, как им пользоваться.

Предположим вам нужно установить пакет gimp и вы уже проделали все действия, описанные с 1-го по 4-ый пункты. В этом случае запускаем скрипт так:
packages - gimp gimp.lst - install
Здесь gimp.lst - имя файла со списком пакетов. Оно может быть произвольным на ваше усмотрение.
В результате этого мы получим файл gimp.lst, в котором перечислены все пакеты, которые нам нужно будет скачать:
ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/g/gimp/gimp-data_2.4.6-1ubuntu1~hardy1_all.deb ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/g/gimp/libgimp2.0_2.4.6-1ubuntu1~hardy1_i386.deb ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/g/gail/libgail18_1.22.1-0ubuntu1_i386.deb ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/g/gail/libgail-common_1.22.1-0ubuntu1_i386.deb ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/libg/libgtkhtml2/libgtkhtml2-0_2.11.1-1_i386.deb ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/p/poppler/libpoppler-glib2_0.6.4-1ubuntu3.4_i386.deb ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/g/gimp/gimp_2.4.6-1ubuntu1~hardy1_i386.deb
Итого, 7 пакетов. Но предположим, что мы имеем каталог с большим количеством различных deb пакетов. Пусть это будет CD-ROM, а каталог с большой коллекцией deb пакетов - /media/cdrom0/packages/. Мы хотим, найти в этом каталоге пакеты из нашего списка и скопировать их в каталог ~/Linux/packages. Для этого вызываем скрип так:
packages /media/cdrom0/packages ~/Linux/packages gimp.lst packages.lst
В этом случае скрипт можно вызвать и без параметров. Скрипт выдаст последовательно запросы на необходимые параметры.
В результате все пакеты из списка, которые будут найдены в каталоге /media/cdrom0/packages, скопируются в каталог ~/Linux/packages, а на недостающие пакеты будет составлен новый список под именем packages.lst. К примеру, допустим, что в нашем каталоге /media/cdrom0/packages оказалось три пакета из перечисленных в списке gimp.lst:

  1. gimp-data_2.4.6-1ubuntu1~hardy1_all.deb
  2. libgimp2.0_2.4.6-1ubuntu1~hardy1_i386.deb
  3. gimp_2.4.6-1ubuntu1~hardy1_i386.deb

Тогда новый список packages.lst в нашем случае будет таким:
ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/g/gail/libgail18_1.22.1-0ubuntu1_i386.deb ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/g/gail/libgail-common_1.22.1-0ubuntu1_i386.deb ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/libg/libgtkhtml2/libgtkhtml2-0_2.11.1-1_i386.deb ftp://ftp.mipt.ru/mirror/ubuntu/pool/main/p/poppler/libpoppler-glib2_0.6.4-1ubuntu3.4_i386.deb
А вот пример того, как данный скрипт может пригодиться при создании других полезных скриптов. В последнее время мне понравилось использовать один свой скрипт, который служит для показа информации о состоянии пакетов - установлен ли тот или иной пакет или нет. Вот текст самого скрипта:

Зависимости: choice

Примеры

Допустим меня интересует, установлены ли в моей системе следующие пакеты: adobe-flashplugin, sun-java6-bin. Чтобы одним махом выяснить это, я запускаю свой скрипт, которому дал имя showstat:
michael@michael-desktop:~$ showstat adobe-flashplugin sun-java6-bin
Имя пакета                      Состояние     Версия
adobe-flashplugin               не установлен 10.1.85.3-1maverick1
sun-java6-bin                   не установлен 6.22-0ubuntu1~10.10
---------------------------------------------
Не установлено пакетов: 2.

Хотите установить все неустановленные пакеты?
(Да-1, Нет-0) -?

Предлагается тут же установить те пакеты, которые ещё не установлены. Выбираю "Да":
Чтение списков пакетов... Готово
Построение дерева зависимостей      
Чтение информации о состоянии... Готово
Будут установлены следующие дополнительные пакеты:
  gsfonts-x11 sun-java6-jre unixodbc
Предлагаемые пакеты:
  ttf-xfree86-nonfree xfs sun-java6-plugin ia32-sun-java6-plugin sun-java6-fonts ttf-kochi-gothic ttf-sazanami-gothic ttf-kochi-mincho
  ttf-sazanami-mincho ttf-arphic-uming libmyodbc odbc-postgresql tdsodbc unixodbc-bin
Пакеты, которые будут УДАЛЕНЫ:
  flashplugin-installer flashplugin-nonfree
НОВЫЕ пакеты, которые будут установлены:
  adobe-flashplugin gsfonts-x11 sun-java6-bin sun-java6-jre unixodbc
обновлено 0, установлено 5 новых пакетов, для удаления отмечено 2 пакетов, и 9 пакетов не обновлено.
Необходимо скачать 41,2MБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 116MB.
Хотите продолжить [Д/н]?
Ош  http://archive.canonical.com/ubuntu/ maverick/partner sun-java6-jre all 6.22-0ubuntu1~10.10
  Не удалось найти IP адрес для archive.canonical.com
Ош  http://archive.canonical.com/ubuntu/ maverick/partner sun-java6-bin i386 6.22-0ubuntu1~10.10
  Не удалось найти IP адрес для archive.canonical.com
Ош  http://archive.canonical.com/ubuntu/ maverick/partner adobe-flashplugin i386 10.1.85.3-1maverick1
  Не удалось найти IP адрес для archive.canonical.com
Ош  http://ru.archive.ubuntu.com/ubuntu/ maverick/main unixodbc i386 2.2.14p2-1ubuntu1
  Не удалось найти IP адрес для ru.archive.ubuntu.com
Ош  http://ru.archive.ubuntu.com/ubuntu/ maverick/main gsfonts-x11 all 0.21
  Не удалось найти IP адрес для ru.archive.ubuntu.com
                      
Хотите создать файл списка неустановленных пакетов?
(Да-1, Нет-0) -?
Постольку, поскольку интернет не подключен - предлагается создать файл со списком всех нужных пакетов. Выбираем опять "Да". Введите имя файла со списком пакетов: packages.lst
Предлагается ввести имя для файла списка и далее происходит вызов скрипта packages.

Комментарии (5)

0
dyug - 12 Апрель, 2010 - 17:13

я как бы быстро проглянул, но не увидел - а обновлять сорс листы эта шняга умеет? :-)
точнее, готовить список тех файлов(не пакетов!!!!!) что нужно выкачать, например для обновления...
то есть офлайновый аналог apt-get update?

0
DarkneSS - 12 Апрель, 2010 - 22:26
Изображение пользователя DarkneSS.

Вот этого реально не хватает! Остальное не лень и ручками сделать =)

0
Michael72 - 13 Апрель, 2010 - 10:09
Изображение пользователя Michael72.

Большое спасибо за столь конструктивный комментарий.
Я дополнил скрипт и теперь он может также подготовить список сорс архивов. В виде теста выполнил:
packages - wine wine.lst - source
Получил список:
http://wine.budgetdedicated.com/apt/pool/main/w/wine/wine_1.1.41~winehq0~ubuntu~8.04-0ubuntu1.dsc
http://wine.budgetdedicated.com/apt/pool/main/w/wine/wine_1.1.41~winehq0~ubuntu~8.04.orig.tar.gz
http://wine.budgetdedicated.com/apt/pool/main/w/wine/wine_1.1.41~winehq0~ubuntu~8.04-0ubuntu1.diff.gz

Я вроде бы понимаю, что делать с файлом wine_1.1.41~winehq0~ubuntu~8.04.orig.tar.gz, а вот что делать с двумя другими? Не научишь?

0
dyug - 13 Апрель, 2010 - 11:21

это исходники того, из чего собирался бинарный пакет. :-)
что с этим делать - собирать. :-) Если нужно, конечно.
точнее сам тар гз - исходник, дифф гз - исправления (патч) от оригинального исходника до правильно собираемого исходника, dsc - дескрипшион, описывающий пакет...

Но, в данном случае я о другом: общеизвестно, что не всегда есть возможность получить доступ к сети, чтобы обновить сам список пакетов.

Вот комп без инета - на него нужно поставить wine
но списка пакетов еще на этой машине нет, вот как его (список пакетов) получить без сети - вот основной лейтмотив моего вопроса.
То есть - есть урл условно "deb http://wine.budgetdedicated.com/apt hardi main"
как из этого урла сделать запрос на на файлы Packages Releases и все, что ему нужно...

0
Michael72 - 13 Апрель, 2010 - 16:25
Изображение пользователя Michael72.

Для сорс архивов необходимо по той инструкции, на которую я ссылаюсь - http://kubuntu.ru/node/4484#comment-33631, проделать с 1-го по 4-ый пункт, при этом заменить binary-i386/Packages на source/Sources. Я так думаю!!

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры