这是我的设置 -
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或我的项目的其余部分中我需要什么才能工作?
我需要为包中的一个主要目录指定公共属性,并为其中一些子目录指定特殊权限.例如
%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明确列出所有内容来解决这个问题.还有其他方法吗?谢谢
我有一个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) 独立Java SE(基于命令行)应用程序的标准项目目录结构是什么?
src文件夹将包含.java正确组织的包中的所有文件.除此之外,我有bin包含我的.class文件的文件夹.
我的项目中有属性文件和XML配置文件.我应该在哪个目录中放置它们?我应该创建一个名为的包com.myproject.config并将所有.xml配置文件放在其中吗?
我希望依赖的罐子与我的最终包装一起包装.那么我应该创建一个文件夹(比如名称lib)来保存所有这些.jar文件吗?
我正在提取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) 使用python的setuptools(python setup.py sdist)创建源代码分发时,我使用的是MANIFEST.in包含该行的文件:
recursive-include mypackage
因为我想在mypackage目录中包含一些非模块文件.但是,mypackage目录下还有符号链接,其目标我不想包含在我的源代码发行版中.有没有办法在里面指定"忽略符号链接" MANIFEST.in?
我知道......我可能不应该有那些符号链接.
我们如何创建软件包.因此,在提取我们的软件后,tar ball用户可以执行以下典型步骤:
$ gunzip < mycode.tar.gz | tar xvf -
$ ./configure
$ make
$ make install
Run Code Online (Sandbox Code Playgroud) 我手上有一个大项目(主),它被分成几个组件(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子目录重构这个吗?
我们是一家蟒蛇店.我们在内部开发了不同的python包,并将部署到客户的环境(机器)上.
这就是我们的开发和发布周期的发生方式.
一旦开发人员完成对包的"测试",就准备包的分发(egg文件)并将其推送到中央存档位置.当我们想要将我们的软件部署到客户时,将在其环境中下载和安装相同的发行版(egg文件).
假设"测试"发生在多个操作系统上(为了检查跨平台的API的兼容性),准备发行版的最佳实践是什么,并被推送到中央归档位置.
是否最好在归档服务器上安装特定于操作系统的鸡蛋(例如,samplepkg-1.0.0.win32.egg和samplepkg-1.0.0.linux.egg?不确定如何使用setuptools以这种方式准备它们.)或者有一个鸡蛋,因为API在各个平台上保持不变?社区遵循的任何其他做法?
有没有办法阻止CMake为共享库创建一个符号链接,比如libfoo.so当你使用so-versioning时(这意味着你会有类似的东西libfoo.so.0.8)?
我之所以问这个问题,是因为我有一个项目,我想让这个项目的多个版本并行安装.但是,如果多个包中存在类似符号链接的文件,则大多数包管理器会拒绝并行安装.
作为背景信息:我们正在使用CPack来构建软件包,最后我认为它是CPack的一个缺陷,你不能阻止这个符号链接,或者至少能够分离开发包和运行时包,例如debian.然而,到目前为止,我有一些幻想,只是阻止CMake创建符号链接可能比修补CPack更容易.
python ×3
rpm ×2
rpmbuild ×2
autoconf ×1
automake ×1
autotools ×1
bash ×1
boilerplate ×1
c++ ×1
cmake ×1
deployment ×1
egg ×1
installation ×1
java ×1
lzma ×1
macos ×1
macos-sierra ×1
packaging ×1
python-2.7 ×1
rhel ×1
rpm-spec ×1
setuptools ×1
symlink ×1
unit-testing ×1
unix ×1
xz ×1