Установка linux установка оффлайн

Подготовка и установка deb-пакетов оффлайн

Рассмотрим задачу подготовки некоторого deb-пакета для установки в оффлайн режиме, например, на другой машине с той же версией операционной системы.

В отличие от Windows, где каждая программа поставляется с мегатоннами библиотек и может быть запущена на компьютерах с различными версиями Windows, в Linux каждый пакет собирается под конкретную версию конкретного семейства дистрибутивов. Поэтому просто так взять пакет, скачанный в одном месте, и установить его на другой машине может быть непросто. Однако, всё упрощается в том случае, если помимо целевого компьютера у вас есть свободный компьютер с такой же версией операционной системы. С развитием технологий виртуализации разворачивание аналогичной системы и вовсе перестало быть проблемой.

В качестве примера я возьму довольно внушительный по объёму зависимостей пакет библиотек Boost C++ под названием libboost1.55-all-dev.

Создание локального репозитория пакета

1. На компьютере-источнике, подключенному к интернет, создаём папку для скачивания нужных для сборки нашего пакета deb-файлов и переходим в неё:

# mkdir repository
# cd repository

2. Получим список адресов пакетов, необходимых для установки данного пакета:

# apt-get -y —print-uris install libboost1.55-all-dev | grep «‘» | cut -f1 -d’ ‘ | tr -d «‘» > packet-list.txt

3. Получим список пакетов build-dep.txt, необходимых для сборки указанного пакета:

# apt-get -s build-dep libboost1.55-all-dev | grep «^ » > build-dep.txt

4. Получим список адресов build-dep-urls.txt, откуда их можно скачать:

# apt-get -y —print-uris install `cat build-dep.txt` | cut -f1 -d’ ‘ | tr -d «‘» | sort | uniq > build-dep-urls.txt

5. Скачиваем найденные пакеты:

# wget -i paket-list.txt
# wget -i build-dep-urls.txt

Всё, локальный репозиторий готов.

Таким образом, для подготовки пакета мало скачать файлы, которые идут вместе с ним (их 56), необходимо скачать также и все пакеты, от которых он зависит в процессе установки (их 60). Зависимости для установки выясняются с помощью опции build-dep установщика apt-get. А опция ––print–uris вместе с командой install позволяет узнать адреса, по которым они находятся.

Установка пакета на другой машине в режиме оффлайн

Копируем все .deb файлы с компьютера-источника source_comp в стандартный каталог кэша пакетов apt на целевом компьютере. Если компьютеры доступны по сети, то это легко сделать с помощью команды scp:

# scp user@source_comp:/путь_до_repository/*.deb /var/cache/apt/archives/

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

Заставим apt обновить информацию о своём локальном репозитории:

После этого необходимо сначала установить зависимости для сборки требуемого пакета:

Источник

Offline installation (Русский)

The factual accuracy of this article or section is disputed.

Если вы хотите установить Archiso (Русский) (например, официальный ежемесячный выпуск) без подключения к интернету или если вы не хотите загружать пакеты снова:

Сначала следуйте инструкциям статьи Руководство по установке, а затем пропустите разделы от Соединения с Интернетом до Установки основных пакетов.

Contents

Установка archiso в новый корень

Вместо того, чтобы устанавливать пакеты с помощью pacstrap (которые будут загружаться из удалённых репозиториев), скопируйте всё в live-среду в новый корень:

Затем скопируйте образ ядра в новый корень, чтобы сохранить целостность новой системы:

После этого сгенерируйте fstab, как описано в разделе Руководство по установке#Fstab.

Chroot и настройка базовой системы

Далее, выполните операцию chroot в вашей вновь установленной системы:

Восстановление конфигурации journald

Эта настройка archiso приведёт к сохранению системного журнала в ОЗУ, а это означает, что журнал после перезагрузки будет недоступен:

Удаление особых правил udev

Это правило udev [устаревшая ссылка 2021-07-05] автоматически запускает dhcpcd, если есть какие-либо проводные сетевые интерфейсы.

Отключение и удаление служб, созданных archiso

Некоторые файлы служб создаются для live-среды – отключите их и удалите файлы, поскольку они не нужны в новой системе:

Удаление особых скриптов live-среды

Существуют некоторые скрипты, установленные скриптами archiso в live-системе, которые не нужны для новой системы:

Читайте также:  Сбор логов с серверов linux

