2017-02-16 9 views
0

ローカルの未接続のボックスにRedis RPMを設定しています。私はシンボリックリンクを作成しようとしています。/ usr/sbinに/のRedisサーバ - >は/ opt /のRedis/Redisのサーバーrpmbuild -/usr/sbinシンボリックリンクがインストールされていません

を私はrpm -Uvh redis-3.2.7-1.rpmを行うときしかし、それは/opt/redis/redis-serverに罰金インストールされているが、シンボリックリンクを作成することはありません。

%build 
# Empty section. 

%install 
rm -rf %{buildroot} 
rm -f /usr/sbin/redis-server 

mkdir -p %{buildroot} 

# in builddir 
cp -a * %{buildroot} 

ln -sf /opt/redis/redis-server /usr/sbin/redis-server 

%clean 
rm -rf %{buildroot} 

%files 
/opt/redis/* 
/etc/init.d/redis 

答えて

2

ln -sf /opt/redis/redis-server /usr/sbin/redis-serverニーズがln -sf /opt/redis/redis-server %{buildroot}/usr/sbin/redis-serverをすると、その後/usr/sbin/redis-server%filesセクションに追加する必要がありますここに私のspecファイルの関連部分です。 %installrmも削除してください。

lnなかったないが失敗したという事実は、あなたが本当にシンボリックリンクを作って、あなたは見事に悪い考えであるrootとしてRPMを構築していると言われます。

私は、タールボールがトップレベルでoptで展開されていると仮定しています。そうでない場合はcpも間違っています。

+0

ああ、意味があります。私の問題は、私のtarballに 'usr/sbin'ディレクトリを作成していないことでした。 – ev0lution37

+0

そして私はDockerのコンテナでそれをやっているので、私はrootでしか走っていません。だから心配しないで。 – ev0lution37

+0

もし必要ならspecfileから 'mkdir -p'を実行することもできます。 –

関連する問題