Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: dpkg-repack: заковыристый способ обновиться  (Прочитано 9400 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн theZest

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1626
  • Я И ДИОД
    • Просмотр профиля
Обновление Ubuntu, когда нет интернета

Этот How-To составлен с целью помочь тем людям, которые желали бы обновить систему не через интернет. Причинами может являться отсутствие интернета либо его дороговизна или, например, медленность соединения. Именно дороговизна и медленность моего коннекта побудили меня пойти данным путем.

Но вначале благодарности ;) Большое спасибо товарищу Kwah за наводку по поводу вычленения пакетов из Live CD и создание на их основе репозитария (https://forum.ubuntu.ru/index.php?topic=20541.0). Спасибо и тем, кто ранее на форуме активно обсуждал данный вопрос (https://forum.ubuntu.ru/index.php?topic=3045.0) - WinLin, MA3X, JohnDoe, dr.maximus, bkb327. С удовольствием читал http://b-k-b.nm.ru/ubuntu/update.html - очень хороший материал, он поможет тем, кто хочет использовать собственно Live CD для обновления дистра. Я же решил обновить систему (в моем случае с 7.04 на 7.10), используя уже установленный Ubuntu. Между прочим, у этого способа есть свои преимущества - пакеты, которые уже установлены в системе "донора" с репозитариев, будут доступны для установки на ваш компьютер.

Итак, поехали.
Первым делом устанавливаем dpkg-repack:
sudo apt-get install dpkg-repack
Создадим файл debrepack.sh в домашней директории и пропишем в нем:
#!/bin/sh
mkdir DEB
cd DEB
dpkg --get-selections |   grep -v "deinstall" | grep -v "udev"  |  awk '{print $1}' | xargs dpkg-repack
Сохраняем, присваиваем ему право на выполнение.
Этот скрипт сделает всю "грязную работу" за нас - соберет deb-пакеты всех программ, установленных в системе, кроме udev, из-за которого могут возникнуть проблемы. Его лучше отдельно вытянуть из /var/cache/apt/archives либо скачать из интернета. Соберет он эти пакеты в папке "DEB". Туда же следует закинуть скачаный udev. На http://b-k-b.nm.ru/ubuntu/update.html сказано, что затруднений из-за udev может и не быть, но я не стал испытывать судьбу.
Но для начала нужно запустить наш скрипт:
sudo ~/debrepack.sh
После это осталось всего-навсего создать репозитарий и обновиться с него. Я делал так:
cd ~/DEB
apt-ftparchive packages .| gzip > Packages.gz
sudo dpkg-scanpackages . /dev/null | gzip > Packages.gz, после чего копировал папку DEB туда, куда хотел и добавлял в /etc/apt/sources.list строчку типа
deb file:/usr/local/DEB ./, затем командами sudo apt-get update и sudo apt-get dist-upgrade обновлялся. Но, я думаю, ничего не помешает вам создать с помощью APTonCD репозитарий на DVD, с которого вы и обновитесь.

Некоторые замечания:
1. dpkg-repack перепаковывает уже установленные пакеты, поэтому если человек, любезно предоставивший вам свои пакеты, менял что-либо в файлах программ (иконки, еще что-нибудь) или в конфигах этих прог после установки на свою машину, эти изменения коснутся и вас. Поэтому во время установки при настройке отдельных пакетов терминал будет "горестно вопрошать вас".
2. И еще: не забывайте, что на машине "донора" может быть другое железо, поэтому не вытягивайте то, что вам не нужно, и т.д. Для меня это было не так уж и актуально, я ради интереса установил себе 7.10, не уничтожая 7.04, поэтому конфигурация у меня была идентична на обеих системах.

Вот, собственно, и все :D
« Последнее редактирование: 15 Июня 2009, 02:58:33 от theZest »
Ubuntu 7.04-10.10 --> OS X 10.9-10.13 --> Windows 10 Pro + Manjaro KDE

Оффлайн Kolyok

  • Активист
  • *
  • Сообщений: 484
    • Просмотр профиля
Re: Обновление дистрибутива с помощью dpkg-repack
« Ответ #1 : 12 Марта 2008, 20:54:19 »
Тема хорошая (сам с удовольствием юзаю dpkg-repack), только на мой взгляд сама формулировка темы сильно зауживает возможности описанного способа (как будто только для обновления). Это можно использовать и для того, чтобы при пустом кэше установленных пакетов восстановить их, например, чтобы на другую машину поставить.
Да, еще не помешало бы упоминание о том, что если какие-то пакеты настраивались после установки путем правки их конфигов, то эти изменения сохранятся во время перепаковки, поэтому может возникнуть необходимость в перенастройке.
Суета... Все суета... Суета сует... Что пользы человеку от трудов его...
Умножая знания, умножаете скорбь Вашу...

Оффлайн blackjack

  • Участник
  • *
  • Сообщений: 127
    • Просмотр профиля
Re: Обновление дистрибутива с помощью dpkg-repack
« Ответ #2 : 13 Марта 2008, 18:17:08 »
Все работает ноомально но есть несколько замечаний.
1. Если некоторые конфиги были подправлены ранее то при апгрейде спрашивает переписать ли ваш конфиг новым или оставить старый
2. Приходится докачивать после установки какие-то апдейты.
3. Надо скопировать с системы "донора" sources.list и xorg.conf.
А все остальное работает чудненько. Спасибо.

Оффлайн theZest

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1626
  • Я И ДИОД
    • Просмотр профиля
Re: dpkg-repack: заковыристый способ обновиться
« Ответ #3 : 06 Апреля 2008, 08:52:24 »
Немного подправил свое детище, если что не так - вы пишите, не ленитесь  :D
« Последнее редактирование: 10 Февраля 2009, 09:49:10 от theZest »
Ubuntu 7.04-10.10 --> OS X 10.9-10.13 --> Windows 10 Pro + Manjaro KDE

fuss

  • Гость
Спасибо за этот how-to.
Я новичек в линуксе и есть несколько вопросов: при установки какого-либо пакета зависимости сохранятся и не прийдется ли в ручную устанавливать потом каждую? и второй, во время выполнения "sudo ~/debrepack.sh" была, к примеру, такая строчка "dpkg-deb: ignoring 2 warnings about the control file(s)
warning, `./dpkg-repack-6592/DEBIAN/control' contains user-defined field `Original-Maintainer' это говорит о какой-то ошибке или же можно "не обращать внимание"?
Заранее спасибо)
« Последнее редактирование: 12 Мая 2008, 04:14:08 от fuss »

