我在 Linux 集群上使用 python(没有 root 访问权限)并想使用 numpy 模块。从Numerical Python下载 numpy 后,解压并尝试安装它:
python setup.py install --home=/home/"myusername"/"myfolder"
Run Code Online (Sandbox Code Playgroud)
(因为我已经成功地使用了以前的 python 模块),我得到了错误:
SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.
Run Code Online (Sandbox Code Playgroud)
因此,为了尝试在本地安装python-dev,我.deb从python2.7-dev_2.7.10-2_amd64.deb下载并将其解压缩到“myfolder”中,如http://www.g-loaded.eu/2008/01/28/ 中所述how-to-extract-rpm-or-deb-packages/,但是这并没有解决之前的错误,我找不到更多相关的帮助。
我无权访问apt-get或dpkg。
在 Archlinux 中,我可以打开一个包,它只是一个.tar.xz.,然后阅读.PKGINFO文件以找出我下载的软件版本。
但是,如果我有一个mysoftware-unstable.deb文件,则不清楚我必须在哪里查看才能知道版本(或者是否可以阅读它)。
请注意,我没有 Ubuntu,也没有apt-get诸如此类,我只有一个.deb文件。
debian 手册 ( https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html#s-maintscripts ) 说明了以下内容preinst:
许多“preinst”脚本会停止正在升级的软件包的服务,直到它们的安装或升级完成
这关于prerm:
此脚本通常会停止与包关联的任何守护程序。
据我所知,升级将同时调用prerm旧包和preinst新包,并且仅在删除包时prerm调用。
所以,如果我创建一个包含服务的 debian 包,有什么好的理由更喜欢使用preinstoverprerm吗?还是我两者都需要?
dh_installinit寻找debian/$(package).service,但一个包可能提供多种服务。
是否可以.service使用此方法为一个包裹捆绑多个包裹?
举例来说,我希望在 AMD64 上为 Jessie 安装最新的 Debian 软件包“libgcc1”。
如何确定从https://packages.debian.org下载的正确 URL
例如,在这种情况下,通过https://packages.debian.org网站手动单击最终会获得正确的下载,即:
http://ftp.us.debian.org/debian/pool/main/g/gcc-4.9/libgcc1_4.9.2-10_amd64.deb
重要提示:我没有 apt 可用。我正在编写一些从 .deb 包中手动提取依赖项名称的代码,但我现在被困在尝试制定下一步,即为包名称获取正确的实际 .deb 包。
因此,例如,我需要从这些信息中获取:
到:
http://ftp.us.debian.org/debian/pool/main/g/gcc-4.9/libgcc1_4.9.2-10_amd64.deb
我如何确定这种关系?
编辑:对于所有询问“为什么不使用 apt?”的人,答案是我试图解决的核心问题是安装 apt。我无法使用 apt,因为我正在尝试安装 apt。
谢谢
我正在使用运行最新 Raspbian Stretch Lite 2018-11-13 的 Raspberry Pi 2 Model B。
我构建了一个使用 SPI 与 LoRa 芯片(SX1276)通信的程序,从温度传感器获取一些数据并将温度打印在屏幕上。
我的程序只包含一个可执行文件(除了wiringpi 库)。
我正在寻找一个教程来使我的程序成为 *.deb 包。使用本教程,我设法构建了一个lora.deb包。
当我安装我的lora.deb包时sudo dpkg -i lora.deb,可执行文件刚刚部署在一个目录中。
如何使该程序包自动运行可执行文件并在每次系统启动时运行它?
我们有一对负载平衡的托管 VM,它们安装 apt-transport-https 作为启动脚本的一部分。
但是最近服务器进入错误状态,因为在启动时他们无法再下载所需的软件包版本(1.0.9.8.3),因为它不再存在于镜像中:http ://httpredir.debian.org/ debian/pool/main/a/apt
root@validator-dev-group-c2v4:/etc# apt-get install -f apt-transport-https
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
apt-transport-https
0 upgraded, 1 newly installed, 0 to remove and 27 not upgraded.
Need to get 138 kB of archives.
After this operation, 195 kB of additional disk space will be used.
Err http://httpredir.debian.org/debian/ jessie/main apt-transport-https amd64 1.0.9.8.3
404 Not Found
E: Failed to fetch http://httpredir.debian.org/debian/pool/main/a/apt/apt-transport-https_1.0.9.8.3_amd64.deb 404 Not Found …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建 programX.Y 的 deb 包,如果我使用以下命令生成 deb pacakge,则目标系统中可能存在相同的程序但其他版本(programX.Z):
dpkg-buildpackage -us -uc --source-option=--include-binaries --source-option=-isession
Run Code Online (Sandbox Code Playgroud)
当我尝试在具有其他程序版本 (programX.Z) 的系统中安装 pacakge 时,我得到:
dpkg: error processing programX.Y.deb (--install):
trying to overwrite `/usr/lib/XXX', which is also in package programX.Z
Run Code Online (Sandbox Code Playgroud)
我知道如果我通过 --force-overwrite 就可以解决问题,但我不想要那个解决方案。
问题是如何创建可以安装在系统中并自动强制覆盖的程序版本的 deb 包。一个例子可能是python。Python3 有很多版本(3.1、3.2、3.3、3.4、3.5...)。我想在安装了 python3.4 的系统中安装我的自定义 python 包版本 3.6。
有可能的?
我一直在寻找(在https://db.debian.org/machines.cgi 中)没有上游(父项目)的服务或 Debian 软件包列表。
因为我认为有很多 deb 软件包在 Debian 中还活着,但在外面已经死了。
在基于 rpm 的系统中,我们可以轻松查看是否存在与 rpm 文件相关联的签名:
rpm -qpi <rpm-file.rpm> | grep -i signature
Run Code Online (Sandbox Code Playgroud)
对于 .deb 文件,我们可以看到包信息,但不包括签名是否关联的信息:
dpkg-deb -I uma-18feb-latest.deb
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 中有没有办法在不使用以下实际验证签名的命令的情况下查看签名?
dpkg-sig --verify <deb-file.deb>
Run Code Online (Sandbox Code Playgroud)