标签: software-packaging

通过命令行选项从Python程序运行unittest

这是我的设置 -

project/
    __init__.py
    prog.py
    test/
        __init__.py
        test_prog.py
Run Code Online (Sandbox Code Playgroud)

我希望能够通过在prog.py中调用命令行选项来运行我的单元测试,这样当我部署项目时,我可以随时部署运行单元测试的能力.

python prog.py --unittest
Run Code Online (Sandbox Code Playgroud)

在prog.py或我的项目的其余部分中我需要什么才能工作?

python unit-testing software-packaging python-2.7

19
推荐指数
3
解决办法
3万
查看次数

什么rpmbuild警告"文件列出两次"实际上意味着什么?

我需要为包中的一个主要目录指定公共属性,并为其中一些子目录指定特殊权限.例如

%files
%attr(-, myuser, mygroup) /opt/myapp 
%attr(750, myuser, mygroup) /opt/myapp/bin  # no exec permission to other
/etc  # this is the reason I can't use %defattr(-, myuser, mygroup)
Run Code Online (Sandbox Code Playgroud)

我自然地在/ opt/myapp/bin下的每个文件上收到"文件列出两次"警告.我的问题是,它究竟意味着什么?rpmbuild用它做什么?我无法在任何地方找到答案.我可以忽略它吗?什么优先,第一次或最后一次?

我不想myapp明确列出所有内容来解决这个问题.还有其他方法吗?谢谢

installation rpm rhel software-packaging rpmbuild

14
推荐指数
3
解决办法
1万
查看次数

使用RPM spec文件中的脚本定义版本

我有一个RPM规范文件,在rhel7上使用rpmbuild构建,我想用脚本定义Version.

我在这里阅读http://www.techrepublic.com/article/rpmproc-spec-file/,我可以这样做:

%define version 1.2

Version: %{version}
Run Code Online (Sandbox Code Playgroud)

在这里RPM spec文件 - 是否可以动态填充spec文件变量,我可以用脚本定义:

%define whoami %(cmd)
Run Code Online (Sandbox Code Playgroud)

所以我试着在我的规范文件中这样做:

%define version %(echo "$(sed -n 's|^[ ]*appVersion = "\(.*\)"|\1|p' /fullfilepath/values.txt | sed 's/^\(.*\)-.*$/\1/')")

Version: %{version}  **Line 23**
Run Code Online (Sandbox Code Playgroud)

但我得到了一个

error: line 23: Empty tag: Version:
Run Code Online (Sandbox Code Playgroud)

到目前为止我测试的东西:

%define version %(echo "12") --basic script works ok, version becomes 12

//As a command straight in terminal
$ echo "$(sed -n 's|^[ ]*appVersion = "\(.*\)"|\1|p' /fullfilepath/values.txt | sed 's/^\(.*\)-.*$/\1/')"
//returns 1.2
Run Code Online (Sandbox Code Playgroud)

这些工作得很好,所以我不知道是什么导致它失败.当我在spec文件中的define标签中调用相同的东西时,有什么想法可能会让它失败?

更新

我尝试用实际值替换文件名,所以它看起来像这样

echo "$(sed …
Run Code Online (Sandbox Code Playgroud)

bash rpm software-packaging rpmbuild rpm-spec

14
推荐指数
1
解决办法
7007
查看次数

独立Java SE应用程序的项目目录结构是什么?

独立Java SE(基于命令行)应用程序的标准项目目录结构是什么?

src文件夹将包含.java正确组织的包中的所有文件.除此之外,我有bin包含我的.class文件的文件夹.

我的项目中有属性文件和XML配置文件.我应该在哪个目录中放置它们?我应该创建一个名为的包com.myproject.config并将所有.xml配置文件放在其中吗?

我希望依赖的罐子与我的最终包装一起包装.那么我应该创建一个文件夹(比如名称lib)来保存所有这些.jar文件吗?

java deployment software-packaging

13
推荐指数
4
解决办法
4万
查看次数

如何从apple macOS更新包中的'Payload'文件中提取内容?

我正在提取macOS sierra更新包 - macOSUpd10.12.1.pkg使用以下命令到/ tmp/macosupd目录.

pkgutil --expand /Volumes/macOS\ Sierra\ Update/macOSUpd10.12.1.pkg /tmp/macosupd 
Run Code Online (Sandbox Code Playgroud)

我可以看到以下包捆绑在metapackage中.

-rwxr-xr-x   1  Distribution
drwxr-xr-x   6  FirmwareUpdate.pkg
drwxr-xr-x   5  FullBundleUpdate.pkg
drwxr-xr-x  36  Resources
drwxr-xr-x   6  macOSUpd10.12.1.pkg
Run Code Online (Sandbox Code Playgroud)

我无法提取Payload文件的内容.例如,当我尝试提取macOSUpd10.12.1.pkg的Payload时,我收到以下错误消息:

用tar:

