小编Aar*_*rke的帖子

确定是否使用Yum Python API安装了软件包?

TLDR ; 我需要简单的Python调用给定一个包名(例如,'make')以查看它是否已安装; 如果没有,安装它(我可以做后一部分).

问题:

所以在http://yum.baseurl.org/wiki/YumCodeSnippets中给出了一些代码示例,但除了在ipython内部克服并猜测每个方法的作用之外,似乎没有任何实际的文档. yum的Python API.这显然都是部落知识.

[编辑]显然我只是偶然发现了API文档(当然,在收到可接受的答案之后).它没有从主页面链接,但这里是为了将来参考:http://yum.baseurl.org/api/yum/

我需要做什么:

我有一个部署配置脚本,它依赖于其他系统包(make,gcc等).我知道我可以像这样安装它们:http://yum.baseurl.org/wiki/YumCodeSnippet/SimplestTransaction但是我想有选项来查询它们是否已经安装,所以我可以如果包不存在而不是强制安装,则只是失败的附加选项.这样做的正确要求是什么(或者更好的是,有没有人真正打扰在代码示例之外正确记录API?)

我在这个项目之前从未接触过Python,我真的很喜欢它,但是......有些模块文档比独角兽骑行的妖精更难以捉摸.

python linux rpm yum

8
推荐指数
1
解决办法
8018
查看次数

strcmp()但是在AZ后的0-9?(C/C++)

由于我完全不同意的原因,但是"尽管我的反对意见仍在继续判决的权力(反可用性)",我有一个排序例程,它将基本的strcmp()与其名称排序进行比较.它很棒; 很难弄错那个人.但是,在第11个小时,已经确定以数字开头的条目应该在以字母开头的条目之后出现,与ASCII顺序相反.他们引用EBCDIC标准的数字跟随字母,所以先前的假设不是普遍的事实,我没有权力赢得这个论点......但我离题了.

这就是我的问题所在.我用新函数调用nonstd_strcmp替换了对strcmp的所有适当引用,现在需要实现修改以完成排序更改.我使用FreeBSD源作为我的基础:http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/libkern/strncmp.c.html

 if (n == 0)
  return (0);
 do {
  if (*s1 != *s2++)
   return (*(const unsigned char *)s1 -
    *(const unsigned char *)(s2 - 1));
  if (*s1++ == 0)
   break;
 } while (--n != 0);
 return (0);
Run Code Online (Sandbox Code Playgroud)

我想我可能需要花一些时间来真正思考它应该如何完成,但我确信我不是唯一一个经历过刚刚释放规范变化的大脑死亡的人.

c c++ strcmp lexicographic

7
推荐指数
4
解决办法
1275
查看次数

Node.js N-API 插件 - 如何字符串化/解析 JSON?

我正在使用N-API(C 接口,不要与围绕 N-API的node-addon-api C++ 包装器混淆)为 Node.js 编写一个插件,它从外部源接收 JSON 格式的数据并且需要在其对象形式上执行 JS 回调函数。但是,在将 JSON 格式的数据传递到 JS 回调之前,我无法将其解析为插件内的正确对象(即,由 JSON.parse 生成),并且似乎只能在其文本中传递它形式。

到目前为止,我发现的唯一示例涉及直接使用C++ NAN和 V8 API。我错过了什么吗?我应该对 JSON.parse 进行另一个 napi_call_function 调用,捕获它的返回值,然后传递它吗?(如果是这样,我如何从我的插件中获取 JSON.parse 回调信息?)有没有我没有找到的更简单的 API?

出于多种原因,我更愿意使用 C,而不是 C++,尽管我认为这是可以协商的。

foo.js

const myaddon = require('bindings')('myaddon');
const EventEmitter = require('events').EventEmitter;
const emitter = new EventEmitter();

emitter.on('eventReceived', (foo) => {
    var obj = JSON.parse(foo); // *** this is what I'd like to avoid ***
    console.log(obj.bar);
})

myaddon.RegisterForEvents(emitter.emit.bind(emitter));
Run Code Online (Sandbox Code Playgroud)

我的插件

void AsyncComplete(napi_env env, napi_status status, void * data) …
Run Code Online (Sandbox Code Playgroud)

node.js node.js-addon node.js-napi

5
推荐指数
1
解决办法
1156
查看次数

标签 统计

c ×1

c++ ×1

lexicographic ×1

linux ×1

node.js ×1

node.js-addon ×1

node.js-napi ×1

python ×1

rpm ×1

strcmp ×1

yum ×1