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 / 问题 / 103535
In Process
Anthony
Anthony
Asked: 2010-01-18 06:33:40 +0800 CST2010-01-18 06:33:40 +0800 CST 2010-01-18 06:33:40 +0800 CST

查找不在路径中的二进制文件/文件/库 - 特别是 gcj

  • 772

我正在尝试构建 pdftk,这显然需要 gcj。由于它不在我的路径中,我可以将保存 gcj 的目录添加到我的路径中,或者在预制的 Makefile 中定义路径。

问题是我不知道:

a)gcj 在哪里,b)它是否存在于服务器上(至少以我可以添加到路径的方式)。

在我之前从源代码构建二进制文件的尝试中,这个问题不止一次出现,所以我希望我可以一次提出两个问题来解决我当前的问题并在未来避免这个问题......

  1. 有没有办法将我拥有读取/执行权限的所有内容添加到我的路径中?子问题,这是一个坏主意吗?

  2. whereis只搜索我的路径吗?是否有一些等效的方法可以查找我需要的文件/目录,而无需搜索整个主机并拒绝访问所有其他目录?

  3. 有没有一种方法可以确定库/二进制文件是否绝对不可用,而只是不在我的路径中?

  4. 有没有办法告诉,特别是gcc如果gcj可用?

  5. 我可以将 gcj 编译到我的用户目录而不必用它编译所有 gcc 吗?

  6. 在构建二进制文件时,是否有一种(通用)方法来标记编译或生成文件以处理任何依赖项,因为它发现它们而不是简单地失败?

  7. 共享主机情况下的典型用户是否能够使用操作系统包库在用户级别获取包?

solaris package-management gcc
  • 3 3 个回答
  • 2076 Views

3 个回答

  • Voted
  1. automaciej
    2010-01-21T00:23:13+08:002010-01-21T00:23:13+08:00

    (1.) 有没有办法将我拥有读取/执行权限的所有内容添加到我的路径中?子问题,这是一个坏主意吗?

    ...出于安全原因,这是一个坏主意。

    (2.) whereis 只搜索我的路径吗?是否有一些等效的方法可以查找我需要的文件/目录,而无需搜索整个主机并拒绝访问所有其他目录?

    您可以将 locate (或在 OpenCSW的 findutils 中提供的 glocate)与允许使用正则表达式的 -r 选项一起使用:glocate -r /gcj$

    (3.) 有没有一种方法可以确定库/二进制文件是否绝对不可用,而不是在我的路径中?

    glocate 可以告诉你,假设gupdatedb最近运行过。

    (4.) 如果 gcj 可用,有没有办法告诉,特别是对于 gcc?

    最好的方法是扫描已安装的软件包。已安装文件的列表位于/var/sadm/install/contents.

    (5.) 我可以将 gcj 编译到我的用户目录而不用编译所有 gcc 吗?

    没试过,但你仍然需要经历很多麻烦。最好获取一个已经可用的 gcj 二进制文件。如果您必须自己编译它,那么最好使用现有的构建描述,例如这个.

    (6.) 在构建二进制文件时,是否有一种(通用)方法来标记编译或生成文件以处理任何依赖项,因为它发现它们而不是简单地失败?

    我假设您正在考虑类似于 Gentoo 的emerge 的东西,它会在编译您想要的软件包之前下载并安装依赖包。这不容易做到;特别是如果您以普通用户的身份编译所有内容,因为您需要使用 chroot 环境。这是一个好主意,但不是微不足道的。

    (7.) 共享主机情况下的典型用户是否能够使用 OS 包库在用户级别获取包?

    获取包裹是什么意思?如果您想要提取 .pkg 文件的内容,您可以使用 pkgtrans 命令,如下所示:pkgtrans foo.pkg ./ all
    但是,也可以执行类似pbuilder的操作,它会创建一个 chroot 环境,您也可以在其中进行编译作为包安装,都在主目录中。

    回到 gcj 问题,我认为您需要指定 makefile 的构建时间依赖项,并依赖于包含 gcj 的包,在已知路径中,然后您可以在构建描述中使用该路径。

    一般来说,如果您在共享主机中,编译软件包会很痛苦,最好找到一个可以安装和删除软件包并写入 /usr 的系统。

    使用某种构建框架也是一个好主意,例如GAR,它可以做所有正确的事情并消除许多烦恼:它检查构建时间依赖关系、下载 tarball、验证校验和、提取、应用补丁(如果有),配置、构建、安装和制作包,您可以在单个 Makefile 中指定所有内容。学习使用这样的框架需要一些时间,但如果你倾向于自己构建包,花在学习上的时间会很快得到回报。

    • 2
  2. Dennis Williamson
    2010-01-18T06:50:05+08:002010-01-18T06:50:05+08:00
    1. 是的,出于安全原因,这是一个坏主意。恶意脚本或程序,或者一个简单的错误可能是一个真正的问题。

    2. whereis搜索明显的地方,如/bin,/usr/bin和其他。请参阅手册页文件部分

    locate如果可用或其他方式,您可以使用find:

    locate gcj
    

    或者

    find / -name gcj
    
    • 0
  3. kubanczyk
    2010-01-20T03:42:36+08:002010-01-20T03:42:36+08:00

    1:没有人这样做 -> 坏主意。

    2 + 3:肯定的方法是:

    pkginfo | grep -i gcj         # (Solaris specific)
    find / -name gcj 2>/dev/null
    

    4:不知道。

    5:可能,这显然是很多手工工作。

    6:不。在 Makefile 中,您可以将任何通常包含 gcj 的目录附加到 PATH (您有根据的猜测)。这不会伤害任何人。

    7:不,安装包由管理员决定。但您无需成为管理员即可将包中包含的文件提取到您的主目录:

    pkgtrans my-gcj.pkg .     # (Solaris specific) converts package to a "filesystem format package" (i.e. directory tree)
    

    进行此类减法后,该软件将很少可用(所有权错误、路径错误、库路径错误、配置文件路径错误、未执行安装脚本、未检查先决条件……)。这样的操作不仅在 Solaris 上也是可能的,在大多数其他 Unix/Linux 风格上也是可能的——使用它们的打包工具。

    • 0

相关问题

  • 从现有目录创建 zfs 的正确方法?

  • 在 Solaris lp 或 lpr 上打印

  • 如何将 ZFS ACL 从一个文件克隆到另一个文件?

  • Solaris DNS

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

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

    • 30 个回答
  • Marko Smith

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

    • 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
    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