[Topic DIscussion] 希望能有一个更好用得软件包及依赖下载工具
Tofloor
poster avatar
xia
deepin
2023-01-14 00:28
Author

我主要做python,开发得环境不能连接互联网,原来在windows下都是在联网得电脑上pip download XXX,把包及依赖下载本地,然后拷贝到工作机器上然后 pip install --no-index XXX安装就行了。

现在尝试用deepin,python的第三方库可以如以前那样解决,但是编译安装python需要安装类似build-essential libssl-dev zlib1g-dev等一堆依赖,依赖还有依赖,联网条件下sudo apt ....很容易搞定,可是想把环境部署到工作电脑就有点难了,网上介绍的办法(类似搭建apt离线源之类得),要么下载得依赖不全,需要来回反复折腾,要么就是一堆看不懂的复杂bash脚本,报错了也不知如何是好(linux基础不好😂 )。

希望能有一个工具,将这个问题简化,做的和python的pip一样,提供软件包名就可以将软件包及所有的依赖下载,拷贝到其他系统就可以方便得离线安装。

Reply Favorite View the author
All Replies
thepoy
deepin
2023-01-14 00:35
#1

你可以用 conda,在个人电脑上安装 miniconda 后,将安装目录复制到工作电脑中就行

Reply View the author
xia
deepin
2023-01-14 00:40
#2
thepoy

你可以用 conda,在个人电脑上安装 miniconda 后,将安装目录复制到工作电脑中就行

我得意思是类似build-essential libssl-dev zlib1g-dev这些依赖,如何做离线安装

Reply View the author
神末shenmo
deepin
Spark-App
2023-01-14 00:47
#3

apt install xxx -d

Reply View the author
xia
deepin
2023-01-14 00:49
#4
It has been deleted!
xia
deepin
2023-01-14 00:50
#5
It has been deleted!
神末shenmo
deepin
Spark-App
2023-01-14 00:50
#6
xia It has been deleted!

用优盘复制过去

Reply View the author
xia
deepin
2023-01-14 00:56
#7
神末shenmo

apt install xxx -d

而且这个只能下载软件包本身,不能下载依赖和依赖的依赖

Reply View the author
187******75
deepin
2023-01-14 01:03
#8

说实在的这问题不知道是不是深度的基础软件版本低导致的,如果是估计V23能解决,不是的话估计解决不了了。

Reply View the author
Lwh2008-Equinox
deepin
2023-01-14 01:22
#9
xia

而且这个只能下载软件包本身,不能下载依赖和依赖的依赖

apt install -f pkg- name

Reply View the author
嗨皮
deepin
2023-01-14 03:11
#10
The user is banned, and the content is hidden.
xia
deepin
2023-01-14 03:14
#11
嗨皮
The user is banned, and the content is hidden.

道理我都懂,感觉好麻烦,好多坑在等着我😰

Reply View the author
嗨皮
deepin
2023-01-14 03:19
#12
The user is banned, and the content is hidden.
xia
deepin
2023-01-14 04:16
#13
Lwh2008-Equinox

apt install -f pkg- name

这个命令是用于修复依赖关系的吧

Reply View the author
SamLukeYes
deepin
2023-01-14 04:39
#14

你可能想要的是 Nix。Nix 可以写一个配置文件然后到处部署,部署的内容可以是开发环境、用户配置文件、应用程序乃至整个系统(NixOS)。

Reply View the author
方老四
deepin
2023-01-15 00:26
#15

v23的玲珑包工具集就是用来解决这个问题的技术,所有的依赖要么在runtime里、要么在应用里,一般不会存在软件依赖问题。玲珑应用只依赖于运行时,不再依赖操作系统环境,因为runtime是可下载安装、可共享和升级的独立应用软件包。

Reply View the author
Lwh2008-Equinox
deepin
2023-01-15 08:54
#16
SamLukeYes

你可能想要的是 Nix。Nix 可以写一个配置文件然后到处部署,部署的内容可以是开发环境、用户配置文件、应用程序乃至整个系统(NixOS)。

同时nixos在依赖处理最好。。。

还有就是ustc的nix可行吗?

Reply View the author
SamLukeYes
deepin
2023-01-15 09:52
#17
Lwh2008-Equinox

同时nixos在依赖处理最好。。。

还有就是ustc的nix可行吗?

没看懂你的问题tail

Reply View the author
Lwh2008-Equinox
deepin
2023-01-15 20:57
#18
SamLukeYes

没看懂你的问题tail

虚拟机想试一试,听说默认源速度慢的要死,USTC镜像站里面有nixos-binary不清楚可不可靠

Reply View the author
xia
deepin
2023-01-15 23:13
#19

在网上找到一个比较靠谱的:

https://zhuanlan.zhihu.com/p/482592599

1 创建目录

mkdir -p /opt/offline-packages/archives
cd /opt/offline-packages/archives

2 下载软件及依赖(下载vim为例)
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances vim | grep "^\w" | sort -u)
vim后可跟多个包,同时下载

3 建立依赖的命令
cd /opt/offline-packages
sudo dpkg-scanpackages -m . /dev/null | gzip -9c > Packages.gz
cp Packages.gz ./archives
带上-m,会将所有包全部建立依赖关系到 Packages.gz中,如此会有重复,但无需剔除重复的包

4 最后打包供其他服务器使用
tar -zcvf offline-apt-packages.tar.gz offline-packages

5 离线源应用
将上边打包的离线包发送到目标机器上,解压
sudo tar -zxvf offline-apt-packages.tar.gz -C /opt

6 写入本地源,如有需要,提取备份原有源

echo "deb file:///opt/offline-apt-packages archives/"| sudo tee /etc/apt/sources.list

7 更新源
sudo apt-get update

上述方法难点在第2步(对于我来说~~),apt-cache depends出来得结果很多很杂,根据查阅手册

截图_deepin-terminal_20230115144329.png

预依赖(pre-depends)是必须要的,推荐(recommend)推荐下载但不是必须,其他的都可以不下载,所有最少下载得选项就是:

apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances vim

后面| grep "^\w" | sort -u对输出的条目进行规整(去除了前面得汉字和冒号)和排序。

我觉得花点时间,可以用python写个脚本,实现我得需求😁

Reply View the author