dpkg -i 命令安装一个软件(包含多个 deb 都在本地了), 如何按依赖顺序进行安装?

2019-11-28 15:19:35 +08:00
 css3

所有的依赖已经下载好了,只是要安装的话,如何保证按正确的顺序进行?另外就是没有外网可用。。要的包,都是本地的,而且都有

dpkg -i *.deb 这样中间很多报错,就是因为顺序不正确

3499 次点击
所在节点    程序员
22 条回复
imn1
2019-11-28 15:22:54 +08:00
写个 sh 不难吧?
ysc3839
2019-11-28 15:25:05 +08:00
试试在文件名前加上编号?
css3
2019-11-28 15:31:29 +08:00
@imn1 100 个写 100 行 dpkg -i xx deb 吗,?

@ysc3839 什么意思呢,不太懂
wangkun025
2019-11-28 15:32:34 +08:00
@css3
ysc3839
2019-11-28 15:36:10 +08:00
@css3 要先安装的包文件名前面加上小的数字,后安装的加上大的数字,这样的话 shell 的 * 展开后应该是按文件名排序的。
另外想了想这么做可能也很麻烦,也许可以试试写个脚本什么的把这些包里面的元数据提取出来生成 Packages 文件,然后加入 apt 源列表再安装就好了。
hoyixi
2019-11-28 15:37:42 +08:00
sudo cp <your path>/*.deb /var/cache/apt/archives/
sudo dpkg -i <你想装的那一个 deb>
sudo apt-get install -f
css3
2019-11-28 15:40:26 +08:00
@hoyixi 一个 python,可能有几十个 deb, 我要 ```dpkg -i <你想装的那一个 deb>``` 几十次吗😂
imn1
2019-11-28 15:41:34 +08:00
@css3
对我来说 100 行也不太难,我 copy 文件名(很多文件管理器可以)到编辑器,然后用正则每行加上 dpkg -i,done
不过,个人选择吧
MicrosoftAccount
2019-11-28 15:44:03 +08:00
@css3 #6 认真理解一下,再执行一下能死?
pmispig
2019-11-28 15:44:29 +08:00
做一个本地源,把包全部放到源里,建立依赖关系,用 apt 安装
hoyixi
2019-11-28 15:44:29 +08:00
@css3 #7
你自己说的,“安装一个软件”, “所有的依赖已经下载好了”
比如你要装 a.deb, 依赖 1.deb, 2.deb, 3.deb 。。。都下好了,那你就 sudo dpkg -i a.deb
n37r06u3
2019-11-28 15:45:39 +08:00
用 gdebi 吧 自动的
pmispig
2019-11-28 15:45:50 +08:00
还有另一种办法是,弄一台试错的机器,写一个循环,直到所有的包都成功安装为止,记录成功安装的顺序,然后生成一个列表就可以了
css3
2019-11-28 17:03:38 +08:00
@hoyixi 下载是按 apt-get install a 下载下来的 deb, 这样获取的 deb, 安装是用的 dpkg 安装的,不能直接 dpkg -i a 啊
lihongjie0209
2019-11-28 17:06:42 +08:00
centos 下安装流程:

1. 建立一个本地 repo, 地址指向 file://some/path/
2. 使用 createrepo 建立 repo 索引数据
3. yum makecache 使 yum 客户端读取到索引数据
4. yum install xxx 依赖自动安装


Ubuntu 估计也是一样的,google Ubuntu localrepo 之类的
lihongjie0209
2019-11-28 17:08:16 +08:00
nightwitch
2019-11-28 23:06:59 +08:00
6 楼答案都写好了,你试下不就行了
你把 a 的所有依赖都放到 apt 的缓存目录里,用 dpkg -i 安装 a,然后 apt install -f 会自动帮你按顺序装好 a 的所有依赖
css3
2019-11-29 09:19:50 +08:00
@MicrosoftAccount
@nightwitch
有点不太明白哈,举个例子说明一下,我要安装 python-dev 这个包(他就一个包,不是个 deb 文件,安装他,其实就是安装下边我说的 19 个 deb ),19 个 deb 包已放到 /var/cache/apt/archives/目录,如下图

https://t1.picb.cc/uploads/2019/11/29/kI7G2c.md.png

现在机器上断网状态

按 6 楼同学说的,我是执行 dpkg -i python-dev ? 肯定执行不了啊??

https://t1.picb.cc/uploads/2019/11/29/kI7HmK.png

要用 dpkg -i *.deb 才行,他会安装这 19 个 deb, 但顺序不是按依赖顺序来的,是乱序的,我现在的问题就是,如何尊重他的依赖啊,按正确的顺序安装下来,
css3
2019-11-29 09:20:48 +08:00
@css3 更正一下是 17 个 deb, lock 和 partial 不算
nightwitch
2019-11-29 16:25:06 +08:00
@css3 python-dev 是一个名字,它的实际包名是 python-dev_xxxx_amd64.deb, 你要用 dpkg 手动安装它,再用 apt 修复它的所有依赖

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/623984

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX