Articles of 打包

多结构二进制rpm和noarch

我有两个(32位和64位)版本的编译软件,我想打包成一个二进制RPM。 我想知道“noarch” 目标是否适合这个目的,还是有更好的select? 我看到的唯一一个'noarch'的问题是,在程序包中包含i386和x86_64二进制文件并不会使其与架构无关,而'noarch'应该被用于。

在Linux发行版中分发二进制应用程序

我已经写了一个应用程序,至今还不是开源的,我希望分布在各种Linux发行版的可执行文件。 什么是最好的办法做到这一点,我看了一点点.rpm和.deb包装,但我找不到,如果这可以用于二进制或不。 理想情况下,我想要像OS X上的PackageMaker或Windows上的常规安装程序,它会自动将其复制到/ usr / bin中。 那是.rpm和.deb软件包的用途还是我必须绑定一个自动执行它的shell脚本?

什么是$ RPM_BUILD_ROOT?

在构buildRPM包的过程中,我必须指定BuildRoot,稍后将在%install中使用,其中调用$ RPM_BUILD_ROOT。 我一直认为$ RPM_BUILD_ROOT是RPM执行打包的假安装。 然后,在安装时使用RPM包,它会安装到实际位置。 例如: $RPM_BUILD_ROOT/usr/bin 我认为$ RPM_BUILD_ROOT仅用于打包过程,在某些方面,当用户执行“rpm -ivh package.rpm”时,RPM可以区分$ RPM_BUILD_ROOT和实际的安装位置是/ usr / bin。 但是最近在阅读一些文档时,build议$ RPM_BUILD_ROOT是要安装的实际位置,而$ RPM_BUILD_ROOT是由用户通过设置环境variables$ RPM_BUILD_ROOT来指定的,以便让用户安装它们的包位置。 否则,$ RPM_BUILD_ROOT将为空,并将安装到默认位置。 在上面的情况下,它是/ usr / bin。 因此,$ RPM_BUILD_ROOT不仅仅是用于打包或“假安装”的过程,而是用户定义安装位置的一种方式,类似于在Windows中select文件夹的位置。 我不知道我的想法是否正确。 有人可以validation吗? 提前致谢。

如何编译使用boto访问S3的Python代码?

我试图编译一个简单的Python程序,它使用boto软件包将file upload到S3存储桶,并将其传输到单个可再发行的.exe文件中。 我接受任何编译方法。 到目前为止,我已经尝试了bbfreeze和py2exe ,都产生了相同的结果。 导致问题的代码如下所示: import boto #…snip… fname_base = os.path.basename(fname) s3 = boto.connect_s3(aws_access_key_id=_aws_key, aws_secret_access_key=_aws_secret_key, is_secure=False); bucket = s3.get_bucket(_bucket) key = bucket.new_key(fname_base) key.set_contents_from_filename(fname) 编译与可执行的捆绑工具和运行我得到: Traceback (most recent call last): File "s3stash.py", line 238, in <module> sys.exit(main()) File "s3stash.py", line 225, in main push_file_to_s3(f, options) File "s3stash.py", line 160, in push_file_to_s3 _push_with_boto(fname) File "s3stash.py", line […]

如何在使用包pipe理器时pipe理Perl模块?

这个最近的问题让我思考。 在我尝试的大多数Linux发行版中,通过包pipe理器可以使用一些Perl模块。 其他人当然不是。 有一段时间我会用我的包pipe理器,每当我需要安装一些CPAN模块,以确定包是否可用,并安装它时。 显而易见的好处是,只要新版本的软件包可用,就可以更新模块。 但是,如果模块不能以预封装的forms提供,并且该模块存在依赖关系,则会遇到麻烦。 每当cpan shell询问是否应该依赖依赖时,打包你的包pipe理器可能会相当累人。 另一个缺点是预封装模块的版本。 如果您正在运行Debian或Ubuntu,您很快就会发现,您将无法生活在stream血的边缘,就像许多CPAN模块作者似乎所做的那样。 Linux上的其他Perl人员如何处理这个问题? 你只是忽略你的软件包pipe理者所提供的? 是否有任何工具可以使(例如)更好的队友? 或者你只是不通过cpanshell安装任何东西?

如何在.cabal中指定对外部C库的依赖?

我使用Hackage上的FFI绑定来维护一个库。 所以我的Haskell库依赖于相应的C库及其头文件。 现在我在.cabal文件中指定外部依赖关系,如下所示: PkgConfig-Depends: libfoo >= 1.2 在Linux中它对我来说很好。 不过,我有一个图书馆的用户报告说,在Windows上安装pkg-config相当麻烦,而不是他更喜欢 Includes: foo.h Extra-libraries: foo 我希望我的库尽可能容易构build,并且不想强制不严格要求的构build依赖关系。 但是,我看到Cabal手册build议使用PkgConfig-Depends 。 我的问题: 我应该select哪一种跨平台软件包? 是否有可能写一个.cabal文件的方式,它可以使用pkg-config和没有? 顺便说一下,Haskell平台中包含pkg-config (我没有Windows机器来检查)?

如何运行安装的python脚本?

我用distutils来安装我的python包,用这个setup.py: import distutils.core args = { 'name' : 'plugh', 'version' : '1.0', 'scripts' : [ "scripts/plugh" ], 'packages': [ "plugh" ], } d = distutils.core.setup( **args ) 在Linux / Mac上,它按预期工作: % plugh hello world % 在Windows上,脚本“plugh”不运行: C:\Python25\Scripts>plugh 'plugh' is not recognized as an internal or external command, operable program or batch file. C:\Python25\Scripts> 我在http://bugs.python.org/issue7231上find了bug报告,当安装python时,\ Scripts目录没有被添加到PATH中,所以我应用了那张票据中描述的解决方法(即添加C:\ […]

任何可用于包装32位/ 64位可执行文件的工具?

我非常喜欢SysInternals工具(例如Process Explorer)处理64位兼容性的方式。 它看起来像32位可执行文件中embedded64位版本,并在必要时提取它。 我想要一个自动化的工具 – 即采取32位和64位可执行文件,以某种方式将它们打包在一起,并插入存根代码根据运行的平台启动正确的可执行文件。 在我开始推出自己的产品之前,有没有人知道这个已经存在的东西?