各位 Debian 系的同学,你们是怎么解决离线安装 Deb 包的依赖问题的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ifishman
V2EX    问与答

各位 Debian 系的同学,你们是怎么解决离线安装 Deb 包的依赖问题的?

  •  
  •   ifishman 2014-11-02 19:30:40 +08:00 via Android 12688 次点击
    这是一个创建于 4003 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前提:本地服务器无外网,只有通过deb装

    网上多是生成依赖关系图,但是我这种情况还得一个一个的去源里慢慢找,再一个一个的下载。

    完了还不一定漏掉一个两个的

    所以我想伸手的是:有没有一个工具能根据源和包名称来生成一个依赖包在该源中的链接表,批量下载,最好还能生成依赖顺序,从底层往上记录,这样也方便顺序安装。

    不知道有没有现成的,或者,这是不是一个good idea
    12 条回复    2018-08-30 10:00:01 +08:00
    9hills
        1
    9hills  
       2014-11-02 19:41:39 +08:00   1
    Ubuntu:

    清空 /var/cache/apt/archives

    sudo apt-get -y install --reinstall --download-only XXXX

    这样XXXX以及它的所有依赖包就会存到archives目录,copy走,批量install即可
    046569
        2
    046569  
       2014-11-02 19:49:28 +08:00
    我觉得自己建个镜像更好些,当作离线服务器.就是需要个比较大的硬盘...
    calvey
        3
    calvey  
       2014-11-02 19:52:17 +08:00
    把整个源脱下来就好了
    cbsw
        4
    cbsw  
       2014-11-02 19:55:54 +08:00
    apt-offline
    ifishman
        5
    ifishman  
    OP
       2014-11-02 20:02:30 +08:00 via Android
    @9hills 我的情况比较特殊,内网服务器是ARM架构,外网的是X86,这样是否可以换ARM源,再update & --download-only ?
    wisatbff
        6
    wisatbff  
       2014-11-02 20:04:22 +08:00
    能解决网的问题就优先解决,不然要手动装一个大的软件能把人累死。可以像楼上说的自己整个本地源。。
    先获得所有依赖
    $ dpkg -I package.deb
    然后找/写个脚本..
    9hills
        7
    9hills  
       2014-11-02 20:06:42 +08:00
    @ifishman 可以,但是别安装就好。。arm就是重新编译了下
    ifishman
        8
    ifishman  
    OP
       2014-11-02 20:45:27 +08:00
    @9hills 实验了一把,apt还是会去找i386的资源,然后报404错误,难道我姿势不对?
    wanganjun
        9
    wanganjun  
       2014-11-02 21:49:27 +08:00
    曾经试过挂载iso文件,从iso中直接获取包,可以用。只是是在intel的cpu上试的
    withrock
        10
    withrock  
       2015-10-10 18:02:39 +08:00
    apt-offline +1
    你把那几个特别大的镜像 ISO 下载到内网就可以了
    Showfom
        11
    Showfom  
    PRO
       2017-01-07 23:25:43 +08:00 via iPhone
    @046569 也不用很大 1T 的硬盘可以放很多很多了
    CheneyC
        12
    CheneyC  
       2018-08-30 10:00:01 +08:00
    为了回答这个问题,还专门注册了一个账号,也是佩服自己。另外新用户 7000s 后回复的设置佩服这个网站;


    就题主的需求,基于几个源和二进制包名,得到这个二进制包的向上所有依赖包,架构 deb 系。
    这里介绍两个相关命令:
    1 ) apt-cache depends xx #获取 xx 的依赖关系
    例如
    -----------------------
    root@cbs-06:/home/cc# apt-cache depends vim
    vim
    依赖: vim-common
    依赖: vim-runtime
    依赖: libacl1
    依赖: libc6
    依赖: libgpm2
    依赖: libpython2.7
    依赖: libselinux1
    依赖: libtinfo5
    建议: <ctags>
    exuberant-ctags:i386
    exuberant-ctags
    建议: vim-doc
    建议: vim-scripts
    冲突: vim:i386

    -----------------------
    2 ) apt-rdepends vim #依次返回向上依赖的包
    例如:
    -----------------------
    root@cbs-06:/home/cc# apt-rdepends vim
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    vim
    Depends: libacl1 (>= 2.2.51-8)
    Depends: libc6 (>= 2.15)
    Depends: libgpm2 (>= 1.20.4)
    Depends: libpython2.7 (>= 2.7)
    Depends: libselinux1 (>= 1.32)
    Depends: libtinfo5
    Depends: vim-common (= 2:7.4.052-1ubuntu3)
    Depends: vim-runtime (= 2:7.4.052-1ubuntu3)
    libacl1
    Depends: libattr1 (>= 1:2.4.46-8)
    Depends: libc6 (>= 2.14)
    PreDepends: multiarch-support
    libattr1
    Depends: libc6 (>= 2.4)
    PreDepends: multiarch-support
    libc6
    Depends: libgcc1
    libgcc1
    Depends: gcc-4.9-base (= 4.9-20140406-0ubuntu1)
    Depends: libc6 (>= 2.14)
    PreDepends: multiarch-support

    .... 中间内容较多省略了....

    debconf
    PreDepends: perl-base (>= 5.6.1-4)
    perl-base
    PreDepends: dpkg (>= 1.14.20)
    PreDepends: libc6 (>= 2.14)
    debconf-2.0
    mime-support
    vim-common
    Depends: libc6 (>= 2.3.4)
    vim-runtime

    -----------------------

    综上:apt-rdepends 这个命令可以满足题主的要求,对结果进行正则匹配下再下载到本地即可。
    eg:
    j=0;for i in `apt-rdepends XX |grep "Depends:" |awk '{print $2}' |sort |uniq `;do echo "$j)---$i";apt-get download $i;j=$(($j+1));done
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2604 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 12:29 PVG 20:29 LAX 05:29 JFK 08:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86