2017-05-31 6 views
0

完全なMinicondaインストールでオフラインマシンに配布できるいくつかのパッケージを含むtar.gzファイルを作成します。このtar.gzはRPMと共にインストールされます。Condaのフルインストールを再割り当て

私がやってすべてのものをパックするために試してみた:

sudo sh miniconda.sh -b -p /opt/miniconda 
sudo /opt/miniconda/bin/conda create -p /opt/miniconda/envs --file packages.txt 
tar -czf miniconda.tar.gz /opt/miniconda 

は、それから私は、すべての内容を抽出し.specファイルを作成します。これは、rpmbuildのディレクトリの構造です:

[[email protected] rpmbuild]$ tree -L 5 
. 
├── BUILD 
├── BUILDROOT 
├── RPMS 
│   └── x86_64 
│    └── foo-1.0-1.x86_64.rpm 
├── SOURCES 
│   ├── foo-1.0 
│   │   └── opt 
│   │    └── miniconda 
│   │     ├── bin 
│   │     ├── conda-meta 
│   │     ├── envs 
│   │     ├── etc 
│   │     ├── include 
│   │     ├── lib 
│   │     ├── LICENSE.txt 
│   │     ├── pkgs 
│   │     ├── share 
│   │     └── ssl 
│   └── foo-1.0.tar.gz 
├── SPECS 
│   └── foo.spec 
└── SRPMS 
    └── foo-1.0-1.src.rpm 

.specファイル

%define  __spec_install_post %{nil} 
%define   debug_package %{nil} 
%define  __os_install_post %{_dbpath}/brp-compress 

Summary: Trying to distribute miniconda 
Name: foo 
Version: 1.0 
Release: 1 
License: GPL+ 
Group: Development/Tools 
SOURCE0 : %{name}-%{version}.tar.gz 
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root 

%description 
"Here's the description" 

%prep 
%setup -q 

%build 
# Nothing 

%install 
rm -rf %{buildroot} 
mkdir -p %{buildroot} 
cp -a * %{buildroot} 

%clean 
rm -rf %{buildroot} 

%files 
%defattr(-,root,root,-) 
/opt/miniconda 

%changelog 

そして、私はRPMをインストールしようとすると、それは失敗します。

[[email protected] rpmbuild]$ sudo yum localinstall ./RPMS/x86_64/foo-1.0-1.x86_64.rpm 
[sudo] password for user: 
Loaded plugins: langpacks, product-id, rhnplugin, search-disabled-repos, subscription-manager 
This system is receiving updates from RHN Classic or Red Hat Satellite. 
Examining ./RPMS/x86_64/foo-1.0-1.x86_64.rpm: foo-1.0-1.x86_64 
Marking ./RPMS/x86_64/foo-1.0-1.x86_64.rpm to be installed 
Resolving Dependencies 
--> Running transaction check 
---> Package foo.x86_64 0:1.0-1 will be installed 
--> Processing Dependency: /opt/anaconda1anaconda2anaconda3/bin/python for package: foo-1.0-1.x86_64 


One of the configured repositories failed (Unknown), 
and yum doesn't have enough cached data to continue. At this point the only 
safe thing yum can do is fail. There are a few ways to work "fix" this: 

    1. Contact the upstream for the repository and get them to fix the problem. 

    2. Reconfigure the baseurl/etc. for the repository, to point to a working 
     upstream. This is most often useful if you are using a newer 
     distribution release than is supported by the repository (and the 
     packages for the previous distribution release still work). 

    3. Run the command with the repository temporarily disabled 
      yum --disablerepo=<repoid> ... 

    4. Disable the repository permanently, so yum won't use it by default. Yum 
     will then just ignore the repository until you permanently enable it 
     again or use --enablerepo for temporary usage: 

      yum-config-manager --disable <repoid> 
     or 
      subscription-manager repos --disable=<repoid> 

    5. Configure the failing repository to be skipped, if it is unavailable. 
     Note that yum will try to contact the repo. when it runs most commands, 
     so will have to try and fail each time (and thus. yum will be be much 
     slower). If it is a very temporary problem though, this is often a nice 
     compromise: 

      yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true 

Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 

答えて

0

私はそれを行うことができました。 私の.specファイルです。

%define  __spec_install_post %{nil} 
%define   debug_package %{nil} 
%define  __os_install_post %{_dbpath}/brp-compress 

%define tarversion foo-1.0 
%define tarfile %{tarversion}.tar.gz 
%define installscript install.sh 

