V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ifishman
V2EX  ›  问与答

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

  •  
  •   ifishman · 2014-11-02 19:30:40 +08:00 via Android · 12183 次点击
    这是一个创建于 3676 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前提:本地服务器无外网,只有通过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
    我觉得自己建个镜像更好些,当作离线服务器.就是需要个比较大的硬盘...
    erhandsome
        3
    erhandsome  
       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  
       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   ·   实用小工具   ·   2421 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:02 · PVG 00:02 · LAX 08:02 · JFK 11:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.