Оффлайн dimlevnik

  • Любитель
  • *
  • Сообщений: 67
    • Просмотр профиля
    • Веб-программирование
Может уже не актуально, но предупреждения не ошибки!
| KUbuntu 12.04 | i5-3570K | HD4000 | Z77H2-A3D | RAM 8G |

Оффлайн theZest

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1626
  • Я И ДИОД
    • Просмотр профиля
fuss, ничего страшного не происходит и не произойдёт, как уже написали, это предупреждения, а не ошибки. А до установки зависимостей конечный пакет не устанавливается, так как существует определённый порядок при инсталляции.
Ubuntu 7.04-10.10 --> OS X 10.9-10.13 --> Windows 10 Pro + Manjaro KDE

Оффлайн K1X

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: dpkg-repack: заковыристый способ обновиться
« Ответ #7 : 17 Марта 2009, 03:53:09 »
проблема, нуждаюсь в помощи.

alex@Alex-ADM:~$ cd ~/DEB
alex@Alex-ADM:~/DEB$ sudo dpkg-scanpackages . /dev/null | gzip > Packages.gz
bash: Packages.gz: Permission denied
sudo: unable to resolve host Alex-ADM

дальше он че-то делал, а че делал не показывал.

alex@Alex-ADM:~$ sudo apt-get update
sudo: unable to resolve host Alex-ADM
Ign file: ./ Release.gpg
Ign file: ./ Translation-ru
Ign file: ./ Release 
Ign file: ./ Packages
Err file: ./ Packages
  Файл не найден
W: Не удалось загрузить file:/home/alex/DEB/./Packages.gz  Файл не найден

E: Некоторые индексные файлы не загрузились, они были проигнорированы или вместо них были использованы старые версии

и затем

alex@Alex-ADM:~/DEB$ sudo apt-get dist-upgrade
sudo: unable to resolve host Alex-ADM
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Расчёт обновлений... Готово
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.

в чем мой косяк ?

Оффлайн awesome nick

  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
Re: dpkg-repack: заковыристый способ обновиться
« Ответ #8 : 17 Марта 2009, 09:18:20 »
Я бы сделал так:
alex@Alex-ADM:~$ sudo -i
alex@Alex-ADM:~# cd /home/alex/DEB
alex@Alex-ADM:/home/alex/DEB# dpkg-scanpackages . /dev/null | gzip > Packages.gz

ы дальше по обстоятельствам))
Моя приходить учиться делать Ubuntu, не бить моя ногами!
AMD Athlon 64 X2 Dual Core 3600+ | 1024 Mb | Asus Radeon HD 3850

Оффлайн theZest

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1626
  • Я И ДИОД
    • Просмотр профиля
Re: dpkg-repack: заковыристый способ обновиться
« Ответ #9 : 15 Июня 2009, 02:53:07 »
alex@Alex-ADM:~/DEB$ sudo dpkg-scanpackages . /dev/null | gzip > Packages.gz
bash: Packages.gz: Permission denied
sudo: unable to resolve host Alex-ADM

alex@Alex-ADM:~$ sudo apt-get update
sudo: unable to resolve host Alex-ADM
Ign file: ./ Release.gpg
Ign file: ./ Translation-ru
Ign file: ./ Release  
Ign file: ./ Packages
Err file: ./ Packages
  Файл не найден
W: Не удалось загрузить file:/home/alex/DEB/./Packages.gz  Файл не найден

E: Некоторые индексные файлы не загрузились, они были проигнорированы или вместо них были использованы старые версии


Напонятно, что у вас произошло, но меня настораживает вот это:
Цитировать
bash: Packages.gz: Permission denied
sudo: unable to resolve host Alex-ADM

Также по просьбам телезрителей меняю хаутушку (а именно -- кусок про создание локального репозитария).
« Последнее редактирование: 15 Июня 2009, 02:59:22 от theZest »
Ubuntu 7.04-10.10 --> OS X 10.9-10.13 --> Windows 10 Pro + Manjaro KDE

 

Страница сгенерирована за 0.055 секунд. Запросов: 25.