Summary: Trying to distribute miniconda 
Name: foo 
Version: 1.0 
Release: 1 
License: GPL+ 
Group: Development/Tools 
SOURCE1 : %{name}-%{version}.tar.gz 
SOURCE2 : %{installscript} 
BuildRoot: %{_builddir}/%{name}-root 

%description 
%{summary} 

%prep 

%build 
# Nothing 

%install 

mkdir -p %{buildroot}%{_bindir} 
cp -a %{SOURCE1} %{SOURCE2} %{buildroot}%{_bindir}/ 
chmod a+x %{buildroot}%{_bindir}/%{installscript} 

%clean 
rm -rf %{buildroot} 

%files 
%{_bindir}/%{installscript} 
%{_bindir}/%{tarfile} 

%pre 
echo "Deleting old miniconda installation..." 
rm -rf /opt/miniconda 

%preun 
echo "Deleting old miniconda installation..." 
rm -rf /opt/miniconda 

%post 
%{_bindir}/%{installscript} 
rm -rf /tmp/dependencies 
rm /tmp/miniconda.sh 
rm /tmp/packages.txt 

if [ -f /opt/miniconda/bin/python ]; then 
    echo "Python is there!" 
    echo "Checking version..." 

    python_version="$(/opt/miniconda/bin/python --version)" 
    if [[ "3.6.0" =~ "$python_version" ]]; then 
     echo "Python version is correct: $python_version" 
    else 
     echo "ERROR: Python version is not correct" 
     exit 1 
    fi 

    echo "Checking numpy version..." 
    numpy_version="$(/opt/miniconda/envs/MyEnv/bin/python -c 'import numpy; print(numpy.__version__)')" 
    if [ "$numpy_version" == "1.12.1" ]; then 
     echo "Numpy version is correct: $numpy_version" 
    else 
     echo "ERROR: Numpy version is not correct" 
     exit 1 
    fi 

    echo "Checking scipy version..." 
    scipy_version="$(/opt/miniconda/envs/MyEnv/bin/python -c 'import scipy; print(scipy.__version__)')" 
    if [ "$scipy_version" == "0.19.0" ]; then 
     echo "Scipy version is correct: $scipy_version" 
    else 
    echo "ERROR: Scipy version is not correct" 
     exit 1 
    fi 

    echo "Checking scikit-learn version..." 
    scikit_version="$(/opt/miniconda/envs/MyEnv/bin/python -c 'import sklearn; print(sklearn.__version__)')" 
    if [ "$scikit_version" == "0.18.1" ]; then 
     echo "Scikit-learn version is correct: $scikit_version" 
    else 
     echo "ERROR: scikit-learn version is not correct" 
     exit 1 
    fi 
else 
    echo "ERROR: Miniconda Python installation was not found." 
    exit 1 
fi 

これはインストールスクリプトです。

[[email protected] SOURCES]$ cat install.sh 
#!/bin/bash 
echo "Extracting dependencies..." 
tar -zvxf /usr/bin/foo-1.0.tar.gz -C /tmp 
echo "Installing Miniconda..." 
sudo sh /tmp/miniconda.sh -b -p /opt/miniconda 
echo "Creating environment..." 
sudo /opt/miniconda/bin/conda create -p /opt/miniconda/envs/MyEnv --file /tmp/packages.txt 

そして、これらの私のプロジェクトの依存関係です:

@EXPLICIT 
file:///tmp/dependencies/libgfortran-3.0.0-1.tar.bz2 
file:///tmp/dependencies/mkl-2017.0.1-0.tar.bz2 
file:///tmp/dependencies/numpy-1.12.1-py36_0.tar.bz2 
file:///tmp/dependencies/openssl-1.0.2k-2.tar.bz2 
file:///tmp/dependencies/pip-9.0.1-py36_1.tar.bz2 
file:///tmp/dependencies/python-3.6.0-0.tar.bz2 
file:///tmp/dependencies/readline-6.2-2.tar.bz2 
file:///tmp/dependencies/scikit-learn-0.18.1-np112py36_1.tar.bz2 
file:///tmp/dependencies/scipy-0.19.0-np112py36_0.tar.bz2 
file:///tmp/dependencies/setuptools-27.2.0-py36_0.tar.bz2 
file:///tmp/dependencies/sqlite-3.13.0-0.tar.bz2 
file:///tmp/dependencies/tk-8.5.18-0.tar.bz2 
file:///tmp/dependencies/wheel-0.29.0-py36_0.tar.bz2 
file:///tmp/dependencies/xz-5.2.2-1.tar.bz2 
file:///tmp/dependencies/zlib-1.2.8-3.tar.bz2 
関連する問題