5

我的最终目标是把我的树莓派变成一个 FTP 服务器。它已连接到网络,但没有 Internet 连接。如果我可以运行“sudo apt-get install ....”命令,这似乎非常容易完成,但由于我没有互联网,这是不可能的。

我下载了python的“ftplib”,我认为一旦我启动它,我就可以连接到我的FTP服务器并与之交互,但现在我被卡住了。

我对 Linux 或 Web 服务器知之甚少,因此提前感谢您的耐心等待。

我认为一个可能的解决方案是通过互联网在我的计算机上下载一个 LAMP 包,然后将其传输到 Raspberry Pi,但我不确定我可能会遇到什么样的路径和文件夹问题。

4

5 回答 5

7

这样做永远不会干净,也永远不会完美。但下面是我为让它有时工作所做的工作。

您将需要一台类似于 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 offline http://apt-offline.alioth.debian.org/

于 2013-06-04T13:42:09.213 回答
2

您必须下载软件包及其依赖项。然后将它们放在sd卡上并执行:

cd folder_with_debs
sudo dpkg -i *.deb

顺便说一句,在大多数情况下,将 eth 电缆插入树莓派会更容易(正如您在 SO 上发布的那样,您通常应该可以访问互联网)

于 2013-06-04T13:28:22.947 回答
1

这是对@Inquisitor 的回应非常长的评论。

顺便说一句,超级有用的答案;它让我走上了正确的轨道。我将在下面为任何感兴趣的人提供一些注释;请注意,所有这些变通方法最终都不起作用,我只是直接从以下位置下载了文件:

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

但希望这对某人有用。

我在 pi 上安装 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

我将 repo( 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

有更多的依赖关系,所以我今天会解决这些问题,如果我发现其他有趣的东西,我会编辑这个答案。

当然,所有好东西都是chiastic,所以我不得不再次撤消一切,因为我不想在我的 amd64 mint 系统上安装 debian armhf 包:

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/

无论如何,我不知道这是否算作答案,但希望它对某人有所帮助。

于 2014-04-29T17:15:28.247 回答
0
sudo dpkg -i ftplib

对于 Debian 软件包。

于 2013-06-04T13:27:47.330 回答
0

正确的做法:apt-offline

在离线系统上安装软件包的真正好方法是使用apt-offline. 它几乎没有依赖项,允许您使用dpkg -i. 在pkgs.org上下载 deb 文件。

例子

# 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

Important: Do not proceed to the update and upgrade/install at the same time. By doing so the upgrade is performed from the package list already installed on the computer, not after the update.

Important 2: apt-offline install and upgrade are not enough to get the packages installed. The only thing this command do, is to fill up the cache of apt (/var/cache/apt/archives) with the packages. That allows you to proceed with apt install --no-download --fix-missing.

于 2022-01-23T15:46:49.493 回答