Импорт ключей archlinux

Чтобы использовать официальные репозитории, нужно импортировать главные ключи archlinux (pacman/Package signing (Русский)#Инициализация связки ключей). Этот шаг обычно делается с помощью pacstrap, но может быть выполнен с помощью

Настройка системы

Теперь вы можете выполнить пропущенные шаги раздела Руководство по установке#Настройка системы (установка локали, часовой пояс, имя хоста и т.д.) и завершить установку, создав исходный ramdisk, как описано в разделе Руководство по установке#Initramfs.

Источник

Автономная установка пакетов

Доброго времени суток. Суть проблемы. Есть изолированная от интернета система (от слова «совсем». Дебильники забирают на «проходной». Если найдут «хвосты» подключения к инету или подключения «левых» устройств к компу, то, в лучшем случае, уволят). Linux системы разрешены, Windows только на виртуалках. Остановился на Ubuntu 18.04LTS. Ввиду режимных ограничений необходимые для работы пакеты можно принести только на флешке или диске. Ну и конечно возникает проблема скачивания и разрешения зависимостей пакетов. Испытал следующие «варианты»:

1. Скачиваю необходимый пакет из репа и тащу на работу -> пытаюсь установить (sudo dpkg -i *.deb) -> выявляются зависимости -> записываем названия необходимых пакетов -> снова качаем -> тащим на работу. и так до бесконечности. Synaptic и build-essential таким способом качал в 3 захода)) Короче, гемор.

2. Установил синаптик. Становится по-проще. Выбираем необходимые пакеты -> Создаём список для загрузки -> качаем пакеты дома -> устанавливаем пакеты. Но это только в идеале. Проблемы здесь следующие:

а) На самом деле списки пакетов в стоке охватывают (почему-то) только пакеты из ветки main, пакеты из ветки universe, multiverse и restricted представлены не все (для примера: пакет npm).

б) Если пакеты устанавливать через sudo dpkg -i *.deb то можно поломать критически важные пакеты и получить полумёртвую систему. Опять же, так как в стоке представлены не все списки пакетов, то можно напороться на неразрешённые зависимости и придётся докачивать пакеты вручную.

в) У меня через вкладку «Файл-Добавить загруженные пакеты. » выбрать пакеты для установки нельзя (подсвечены «серым» в диалоге)

Заметил следующее. Пакеты в скрипте скачивания расположены в необходимом для установки порядке, т.е. если заменить wget на dpkg -i то можно установить пакеты в нужном порядке за один заход (проверял. работает. но если есть не разрешённые зависимости, то идём докачивать пакеты вручную). В принципе, вариант нормальный, но как подсунуть синаптику полные актуальные списки пакетов (например с archive.ubuntu.com)?

3. Вариант с Keryx. В теории — отличный вариант, но на практике тоже не всё идеально. Создаю проект на изолированной системе -> качаю пакеты -> приношу на работу -> пытаюсь установить и напарываюсь на следующее:

4. Вариант с виртуалкой дома считаю геморройным и не решающем проблем установки пакетов в «нужном порядке».

5. apt-mirror. там для скачивания 60 Гигов пакетов минимум. как вариант, конечно, но только от безысходности.

Короче, если автоматизировать процесс скачивания необходимых пакетов хоть как-то можно, то установка в системе это «кот в мешке». Отсюда два основных вопроса (повторюсь): 1.Как синаптику подсунуть списки пакетов репозитория archive.ubuntu.com?

2. Как заставить керикс скачивать пакеты с необходимым суффиксом системы и, желательно, МИНИМАЛЬНОЙ необходимой версии а не максимальной, а то если разрыв между версиями очень большой, то есть шанс поломать нужные пакеты

Источник

apt-offline

Это не вопрос, а скорее статья.
Если компьютер не имеет прямого выхода в интернет работа с Линукс значительно усложняется. Можно смело утверждать, что для домашнего использования (т.е. для людей, которые не готовы разбираться в работе программных систем) использование Линукс без интернета практически закрыто.
Задача заметно упрощается, если доступ к интернету можно получать хотя бы время от времени. Т.е. можно при необходимости подключится к Интернету для настройки системы, а потом опять работать offline.
В тяжелых случаях – когда подключения к интернету нет, не было и не предвидится, работа с Линукс сопряжена со значительными трудностями. Надо признать, что такая картина в наше время характерна для труднодоступных мест и для закрытых секторов экономики (банковский сектор, МВД, военные, налоговики и т.п.). Надо полагать, что такие клиенты у открытого сообщества тоже не вызывают симпатии.
В интернете довольно много советов по поводу того, как можно работать в Линукс без интернета, но я на собственном опыте убедился, что они низкой квалификации. По большей части это компиляция одних и тех же материалов, изначально созданных людьми, которые сами работать оффлайн не пробовали.
Поскольку я сам не сисадмин, то мои советы ориентированы тоже на рядового, но более-менее квалифицированного пользователя. Неквалифицированным пользователям в Линуксе без интернета делать нечего.
Во-первых, совсем без доступа к интернету, по-видимому, можно обойтись только если вас полностью устраивает состав системы после установки. Если вы захотите развивать систему, доступ к интернету все равно понадобится. Дело в том, что хотя большинство ПО имеет свободную лицензию, практики его распространения в виде подготовленных для установки пакетов на отдельных носителях нет. Распространение целиком построено на использовании интернета. Так что в любом случае понадобится компьютер, имеющий доступ к сети интернет. Будем его в дальнейшем называть онлайн-системой, в отличие от целевой, куда в конечном счете должно быть установлено ПО, оффлайн-системы.
Я познакомился с пятью способами установки программ на оффлайн-систему:
1. Пакет apt-offline.
2. Пакет cube-installer и его клоны.
3. Создание зеркал.
4. Установка из пакетов deb
5. Компиляция исходников
Третий способ, по сути, состоит в создании локальных копий интернет-репозиториев на локальной системе или локальной сети к которой подключена оффлайн-система. Понятно, что он требует гигантских усилий и большой дисковой памяти. Поэтому он подходит для сисадминов. Если в организации есть такие зеркала, то вопросы ПО решаются на системном уровне и эти зеркала заменят вам интернет. Если у вас такая организация, то этот документ не для вас – лучше поговорите о своих проблемах с сисадмином. А мы на этом разговор о зеркалах закончим.
Говорить про пятый способ я считаю себя недостаточно квалифицированным. К тому же пишу текст все-таки не для программеров.
Первый способ подразумевает наличие пакета apt-offline как на онлайн, так и на оффлайн системах. Ну, на онлайн, как обычно, проблем не будет:
sudo apt install apt-offline
и все дела. Но на оффлайн-системе проблем будет куча. В состав дистрибутивов он не входит (во-всяком случае я пытался найти такой, но не нашел). А при установке ему для работы требуются еще 10 пакетов, что легко можно увидеть по логу установки на онлайн системе.
Для моего метода установки apt-offline (да-да, только установки, о работе речь впереди) потребуется онлайн-компьютер той же архитектуры (amd64, i386), что и целевая (оффлайн) система и чистый раздел на ней, куда можно ставить тот же дистрибутив, что и на оффлайн системе. Я ставил Kubuntu18.04.LTS, но надеюсь, что подойдет для всех клонов Debian, основанных на apt.
Итак, ставим Kubuntu на оффлайн машине, а потом его же на онлайн-машине, предварительно отключив от интернета. Это важно! Смысл в том, чтобы не засорять кэш apt разными пакетами, которых нет на оффлайн машине. А теперь подключаем интернет и делаем (здесь и далее # означает, что команды выдает ROOT)
online#apt-get update
(необходимо для инициализации apt)
online#apt-get install apt-offline
При этом apt-offline установится на онлайн машине, а скачанные для него пакеты попадут в кэш apt (в моем случае /var/cache/apt/archives, на других системах м.б. и в другом месте). Мы их оттуда копируем на флешку и несем на оффлайн машину, где делаем
#dpkg –i путь-к-папке/*.deb
Для проверки можно получить help:
#apt-offline –help

Читайте также:  Драйвера для windows 10 radeon hd 8750m

В принципе, последовательно используя указанный прием, можно и без apt-offline потихоньку перетаскивать другие пакеты с онлайн на оффлайн машину, но это возможно только для небольших систем, в которые входит порядка 10 пакетов (позже поясню). При этом я рекомендовал бы при установке пакета на онлайн машине предварительно чистить кэш
online#apt-get clean
и копировать скачанные deb-файлы в разные папки.

Теперь, после того как на оффлайн машине установлен apt-offline, рассмотрим как правильно с ней работать.
Во-первых, для инициализации системы установки пакетов apt, надо выполнить
offline#apt-get update
Она, конечно, обругается, что нет доступных источников для скачивания (ведь они в интернете), но при этом откуда-то загрузит базу данных, в которой будут как уже установленные пакеты, так и (самое главное!) доступные через интернет, с указанием, где именно надо их искать.
И вот теперь следует сделать на оффлайн машине, как написано в инструкциях,
offline#apt-offline set upgrade.sig
***Добавление 2020 года: у меня не создавался файл sig (или создавался непонятно где), пока я не перешел в папку на флэшке cd /media/username/flashname/aptoffline/ . Год назад, вроде, всегда создавался в текущей директории.
В результате в файл sig будут записаны пакеты, нуждающиеся в обновлении вместе с адресами откуда их взять. Это текстовый файл и любопытные могут ознакомиться с его содержимым.
После этого мы на онлайн системе сделаем
online#apt-offline get upgrade.sig –bundle upgrade.zip
в результате чего в архив upgrade.zip будут закачаны новые версии для обновляемых пакетов. Если заглянуть в этот файл, то мы увидим там собрание файлов deb. Теперь несем его на оффлайн машину и делаем там
offline#apt-offline install upgrade.zip
В результате все пакеты на оффлайн машине будут загружены в кэш apt.
Откровенно говоря, при создании upgrade.zip у меня машина довольно много ругалась, но говорила, типа: не боись, может это все и не страшно. А оффлайн машина скушала его на ура.
Но это еще не все. Чтобы пакеты действительно установились в систему, надо выполнить
offline#apt-get upgrade
Сначала будет выведена некоторая информация об актуальном состоянии и что предстоит сделать и запросит подтверждение на выполнение. Соглашаемся. Если все пакеты в наличии, то начнется их распаковка и настройка. Причем, поскольку этим будет заниматься apt, то это будет происходить в правильном порядке, чего не будет, если вы тупо делаете #dpkg –i *.deb
Если же каких-то пакетов не хватает (Downloading requested packages..), то apt поругается на отсутствие пакетов в интернете и ничего не сделает. Чтобы такого не происходило есть волшебный ключик –ignore-missing – типа, обнови, что можешь:
offline#apt-get —ignore-missing upgrade
Если все идет как надо, то начнется их распаковка и настройка.
По окончании неплохо выполнить
offline#apt-get update
Откровенно говоря, поскольку интернета нет, такая команда ничего нового про обновления не узнает, зато она проверит целостность своей базы данных управления пакетами и обругается, если что-то встало криво. Вот этого на оффлайн машине надо опасаться больше всего. При сломанной базе вам ничего не удастся добавить в систему. А чинить сломанную базу данных без интернета очень проблематично. Поэтому лучше избегать установки пакетов через dpkg, который понятия не имеет о зависимостях пакетов (точнее, имеет ограниченные понятия). Использование всяких —force также примерно то же самое, что в системных папках винды удалять библиотеки dll. Поэтому уж если вам хочется что-то ставить через dpkg, лучше это делать сразу после установки системы, не так жалко будет, если что.
Теперь, когда основные обновления установлены, можно переходить к установке дополнительных пакетов. Тут, мне кажется, лучше сначала ставить крупные системы – опять же из соображений – чтобы если вляпаться, то побыстрее.
Итак, допустим, вам надо добавить на offline систему пакет newpack. Для этого на оффлайн машине выполняем
offline#apt-offline set newpack.sig –install-packages newpack
Если хотите добавить сразу несколько пакетов, их следует перечислить через пробел. После этого на онлайн машине выполняем
online #apt-offline set newpack.sig –bundle newpack.zip
После этого несем newpack.zip на оффлайн машину и выполняем там
offline#apt-offline install newpack.zip
после чего все необходимые пакеты попадут в кэш оффлайн машины. Для окончательной установки надо выполнить
offline#apt install newpack
Если пакетов было несколько, их тоже надо все перечислить
И наконец, для проверки целостности базы
offline#apt-get update

Читайте также:  Linux где лежит пакет

Все, что я написал, касается установки пакетов из стандартных репозиториев. Для дополнительных, очевидно, потребуются дополнительные действия, но я пишу только о том, что сам делал. Если буду разбираться с дополнительными – напишу отдельно.

Источник

Оцените статью