这是我的问题:
我有一个程序,并希望以二进制格式分发它,以便用户不需要自己编译它.
我已经构建了一个.deb包.但是,我记得,应该有一些程序,它需要一个配置文件,并生成不同格式的不同二进制包,如.deb,.rpm,甚至.dmg,.msi等.意思是,我只需要告诉它哪个文件应该包含在包中(以及如何构建它),它可以为我生成不同的包.
在搜索了一些关键词后,我注意到在不知道其名称的情况下很难找到这样的程序.(我确实应该有类似的东西.事实上,我记得我在某个地方看过它.)
我有一个 RPM 包,我使用 Alien 将其转换为 Debian 包。当我尝试使用 ubuntu 软件中心在 ubuntu 上安装它时,它会发出警告,如维护者姓名/地址格式错误(当我使用 dpkg -i 命令时,它安装时没有任何错误警告)。
我的问题是在构建 RPM 包时我在哪里设置维护者名称和地址(以及其他 debian 特定的元数据),以便外星人将它设置在 debian 包中?
我正在尝试使用 maven 插件构建 RPM 包。
如果我添加插件配置 RPM 包没有被制作,RPM 插件站点上的手册说包标签应该是 RPM 但这似乎导致构建失败,说这个目标是有效的。
有没有人有任何可以分享的例子?
编辑 错误是未知包装:rpm
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>rpm</packaging>
<profile>
<id>local</id>
<build>
<resources>
<resource>
<directory>src/main/resources/properties/dev</directory>
</resource>
<resource>
<directory>src/main/resources/txt</directory>
</resource>
<resource>
<directory>src/main/resources/universal</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1-alpha-3</version>
<extensions>true</extensions>
<executions>
<execution>
<id>generate-rpm</id>
<goals><goal>rpm</goal></goals>
<phase>prepare-package</phase>
</execution>
</executions>
<configuration>
<summary>...</summary>
<name>...</name>
<version>...</version>
<release>...</release>
<vendor>...</vendor>
<packager>...</packager>
<group>Application</group>
<mappings>
<mapping>
<directory>/tmp/testing</directory>
</mapping>
</mappings>
<!--<requires>filesystem, bash, grep</requires>-->
<description>
...
</description>
<prepareScript>RPMScripts/prep.bash</prepareScript>
<preinstallScript>RPMScripts/preInstall.bash</preinstallScript>
<install>RPMScripts/install.bash</install>
<postinstall>RPMScripts/postInstall.bash</postinstall>
<cleanScript>RPMScripts/clean.bash</cleanScript>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<failOnError>true</failOnError>
</configuration>
</plugin>
<plugin> …Run Code Online (Sandbox Code Playgroud) 1%{?dist}是什么意思?这是什么意思?我没有在任何地方找到这个意思
Name: hello
Version: 2.8
Release: 1%{?dist}
Summary: The "Hello World" program from GNU
License: GPLv3+
URL: http://ftp.gnu.org/gnu/%{name}
Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz
BuildRequires: gettext
Requires(post): info
Requires(preun): info
%description
Run Code Online (Sandbox Code Playgroud)
"Hello World"计划,完成了适当的FOSS项目的所有功能,包括配置,构建,国际化,帮助文件等.
%prep
%autosetup
%build
%configure
make %{?_smp_mflags}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为脱机RPM存储库构建ISO映像.我有我需要的文件和结构,但是当我创建ISO映像时,文件名是乱码:
ConsoleKit-32bit-0.2.10-64.65.1.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)
变
ConsoleKit-32bit-0.2.10-64..r
Run Code Online (Sandbox Code Playgroud)
我在命令行上使用以下选项尝试了此操作并获得了相同的结果:
genisoimage -f -U -o update.iso /data/iso
genisoimage -f -l -allow-lowercase -o update.iso /data/iso
genisoimage -f -l -allow-leading-dots -relaxed-filenames -allow-lowercase -allow-multidot -no-iso-translate -o update.iso /data/iso
Run Code Online (Sandbox Code Playgroud)
是否有任何我可能会遗漏的文件名将被保留?这对于ISO repo正常工作至关重要.
想象一个名为 的 RPM abc-123-1.x86.rpm,我在其中发现了一个错误。
但我不知道如何命名新包。
也许abc-123-2.x86.rpm?但是如果有一个xyz.rpm依赖abc-123-1呢?
也许abc-123-1.x86.1.rpm,...
所以我的问题是RPM 的 Name-Version-Release 的规则是什么?
我正在编写一个 bash 脚本,它可以在 YUM 存储库中自动签署 RPM 包。为了完成这项任务,我使用expect.
到目前为止,这是我的源代码:
/usr/bin/expect <<EOD
spawn bash -c "rpm --resign ${NEW_REPO}/packages/*.rpm"
expect "Enter pass phrase:"
send "${GPG_PASS}\r"
expect eof
EOD
Run Code Online (Sandbox Code Playgroud)
NEW_REPO是 YUM 存储库的路径,GPG_PASS是 GPG 密钥的密码。
在大多数情况下,这非常有效并且可以成功地对包进行签名。
问题:即使该目录包含 42 个包,此代码块也仅对 28-30 RPM 的包进行签名。从命令行手动签署一批 RPM 包工作正常,但expect我的脚本中的块只是在到达所有包之前停止。这是一些奇怪的怪癖expect,还是我做错了什么?欢迎提出解决方法/建议。
谢谢
使用spec文件创建的rpm将创建目录"directory1"和/ var/lib/directory1中的所有文件.
对于另一个用例,我想在"/ var/lib"中创建另一个目录,该目录应该是directory1的符号链接.
eg:
cd /var/lib/
ls -la
directory2 -> directory1
directory1
Run Code Online (Sandbox Code Playgroud)
如何在不使用spec文件中的绝对路径的情况下实现此目的?
我需要运行:
rpm2cpio mypackage.rpm | cpio -idmv
Run Code Online (Sandbox Code Playgroud)
但是,我需要将输出放在不同的目录中。有没有比做更优雅的解决方案
mv <output> <to/other/directory>
Run Code Online (Sandbox Code Playgroud)
执行提取后?