2012-08-27 23 views
16

Özel bir R paketi deposu oluşturuyorum ve CRAN arşiv yapısını çoğaltmak istiyorum; bu paketlerin eski sürümleri src/contrib/Archive/packageName/ dizininde saklanıyor. devtools (kaynak here) içinde install_version işlevini kullanmak istiyorum, ancak bu işlev, src/contrib/ içinde tüm paket sürümleri yerine CRAN benzeri bir arşiv yapısına sahip olmaya bağımlıdır.Herhangi bir R paket deposu yönetim aracı var mı?

Bu dizin yapısının ve diğer ilgili görevlerin oluşturulmasını kolaylaştıran herhangi bir R paketi depo yönetim aracı var mı (ör. Archive.rds dosyasının güncellenmesi)?

benim yerel Mac gibi bir Linux sunucu üzerinde aynı install.packages() veya install_version() kodu kullanabilirsiniz böylece yönetim araçları depo tarafında paket type mantığını ele durumunda da güzel olurdu (yani ben gerekmez Yerel olarak bir Mac'e yüklerken type="both" veya type="source" kullanın.

+3

Bu soruyu R-devel posta listesinden sorabilirsiniz (daha önce yapmadıysanız), bunu en iyi şekilde bilirler. Ya da belki de doğrudan KRAN bakıcılarından, yani Kurt'dan. –

+0

Teşekkürler, yaptım. Yakında bir cevap yazacağım. –

cevap

4

Kısa yanıt: Ürün boşta değil.

Uzun cevap: biri kendi repo yönetmek için kullanabileceğiniz araçlar bir çift vardır, ama tutarlı kullanıma hazır ekosistem henüz yoktur.

CRAN yöneticileri, CRAN deposunu yönetmek için here komut dosyalarını bir arada tutarlar, ancak bunların hepsi birlikte nasıl çalıştığını veya paket dizinini güncellemek, paket denetimlerini çalıştırmak veya dizin yapısını yönetmek için hangi parçaların gerektiği açık değildir.

tools::write_PACKAGES işlevi, paket dizinini güncellemek için kullanılabilir, ancak paket eklendiğinde, güncelleştirildiğinde veya depodan her kaldırıldığında bu durumun güncelleştirilmesi gerekir.

M.eik Michalke, kurun vb otomatik olarak belirli bir depoyu güncellemek için yeteneği vardır roxyPackagepackage, yarattığı geliştirici de son zamanlarda arşiv yapıya sahip yeteneğine kavuştu archive_structure ile CRAN bu taklit işlevi. Dezavantajı paketin CRAN üzerinde olmaması ve muhtemelen devtools ile entegre edilmesi durumunda daha iyi olacaktır. Ayrıca yepyeni ve henüz geniş kullanım için hazır değil.

Son olarak, belirli bir deposu izleyen ve herhangi bir dosya değiştiğinde paket dizinini güncelleştiren küçük bir Ruby script oluşturdum. Ancak, bu benim özel organizasyonum için çalışmak için yapılmış ve dış kullanım için refactored olması gerekiyor. Eğer ilgilenen varsa daha genel yapabilirim.

İlgili konular