Çoklu paket yönetim sistemleri ile ilgili iyi uygulamalar


14

Bazı programlama dilleri kendi paket yönetim sistemleriyle birlikte gelir, örneğin R durumunda, yerleşik install.packageskomut CRAN deposundan yüklenir ve bağımlılıklar ile ilgilenir.

Buna paralel olarak, işletim sistemi aptdebian tabanlı Linux dağıtımları için komut gibi kendi paket yönetim sistemleriyle birlikte gelir .

Sistemimdeki her şeyin uyumlu olacağını garanti etmek için dağıtımın paket yöneticisini kullanmanın daha iyi olduğuna karar verdim (bkz. Https://stackoverflow.com/a/31293955/1878788 ).

Ama kısa süre sonra bu şekilde mevcut olmayan şeylere ihtiyaç duyduğum bir gün geldi. Örneğin, dağıtımım tarafından paketlenmemiş bir biyoinformatik programı, R'nin belirli bir sürümünü gerektirecektir. Programın, biyoenformatik için R paketleri sağlamak ve paketlerin birbirleriyle uyumlu olmalıdır (bkz. https://www.bioconductor.org/install/#why-biocLite ).

Bu yüzden işletim sistemi paketleme yönetim sistemimi R için kullanmamaya karar verdim ve her şeyi biocLitebioiletken projesi tarafından sağlanan komutla kurmaya karar verdim .

Bu yaklaşım, tutarlı, sağlıklı ve kolayca yeniden oluşturulabilen biyoinformatik ekosistemlerini sürdürmek için bazı kişilerin conda paketi yönetim sistemini kullanmaya karar verene kadar bir süre sorunsuz bir şekilde devam etti. "Bioconda" adı verilen bu proje sadece R paketleri değil, her türlü dilden, sürümleri kolayca değiştirebilme imkanı ve benzeri şeyler sunmaktadır (bkz. Https://bioconda.github.io/ ).

Daha sonra bu yaklaşımı kullanmaya karar verdim ve bioconda / conda tarafından sağlanmayan bir R paketine ihtiyaç duyana kadar sorunsuz çalıştı. Sözde süper kolay, ama bir conda paketi yapma girişimlerim başarısız oldu, sonra paketi biyokiletken yolunu kullanarak yüklemeye çalıştım ve tekrar başarısız oldu. Bir şekilde yanlış R kurulumunun paket oluşturma mekanizmaları tarafından kullanıldığı izlenimine kapıldım. Bu yüzden (hala çok genç) konda kurulumumu silmeye ve biyoiletken ekosistemime geri dönmeye karar verdim.

Bir yaklaşımdan diğerine ne kadar süre atlamak zorunda kalacağımı merak ediyorum. Bu çoklu, karışan ve çakışan paket yönetimi düzeyleriyle nasıl başa çıkılacağı konusunda genel iyi uygulamalar var mı?

Edit (14/09/2017) : Düşündüğüm başka bir seçenek de Guix veya Nix gibi işletim sistemi düzeyinde alternatif paket yöneticileri kullanmak .


1
Fedora Projesi, R programlarının paketlenmesi için yönergeler içerir . Fedora, RHEL ve CentOS'taki RPM paketleri genellikle bunları takip edecektir.
Michael Hampton

Yanıtlar:


13

R için neyin mevcut olduğundan emin değilim (REnv hakkında duydum), ancak Python için her kullanıcının kendi Python ortamından sorumlu olduğu pragmatik yaklaşıma karar verdim pyenv(Perl ile perlbrewve Ruby için de geçerlidir RVM). Bu şekilde, kullanıcılar benim yardımım olmadan her proje için kendi optimum ortamlarını oluşturabilirler ( pyenvPython kurulumlarını yönetir ve daha sonra pipbu belirli Python kurulumuna yerel modülleri kurmak için kullanabilirsiniz ).

Sistem paketleri yalnızca sistem ihtiyaçları için kullanılır.


0

Genellikle sistem paket yöneticisini kullanmak daha iyidir. Ancak modern diller kullanıyorsanız, bu hızlı ve istikrarlı dağıtımcılar gelişen yeni paketler ve sürümler içermez. Ve o kadar popüler olmayan paketler asla depolara dahil edilemez.

Yani bu durumda en iyi yol dilin yerleşik işlevlerini kullanmaktır. R-yaratıcıları paketleri yönetmek için resmi bir araç oluşturacaklarsa, bu harika olurdu, ancak resmi olmayan araçlar kullanmak biraz risklidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.