我一直在安装与 C 程序一起使用的库。有没有办法保持 /lib 文件夹干净?我可以使用子目录、链接等来管理它吗?它变得非常混乱,我不确定如果我想稍后删除它,我是否能够充分删除特定的库。
/bin 也有同样的问题。
我在家使用 OSX,工作时使用 CentOS6,我正在与 IT 部门合作安装一些东西,例如 GCC。 yum 软件包不适用于最新的 GCC。
答案1
有没有办法保持 /lib 文件夹干净?
lib
Unix/Linux 类型系统上的目录本质上并不是“干净的”。它们是聚合目录,共同保存系统所需的所有库文件。
它们可能包含您不再需要的库。决定和应对这一问题的正确工具是包管理器。
在 OS X 上,情况就不那么清楚了。 OS X 有很多包管理器,有些是内置的,有些是第三方的:
在 OS X 上管理应用程序及其依赖库之间的配对的最常用方法可能是
.app
包,用户将其拖入/Applications
或~/Applications
安装,然后拖到废纸篓进行卸载。在 Finder 中,OS X 应用程序包的外观和行为类似于单个文件,但它们实际上是充满文件的目录,其中可能包含依赖库等。 (右键单击一个应用程序并选择“显示包内容”来探索这一点。)因此,当您通过将应用程序拖到垃圾箱来“卸载”该应用程序时,您不仅删除了主可执行文件,还删除了它的所有应用程序 -特定的库和非代码资产。
这基本上就是 Mac App Store 的工作原理。从这个意义上说,App Store 程序正在扮演
yum
或的角色apt-get
:.app
它下载的文件是受管理的软件包,与 CentOS 机器上的 RPM 几乎没有什么不同。我怀疑这非常符合您想要的状态:可执行文件、库和可执行文件的其他依赖项都保存在它们自己的子目录中,当不再需要时可以轻松删除。
还有一些旧
pkg*
工具,但这些工具多年来已经慢慢过时了。这就是当您打开一个.dmg
文件并获得一个.pkg
或.mpkg
文件时所使用的,双击该文件即可在其中安装该文件。这些工具将文件分散在您的系统各处,并且没有简单的第一方方法来卸载它们。因此,有许多第三方工具和手动技术用于卸载 OS X
pkg
软件包。因此,如果您的目标是精确管理系统上安装的文件集,我不建议您使用 OS X 包文件。
OS X 共有三个主要的第三方包管理系统:芬克,Mac端口, 和自制。
如果应用程序包不适合您的用例,我建议您使用这些存储库之一中的包。如今,自制软件似乎最受关注。
这些软件包系统的行为类似于 Linux 和 BSD 系统上的软件包管理器,您可以从简单的命令行界面安装、升级和删除软件包。
我正在与 IT 部门合作安装一些东西,比如 GCC。 yum 软件包不适用于最新的 GCC。
如果您需要最新的 GCC,则不应使用 CentOS。 CentOS 的全部要点是,软件包版本从初始操作系统发布之前的一段时间(通常是 6 个月或更长时间!)一直保持稳定,直到该版本的生命周期结束。然后固定到位的版本就得到了向后移植在操作系统的支持生命周期内进行修复。这是分发等获得稳定性的方式之一。
实际上只有一种官方方法可以为 CentOS 6 机器获取更新版本的 GCC:升级到 CentOS 7。
如果您认为您有充分的理由忽略该建议,则可以构建与操作系统提供的版本并行安装的 GCC 替代版本。也许最简单的方法是在构建自定义 GCC 时使用脚本--prefix
的选项。configure
例如:
$ ./configure --prefix=/usr/local/gcc-5.3
当您稍后说 时make install
,生成的二进制文件、库和非代码资产将全部放置在该目录前缀下,就像 Mac OS X 应用程序包的工作方式一样。
完成此操作后,您可以将自定义 GCC 打包为 RPM。这些文档是免费提供的,网上的例子比比皆是。或者,您可能会发现其他人已经这样做了,您可以使用他们的 RPM。
答案2
OSX 不使用/lib
(/Library
例如它有)。 CentOS/lib
用于其系统库(或/lib64
64 位系统),以及真的期望在那个位置找到他们。如果你清理它,你可能会破坏你的系统。
大多数人将非打包程序安装在/usr/local
(/usr/local/bin
、/usr/local/lib
等),甚至一些不常见的目录中,以避免与各种系统上的包发生冲突。
大多数类 Unix 系统(包括这些)都使用/bin
,并且可能不喜欢进行良好的清理。