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 / 问题 / 9936
Accepted
cowgod
cowgod
Asked: 2009-05-20 07:51:24 +0800 CST2009-05-20 07:51:24 +0800 CST 2009-05-20 07:51:24 +0800 CST

升级 Gentoo Linux 的最佳程序?

  • 772

这就是我长期以来一直在升级 Gentoo 的方式。这是推荐的方法吗?有什么陷阱或更好的使用方法吗?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all
gentoo
  • 10 10 个回答
  • 21372 Views

10 个回答

  • Voted
  1. Van Gale
    2009-06-10T19:39:33+08:002009-06-10T19:39:33+08:00

    我一直在使用与您相同的步骤,除了:

    • eix-sync而不是emerge --sync因为我喜欢看到 portage 树的变化。这对于注意到我可能想要安装的树中新的软件包特别有用。

    • layman -S(偶尔)在主出现之前同步覆盖中的任何更改。

    • eclean-dist -d在revdep-rebuild清理过时的 tarball 之后。每次出现后我都会这样做,因为包降级并不常见。

    • eix-test-obsolete作为帮助保持我的 /etc/portage 文件整洁和最新的最后一步。这也让我知道我何时安装了已从 portage 中完全删除的软件包,因此我需要从存储库中获取 ebuild。最近的一个例子,我必须屏蔽所有版本的 iproute2 > 2.6.22.20070710,因为我的 Xen VPS 上运行的是旧内核,但它最近从 portage 中删除了。

    eix-sync并且eix-test-obsolete在 app-portage/eix 中。

    eclean-dist在 app-portage/gentoolkit 中。

    • 9
  2. user261123
    2014-12-25T02:16:38+08:002014-12-25T02:16:38+08:00
    1. emerge --sync或eix-sync或emerge-delta-webrsync和eix-update
    2. emerge -av portage
    3. eclean-dist

    检查 linux-headers、glibc、binutils、libtool 或 gcc 之一是否有重大更新(例如 gcc 从 4.6 更新到 4.8)。如果不是,请转到第 11 步。

    完全重建:

    1. rm -rf $(portageq pkgdir)/*— 清理 PKGDIR 中的缓存
    2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
    3. gcc-config <number of new gcc>切换到新的 gcc
    4. source /etc/profile
    5. emerge -avb glibc binutils gcc libtool
    6. emerge -avbke system
    7. emerge -avbke world

    如果您在第 10 步或第 11 步有任何问题,请修复并重试

    更新世界:

    1. /var/lib/portage/world从不必要的包中清理你的世界文件并检查/etc/portage实体
    2. fixpackages
    3. emerge -avuDN world
    4. eselect python update
    5. python-updater -- -av
    6. perl-cleaner --all -- -av
    7. emerge -a --depclean
    8. revdep-rebuild -i -- -av

    如果您在步骤 14-18 中遇到任何问题,请修复它并重复步骤 13 中的所有步骤。

    1. etc-update或者dispatch-conf
    2. glsa-check -vp affected您可以在更新后将受影响的包放在插槽中
    3. emaint --check all
    • 7
  3. Best Answer
    Ophidian
    2009-06-30T18:18:26+08:002009-06-30T18:18:26+08:00

    好像你已经覆盖了它。唯一的另一个提示是可能比盲目的批发更新慢一点。您始终可以单独更新软件包或依赖链,emerge -DNuav <atom>而不是world(使用 --oneshot 来处理您不想添加到世界文件中的内容,例如系统库)。

    请注意,如果您定期更新,而不是每隔几个月进行一次整体批量更新,这样做总是更容易。此外,为避免太多意外,您可能会发现订阅其中一个邮件列表很有帮助gentoo-user(警告:此列表中每天约 100 封邮件),因为几乎所有重大更新问题都可能出现在列表中大量讨论解释如何解决它们。

    我猜想下一个主要的“问题”更新将是一旦稳定后迁移到 openrc(它是在去年年中 iirc 的 ~arch 上完成的,只有几个问题,主要是网络更改)。

    • 5
  4. Adam D'Amico
    2009-05-20T08:09:01+08:002009-05-20T08:09:01+08:00

    如果您的目标是拥有绝对最新的所有软件包,那么是的,这似乎涵盖了所有基础。不过,我很惊讶这对你有用很长时间,因为我想你会经常被块、损坏的 deps 等咬伤。在过去的几年里,我对批发更新变得更加小心,而是在查看更新树后选择零敲碎打。Gentoo 的发展似乎已经过了鼎盛时期。也许是因为 Ubuntu 的兴起。

    无论如何,您可能会尝试的另一件事是对整个过程非常挑剔,那就是清理您的 distfiles。如果您搜索,那里有脚本。

    • 3
  5. laurentb
    2009-05-30T04:47:44+08:002009-05-30T04:47:44+08:00
    glsa-check -t all
    glsa-check -f all
    

    这就是你应该首先运行的。如果您升级所有软件包,则不需要。

    哦,我更喜欢 cfg-update ;)

    • 3
  6. Eric Leschinski
    2013-09-21T13:31:58+08:002013-09-21T13:31:58+08:00

    这就是我所做的:

    emerge --sync         //Synchronize the package manager with the latest 
                          //version of each package.
    
    
    emerge -aDvNu system  //updates the system, but only important if you want the
                          //latest stable version of the actual compiler and libraries
                          //with the core system.
    
    emerge -uDNav world   //world means everything we've asked to be emerged before
                          //this does not include things that came pre installed.
                          //N means if you change your use directives in 
                          //your make.conf file to pull in the new packages.
    
    emerge -av depclean   //removes libraries or programs that don't have any other 
                          //dependencies because of an update.
    
    
    revdep-rebuild        //means if something is broken by an update, it 
                          //recompiles it.  Fixes dynamic and static linking problems.
    

    如果您不完全理解评论,请阅读此内容,因为它是如何更新您的 gentoo 软件包的权威。

    http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1

    • 1
  7. John Downey
    2009-05-20T08:10:04+08:002009-05-20T08:10:04+08:00

    您的过程是正确的,尽管可能不需要运行每个命令,但通常我只是进行同步和更新世界。Emerge 通常会告诉您是否需要运行脚本来重建文件,例如在主要 Python 升级期间,并且还会告诉您何时合并配置更改。因为 Gentoo 实际上并没有从版本到版本的升级路径。在你出现世界的那一刻,你就得到了最新版本。

    • 0
  8. hajowieland
    2009-06-01T10:34:18+08:002009-06-01T10:34:18+08:00

    很长一段时间以来,我一直使用这个程序:

    emerge -f --update --newuse --deep world && emerge --update --newuse --deep world
    

    我,就我而言,更喜欢通宵更新。但有时会发生某些故障,因此您必须再次下载所有(或某些)程序。

    也许 --newuse 开关是不必要的,但我经常编辑我的 make.conf 所以对我来说很有意义。

    • 0
  9. Dan Carley
    2009-06-10T22:46:21+08:002009-06-10T22:46:21+08:00

    看起来不错,虽然我不会这么快运行 depclean。

    除非您有像低 HDD 空间这样的要求,否则您可以回来并以较少的常规间隔进行 depclean。让他们在短时间内出现并没有什么坏处。如果您不幸在更新后注意到一些损坏的软件包,那么您可以确定它们不是删除任何松散依赖项的结果。

    • 0
  10. yanchenko
    2009-06-30T18:01:52+08:002009-06-30T18:01:52+08:00

    这就是我在我的 VPS 上这样做的方式:

    第 0 步(来自 /etc/crontab)

    0 0   * * *     root    emerge --sync &> /dev/null
    

    步骤1:

    emerge --update --deep --newuse world -av
    

    第2步:

    emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
    
    • 0

相关问题

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