Запустите sudo apt-get install без подключения к интернету

Моя конечная цель - превратить мой Raspberry Pi в FTP-сервер. Он подключен к сети, но без подключения к интернету. Кажется, что это было бы очень легко сделать, если бы я мог просто запустить команду "sudo apt-get install ....", но, поскольку у меня нет интернета, это невозможно.

Я скачал "ftplib" для python, который, как мне кажется, позволит мне подключиться и взаимодействовать с моим FTP-сервером, как только я его включу, но сейчас я застрял.

Я не очень разбираюсь в Linux или веб-серверах, поэтому заранее благодарю за терпение.

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

5 ответов

Решение

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

Вам понадобится машина, похожая на FTP-сервер, и с FTP-сервера вам нужно будет загрузить все пакеты и зависимости. Как правило, с интернет-машины вы сначала запустите:

sudo apt-get clean 

Приведенная выше команда очищает /var/cache/apt/archives/ каталог, так что вы можете убедиться, что он содержит только пакет и зависимости, которые вы хотите. Затем выполните:

sudo apt-get -d build-dep <package_name>

-d делает только загрузку и build-dep получает все необходимые зависимости и помещает их в /var/cache/apt/archives/, Вот почему вам как минимум нужна подобная сборка. Иногда вам даже нужно сделать sudo apt-get remove <package name> если на вашей машине уже есть пакет, который требуется вашему серверу назначения.

Затем вы берете данные из этого каталога и помещаете их на какое-либо устройство для передачи на ваш FTP-сервер. Оттуда вы выполняете на своей целевой машине:

sudo dpkg -i *.deb

Еще одна вещь, которую вы можете сделать, это использовать apt офлайн http://apt-offline.alioth.debian.org/

Вам придется скачать пакеты и их зависимости. Затем поместите их на SD-карту и выполните:

cd folder_with_debs
sudo dpkg -i *.deb

Кстати, в большинстве случаев было бы проще подключить кабель Eth к Raspberry Pi для краткости (так как вы публикуете здесь на SO, вы должны иметь доступ к Интернету в целом)

Это действительно длинный комментарий в ответ на @Inquisitor.

Супер полезный ответ, кстати; это привело меня на правильный путь. Я собираюсь включить несколько заметок ниже для тех, кто заинтересован; пожалуйста, обратите внимание, что весь этот обход не работает, и я только что скачал файлы прямо из:

ftp://ftp.us.debian.org/debian/pool/main/t/tk8.5/
ftp://ftp.us.debian.org/debian/pool/main/t/tcl8.5/

Но, надеюсь, это будет кому-то полезно.

Я устанавливаю tk8.5-dev и tcl8.5-dev на пи. Для этого я нашел:

https://packages.debian.org/wheezy/armhf/tk8.5-dev/download
https://packages.debian.org/wheezy/armhf/tcl8.5-dev/download

Я добавил репо (deb http://ftp.de.debian.org/debian wheezy main) чтобы /etc/apt/sources.listзатем побежал sudo apt-get update, При обновлении он кричал мне:

GPG error: http://ftp.de.debian.org wheezy Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 6FB2A1C265FFB764

потому что я не на Debian, но я сделал

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6FB2A1C265FFB764

Мне сказали no ultimately trusted keys found, Я побежал sudo apt-get update снова. Если вы пропустите ключ (как я сделал изначально), он скажет вам There is no public key available for the following key IDs: 6FB2A1C265FFB764, Если у вас все еще есть проблемы, это может быть полезно, или, возможно, флаг --allow-unauthenticated.

В этот момент я побежал

sudo apt-get -d build-dep tk8.5-dev_8.5.11-2_armhf.deb tcl8.5-dev_8.5.11-2_armhf.deb

и получил

Unable to find a source package for tk8.5-dev_8.5.11-2_armhf.deb

Поэтому я добавил архитектуру в dpkg:

sudo dpkg --add-architecture armhf
sudo apt-get update

И apt-get все еще не смог найти посылки. Ооо я сдался и скачал файлы напрямую. В моем случае, так как я не мог использовать build-dep, я скачал и установил все перечисленное здесь для armhf:

https://packages.debian.org/stable/devel/libxss-dev
https://packages.debian.org/stable/devel/libxft-dev
https://packages.debian.org/stable/devel/tk8.5-dev
https://packages.debian.org/stable/devel/tk8.5
https://packages.debian.org/stable/devel/tcl8.5-dev
https://packages.debian.org/stable/devel/tcl8.5

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

Конечно, все хорошие вещи хиастичны, поэтому мне пришлось снова все отменить, так как я не хочу устанавливать пакеты debian armhf в мою систему amd64 mint:

sudo dpkg --remove-architecture armhf
sudo apt-key del 8B48AD6246925553
sudo apt-key del 6FB2A1C265FFB764
sudo apt-get update

И убрал deb http://ftp.de.debian.org/debian wheezy main из /etc/apt/sources.list

Дополнительные источники: http://savvyadmin.com/download-pgp-keys-with-apt-key/

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

sudo dpkg -i ftplib

для пакета Debian.

Правильный способ сделать это:

Действительно хороший способ установки пакетов в автономной системе — использовать apt-offline. Это действительно несколько зависимостей, позволяющих установить его в автономной системе с помощью dpkg -i. Загрузите файл deb на pkgs.org .

Пример

      # Online is the computer connected to internet
# Offline is the computer disconnected from internet
# ---
# ## Install apt-offline ## 
# Online
apt update
apt install apt-offline
# Offline
#   Download last package from pkgs.org
dpkg -i apt-offline_1.8.*_all.deb


# ## Update System ##
# Offline
apt-offline set --update updates.sig
# Online
apt-offline get updates.sig --bundle updates.zip
# Offline 
apt-offline install updates.zip


# ## Upgrade System ##
# <!> Update must be done before.
# Offline
apt-offline set --upgrade upgrade.sig
# Online
apt-offline get upgrade.sig --bundle upgrades.zip
# Offline 
apt-offline install upgrades.zip
apt upgrade --no-download --fix-missing


# ## Install packages##
# <!> Update must be done before.
# pkg1, pkg2 & pkg3 being the packages you want to install
# Offline 
apt-offline set install.sig --install pkg1 pkg2 pkg3
# Online
apt-offline get install.sig --bundle install.zip
# Offline 
apt-offline install install.zip
apt install pkg1 pkg2 pkg3 --no-download --fix-missing

Важно : Не приступайте к обновлению и обновлению/установке одновременно. При этом обновление выполняется из списка пакетов, уже установленных на компьютере, а не после обновления.

Важно 2 : apt-offline installа также upgradeнедостаточно для установки пакетов. Единственное, что делает эта команда, это заполняет кеш apt ( /var/cache/apt/archives) с пакетами. Это позволяет вам продолжить apt install --no-download --fix-missing.

Другие вопросы по тегам