AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 737
Accepted
Chris Kimpton
Chris Kimpton
Asked: 2009-05-01 05:20:43 +0800 CST2009-05-01 05:20:43 +0800 CST 2009-05-01 05:20:43 +0800 CST

Ubuntu,如何像现有机器一样设置新机器

  • 772

我有一台机器安装了我需要的应用程序,我想在一个新的 Ubuntu 机器上安装它。

是否有一个脚本可以列出所有已安装的应用程序,以便我可以区分这些框并添加缺少的项目?

在此先感谢,克里斯

linux ubuntu
  • 9 9 个回答
  • 4702 Views

9 个回答

  • Voted
  1. Best Answer
    Hamish Downer
    2009-05-01T09:23:03+08:002009-05-01T09:23:03+08:00

    除了 pjz 提到的 dpkg 技巧,您可能还想查看etckeeper ( tutorial ) - 一个将您的 /etc/* 置于版本控制之下的应用程序,从而更容易找到您所做的任何更改并将它们复制到其他服务器。

    此外,对于比 pjz 方法生成的列表更短的列表,您可以使用

    $ deborphan -a --no-show-section > /tmp/mypackagelist
    

    这将为您提供一个软件包列表,这些软件包将安装您需要的所有其他软件包作为依赖项。如果您真的想浏览列表,这可能很有用。(dpkg --get-selections 将产生一个loooong列表)。此外,该列表足够短,您可以添加换行符并用“#”注释掉条目。然后在安装额外的包时你可以做

    $ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y
    

    这样,如果您只想在某些机器上安装某些软件包,则不必将它们从软件包列表中完全删除。

    • 18
  2. pjz
    2009-05-01T05:26:52+08:002009-05-01T05:26:52+08:00
    dpkg --get-selections >/tmp/mypackagelist
    

    应该做的伎俩。然后,确保新机器上的 /etc/apt/sources.list 具有与旧机器上相同的条目集后,将 mypackagelist 复制到新机器并执行以下操作:

    cat mypackagelist | xargs apt-get -y install 
    

    你应该很高兴。

    请注意,dpkg --get-selections 行也是偶尔放入 /etc/dir 的好信息 - 这意味着您不必费心备份 /bin/ 和 /usr/bin/ 等,因为您知道系统上有哪些软件包。

    • 17
  3. pcapademic
    2009-05-24T13:44:18+08:002009-05-24T13:44:18+08:00

    Ubuntu 论坛有一个很好的答案

    1. 在旧机器上: $ dpkg --get-selections > installed-software
      • 这将获取您已安装应用程序的列表
    2. 在新机器上: $ dpkg --set-selections
      • 这会将新机器设置为安装当前未安装在新机器上的软件包。
      • 看看新机器是否有一些未安装在旧机器上的软件包可能会很有趣,因此您可以在新机器上找到 dpkg --get-selections> 命令,然后使用 diff 比较两者的输出文件。
    3. 最后,在新机器上: $ dselect 和软件包将被安装。

    论坛讨论中的一些附加链接:

    1. 不要忘记您的 gpg 密钥(来自同一个线程)
    2. 如何安装所有需要的包并卸载所有不需要的包
    • 2
  4. Benji
    2015-06-06T06:04:02+08:002015-06-06T06:04:02+08:00

    更好的 dpkg 命令可能是【原机】

    dpkg --get-selections | grep -v deinstall > packages_list
    

    然后在安装[新机器; 转移 packages_list 后]

    sudo dpkg --set-selections < packages_list
    sudo apt-get -u dselect-upgrade
    
    • 2
  5. Nerdfest
    2009-05-29T04:09:40+08:002009-05-29T04:09:40+08:00

    如果您不是 CLI 粉丝(尽管您确实应该是),您可以使用 Synaptic 包管理器来保存已安装包的映像,并使用该文件(再次通过 Synaptic)加载新机器。在文件/保存标记选项下,有一个名为“保存完整状态”的复选框。

    • 1
  6. elcuco
    2009-05-29T04:32:48+08:002009-05-29T04:32:48+08:00

    你为什么不只是克隆机器使用dd?

    • 1
  7. user46844
    2010-06-26T10:49:26+08:002010-06-26T10:49:26+08:00

    有一个名为 ReMasterSys 的工具可以为您完成。见http://geekconnection.org/remastersys/

    我希望这会有用。

    • 1
  8. Tobu
    2010-06-26T14:41:53+08:002010-06-26T14:41:53+08:00

    使用FSArchiver复制机器是完全可以接受的。否则,这里有一些有用的命令对,您也可以将其中的前半部分添加到备份 cron 中:

    debconf-get-selections
    debconf-set-selections
    

    ~

    aptitude-create-state-bundle
    aptitude-run-state-bundle --unpack
    

    ~

    dpkg --get-selections
    dpkg --clear-selections; dpkg --set-selections
    

    您应该复制的位置是 /etc 和 /var。上面的命令直接操作 /var 中的一些文件,通过 debconf 间接操作 /etc 中的一些 conffile。通过复制这些子树并运行 aptitude,您将获得相同的效果。

    • 1
  9. Chris Kimpton
    2016-03-14T03:12:23+08:002016-03-14T03:12:23+08:00

    我猜Docker将是现在执行此操作的方法 - 在 Dockerfile 中定义要求 - 然后您可以在任何 Docker 主机上运行它。

    • 0

相关问题

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve