আরপিএম তৈরি করার সময় / usr / বিনে সিমলিংক তৈরি করা হচ্ছে


13

আমি এমন একটি অ্যাপ্লিকেশনের জন্য একটি আরপিএম তৈরি করছি যার ইতিমধ্যে একটি নেই। আমি এটি /optব্যবহার করে ডিরেক্টরিটি তৈরি করে সূক্ষ্মভাবে ইনস্টল করেছি $RPM_BUILD_ROOT, তবে আমি এটিতে একটি দম্পতি সিমলিংক তৈরি করতে চাই /usr/binযাতে অ্যাপ্লিকেশনটি পথে পাওয়া যায়। এটি করার জন্য আমার সমস্ত প্রচেষ্টায় "অনুমতি অস্বীকার" ত্রুটি পাওয়া গেছে কারণ আমি rpmbuildনন-রুট ব্যবহারকারী হিসাবে চালাচ্ছি এবং এটিতে ফাইল তৈরি করার অনুমতি নেই /usr/bin/

আমার বর্তমান .spec ফাইলটি এখানে:

Summary: Berkeley UPC
Name: berkeley_upc
Version: 2.8.0
Release: 1
Source0: %{name}-%{version}.tar.gz
License: GPL
Group: Development/Tools
BuildRoot: %{_builddir}/%{name}-root
Prefix: /opt/bupc2.8
Prefix: /usr

%description
Berkeley UPC on the BASS for the comp633 class.

%prep
%setup -q

%build
./configure CC=gcc44 CXX=g++44 --disable-aligned-segments --prefix=/opt/bupc2.8
make %{_smp_mflags}

%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install

mkdir -p ${RPM_BUILD_ROOT}%{_bindir}
mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man1

ln -sf /opt/bupc2.8/bin/upcc          ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upcc_multi    ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upcc_multi.pl ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upcdecl       ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upcrun        ${RPM_BUILD_ROOT}%{_bindir}
ln -sf /opt/bupc2.8/bin/upc_trace     ${RPM_BUILD_ROOT}%{_bindir}

ln -sf /opt/bupc2.8/man/man1/upcc.1      ${RPM_BUILD_ROOT}%{_mandir}/man1
ln -sf /opt/bupc2.8/man/man1/upcdecl.1   ${RPM_BUILD_ROOT}%{_mandir}/man1
ln -sf /opt/bupc2.8/man/man1/upcrun.1    ${RPM_BUILD_ROOT}%{_mandir}/man1
ln -sf /opt/bupc2.8/man/man1/upc_trace.1 ${RPM_BUILD_ROOT}%{_mandir}/man1

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
/opt/bupc2.8
%config /opt/bupc2.8/etc
%config /opt/bupc2.8/opt/etc

%{_bindir}/upcc
%{_bindir}/upcc_multi
%{_bindir}/upcc_multi.pl
%{_bindir}/upcdecl
%{_bindir}/upcrun
%{_bindir}/upc_trace

%{_mandir}/man1/upcc.1.gz
%{_mandir}/man1/upcdecl.1.gz
%{_mandir}/man1/upcrun.1.gz
%{_mandir}/man1/upc_trace.1.gz

উত্তর:


6

ln -sf /opt/bupc2.8/bin/upcc ${RPM_BUILD_ROOT}/%{_bindir}

লিঙ্কটি %buildবিভাগে তৈরি করা দরকার এবং আপনি কোথায় RPM ইনস্টল করছেন তাও নির্দেশ করতে হবে ।

লিঙ্কটি তৈরি করার আগে নিশ্চিত করে নিন যে গন্তব্য ডিরেক্টরিটি বিদ্যমান ${RPM_BUILD_ROOT}/%{_bindir}। আপনি ব্যবহার করতে পারেন mkdirবা install -dএই জন্য।


আপনি আমার পরামর্শ অনুসারে আমার .spec ফাইলটি সম্পাদনা করেছি এবং আমি নিম্নলিখিত ত্রুটিটি পেয়েছি: + ln -sf /opt/bupc2.8/bin/upcc / home / eddale / src / rpm / tmp / berkeley_upc- মূল / usr / বিন ln: প্রতীকী লিঙ্ক তৈরি করছে /home/eddale/src/rpm/tmp/berkeley_upc-root/usr/bin' to /opt/bupc2.8/bin/upcc ': এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
এডওয়ার্ড ডেল

আমি মনে করি আপনার গন্তব্য ডিরেক্টরিটি তৈরি করা দরকার /home/.../usr/bin। আমি এটি কীভাবে করব তা এখানে: github.com/ciupicri/rpmbuild/blob/master/SPECS/… (লাইন 36)।
ক্রিশ্চিয়ান সিউপিতু

সমস্যা ছিল। চূড়ান্ত কার্যকারী সংস্করণটি ধারণ করতে আমি প্রশ্নটি আপডেট করেছি। ধন্যবাদ!
এডওয়ার্ড ডেল

1

macro %{__ln_s} ভাল

উদাহরণস্বরূপ প্রতীকী লিঙ্ক পোস্ট ইনস্টল করুন:

%post
%{__ln_s} -f %{_bindir}/exec %{_bindir}/exec2

উদাহরণস্বরূপ লিংক আনইনস্টল সরান:

%postun
rm -f %{_bindir}/exec2

1
কোনও আরপিএম-ইউ আপগ্রেড করার সময়, পুরানো আরপিএম% পোস্টুন চালায় এবং ফাইলটি নষ্ট করে দেবে। নতুন আরপিএমের কোনও লিঙ্ক থাকবে না, আপনার কোডটি খারাপ।
ljdelight
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.