tar -xvf macOSUpd10.12.1.pkg/Payload 
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
Run Code Online (Sandbox Code Playgroud)

与xar:

xar -xvf macOSUpd10.12.1.pkg/Payload 
Error opening xar archive: macOSUpd10.12.1.pkg/Payload
Run Code Online (Sandbox Code Playgroud)

当我在有效负载文件上运行file命令时,我得到一条消息:

file macOSUpd10.12.1.pkg/Payload 
macOSUpd10.12.1.pkg/Payload: data
Run Code Online (Sandbox Code Playgroud)

通过使用xxd命令查看Payload文件的初始位,我可以看到文件类型pbzx

xxd macOSUpd10.12.1.pkg/Payload 


00000000: 7062 7a78 0000 0000 0100 0000 0000 0000  pbzx............
00000010: 0100 0000 0000 0000 0031 …
Run Code Online (Sandbox Code Playgroud)

macos lzma software-packaging xz macos-sierra

13
推荐指数
2
解决办法
1万
查看次数

我可以忽略setuptools MANIFEST.in中的符号链接吗?

使用python的setuptools(python setup.py sdist)创建源代码分发时,我使用的是MANIFEST.in包含该行的文件:

recursive-include mypackage

因为我想在mypackage目录中包含一些非模块文件.但是,mypackage目录下还有符号链接,其目标我不想包含在我的源代码发行版中.有没有办法在里面指定"忽略符号链接" MANIFEST.in

我知道......我可能不应该有那些符号链接.

python symlink software-packaging

11
推荐指数
1
解决办法
881
查看次数

如何在Unix/Linux中创建软件包

我们如何创建软件包.因此,在提取我们的软件后,tar ball用户可以执行以下典型步骤:

$ gunzip < mycode.tar.gz | tar xvf -
$ ./configure
$ make
$ make install
Run Code Online (Sandbox Code Playgroud)

c++ unix boilerplate software-packaging

7
推荐指数
2
解决办法
2306
查看次数

Autoconf子目录与子包相互依赖?

我手上有一个大项目(主),它被分成几个组件(liba,b,c,d),以便于构建和维护.构建整个包时,必须按顺序构建所有子组件,其中一些组件相互依赖.

更明确地说,liba是b,c和d的先决条件,并且配置脚本会检查liba的存在.在构建b分发时,必须进行此检查以提供用户友好的错误消息.但是,在构建主包及其所有子包时,liba将构建为子目标.因此,当在主套件上运行configure时,尚未安装liba,并且b中的liba检查失败.

我可以通过将--with-liba = internal或类似的标志传递给b的configure脚本来纠正这个问题; 但是,我没有找到关于autoconf这种标志传递的任何文档.暂且,我已经在主长很长的定制生成文件,不只是一样与子目录的autoconf/automake的,但重新排序依赖性的位,而不是(配置利巴)=>使得(配置B)=>(建liba)=>(构建b),顺序是(configure liba)=>(build liba)=>(install liba)=>(configure b)=>(build b).

知道如何用标准的autoconf/automake子目录重构这个吗?

automake autoconf packaging autotools software-packaging

7
推荐指数
1
解决办法
964
查看次数

在(和多个操作系统)上创建Python分发(egg)的最佳实践是什么?

我们是一家蟒蛇店.我们在内部开发了不同的python包,并将部署到客户的环境(机器)上.

这就是我们的开发和发布周期的发生方式.

一旦开发人员完成对包的"测试",就准备包的分发(egg文件)并将其推送到中央存档位置.当我们想要将我们的软件部署到客户时,将在其环境中下载和安装相同的发行版(egg文件).

假设"测试"发生在多个操作系统上(为了检查跨平台的API的兼容性),准备发行版的最佳实践是什么,并被推送到中央归档位置.

是否最好在归档服务器上安装特定于操作系统的鸡蛋(例如,samplepkg-1.0.0.win32.egg和samplepkg-1.0.0.linux.egg?不确定如何使用setuptools以这种方式准备它们.)或者有一个鸡蛋,因为API在各个平台上保持不变?社区遵循的任何其他做法?

python egg setuptools software-packaging

7
推荐指数
1
解决办法
1005
查看次数

如何防止CMake在安装时为共享库创建符号链接?

有没有办法阻止CMake为共享库创建一个符号链接,比如libfoo.so当你使用so-versioning时(这意味着你会有类似的东西libfoo.so.0.8)?

我之所以问这个问题,是因为我有一个项目,我想让这个项目的多个版本并行安装.但是,如果多个包中存在类似符号链接的文件,则大多数包管理器会拒绝并行安装.

作为背景信息:我们正在使用CPack来构建软件包,最后我认为它是CPack的一个缺陷,你不能阻止这个符号链接,或者至少能够分离开发包和运行时包,例如debian.然而,到目前为止,我有一些幻想,只是阻止CMake创建符号链接可能比修补CPack更容易.

cmake shared-libraries software-packaging

7
推荐指数
1
解决办法
4120
查看次数