Запустите 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/
В любом случае, я не знаю, считается ли это ответом, но, надеюсь, это кому-нибудь пригодится.
Правильный способ сделать это:
Действительно хороший способ установки пакетов в автономной системе — использовать
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
.