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
    • 最新
    • 标签
主页 / user-67563

Ishpeck's questions

Martin Hope
Ishpeck
Asked: 2019-04-13 09:02:17 +0800 CST

在 CoreOS 上哪里安装 NSS 模块?

  • 1

我有一个我编写的自定义 NSS 模块,我通常通过像这样复制库来安装它......

cp libnss_mymodule.so.0 /lib64/

...然后我将我的模块添加到/etc/nsswitch.conf ...

$ grep mymodule /etc/nsswitch.conf
passwd: mymodule files usrfiles sss systemd
group: mymodule files usrfiles sss systemd

这在 CentOS 7 中对我有用,但在 CoreOS 中不起作用,因为/lib64位于只读文件系统上。我可以将共享对象库放在对 nsdispath() 可见的 CoreOS 上的什么位置?

编辑:我尝试将文件添加到/opt/me/lib64并将其放入 LD_LIBRARY_PATH 环境变量中。它似乎没有帮助。

coreos
  • 2 个回答
  • 124 Views
Martin Hope
Ishpeck
Asked: 2019-03-12 17:29:20 +0800 CST

perl 的 PAR::Packer 生成的二进制文件在打包到 RPM 时会中断

  • 2

我有一个 perl 脚本,我想在没有安装 perl 解释器的系统上使用它(例如 linux 容器)。我用 PAR::Packer 生成了一个二进制文件,一切看起来都很好。

[0] [ishpeck@centbox03 /tmp/examply]$ file ./perlthing/scripts/hello.pl
./perlthing/scripts/hello.pl: Perl script, ASCII text executable
[0] [ishpeck@centbox03 /tmp/examply]$ cat ./perlthing/scripts/hello.pl
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;

print "Hello, world!\n"
[0] [ishpeck@centbox03 /tmp/examply]$ cat Makefile
CURDIR=/tmp/examply
TOPDIR=$(CURDIR)/packaging

rpm: perlbin
    sh -c 'for x in packaging/BUILD packaging/RPMS/x86_64 packaging/RPMS/x86 packaging/RPMS/arm packaging/SOURCES packaging/SPECS packaging/SRPMS; do mkdir -p $$x; done'
    rpmbuild --target x86_64 -bb $(TOPDIR)/SPECS/mypackage.spec --define '_topdir $(TOPDIR)' --define '_arch x86_64' --define '_working_dir $(CURDIR)'

perlbin: perlthing/binaries/hello.pl

perlthing/binaries/hello.pl: perlthing/scripts/hello.pl Makefile
    /usr/local/bin/pp -M File::** -M PAR:: --clean --verbose=2 --output=$@ $<

clean:
    rm perlthing/binaries/hello.pl

[0] [ishpeck@centbox03 /tmp/examply]$ make perlbin >/dev/null ; echo $?
0
[0] [ishpeck@centbox03 /tmp/examply]$ file perlthing/binaries/hello.pl
perlthing/binaries/hello.pl: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=7d5b38a792018d0202a96ce8645b00591e7ea7c5, stripped
[0] [ishpeck@centbox03 /tmp/examply]$ ./perlthing/binaries/hello.pl
Hello, world!

到目前为止,一切都很好。当我将二进制文件复制到没有 perl 解释器的机器时,它甚至可以工作:

core@CoreOS-1 ~ $ which perl
which: no perl in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/bin)
core@CoreOS-1 ~ $ ./hello.pl
Hello, world!

我想把它打包成一个 RPM:

[0] [ishpeck@centbox03 /tmp/examply]$ cat packaging/SPECS/mypackage.spec
Name:           ishy-mypackage
Version:        0.1
Release:        1%{?dist}
Summary:        My example package

License:        MIT
URL:            http://ishpeck.net

%description
This is my example package that includes a perl script bundled as a binary via PAR::Packer

%prep
echo "Prepare scriptlet is empty"

%build
echo "Nothing really to do"

%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/local/bin/
cp %{_working_dir}/perlthing/binaries/hello.pl $RPM_BUILD_ROOT/usr/local/bin/

%files
/usr/local/bin/hello.pl
[0] [ishpeck@centbox03 /tmp/examply]$ grep rpmbuild Makefile
        rpmbuild --target x86_64 -bb $(TOPDIR)/SPECS/mypackage.spec --define '_topdir $(TOPDIR)' --define '_arch x86_64' --define '_working_dir $(CURDIR)'
[0] [ishpeck@centbox03 /tmp/examply]$ make 

但是当我安装软件包时,perl 二进制文件不再工作了!

[0] [ishpeck@centbox03 /tmp/examply]$ sudo rpm -i ./packaging/RPMS/x86_64/ishy-mypackage-0.1-1.el7.x86_64.rpm
[0] [ishpeck@centbox03 /tmp/examply]$ which hello.pl
/usr/local/bin/hello.pl
[0] [ishpeck@centbox03 /tmp/examply]$ hello.pl
Usage: /usr/local/bin/hello.pl [ -Alib.par ] [ -Idir ] [ -Mmodule ] [ src.par ] [ program.pl ]
/usr/local/bin/hello.pl [ -B|-b ] [-Ooutfile] src.par
Removing files in "/tmp/par-6973687065636b/temp-51174"
Undefined subroutine &File::Find::finddepth called at -e line 11.
END failed--call queue aborted at -e line 616.

我不认为这是我使用pp生成二进制文件的方式的问题,因为如果我直接复制它,它似乎无处不在。我的大脑想把责任归咎于(我如何使用)rpmbuild,但我什至不知道从哪里开始。

我在这里遗漏了一些关于 rpmbuild 的神秘细节吗?

rpm
  • 1 个回答
  • 147 Views
Martin Hope
Ishpeck
Asked: 2019-02-15 16:47:43 +0800 CST

如何根据 %pre scriptlet 的结果使我的 RPM 中止安装

  • 3

我正在创建一个在系统上安装一些工具的 RPM 包。我想在安装我的 RPM 包之前检查一些机器状态。我最初的直觉是从%pre scriptlet 中运行一些命令,如果结果不是我喜欢的,则“退出 1”。但后来我遇到了这个说:

所有 scriptlet 必须以零退出状态退出。

有没有其他方法可以让 RPM 根据 shell 命令的结果中止安装包?

rpm
  • 1 个回答
  • 366 Views

Sidebar

Stats

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

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

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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