install -d
Dizin oluşturmak ve install -c
bir dosyayı kopyalamak için kullanılan birçok yerde gördüm . Neden kullanmaz mkdir
ve cp
? Kullanmanın bir avantajı var mı install
?
install -d
Dizin oluşturmak ve install -c
bir dosyayı kopyalamak için kullanılan birçok yerde gördüm . Neden kullanmaz mkdir
ve cp
? Kullanmanın bir avantajı var mı install
?
Yanıtlar:
Bu ne yaptığınıza bağlı.
install
Komut normalde sisteminize bir ikili yüklemek için paketler ve kaynak kodu ile gelen yükleme komut kullanılır. Başka bir dosya veya dizini kurmak için de kullanılabilir. Kurulacak dosyanın yeni izinlerini belirlemek için sahip olduğunuz -d
ve -c
seçeneklerine ek olarak , aynı sonucu elde etmek için -m
a cp
ve a yapmanız gerekmez chmod
. Örneğin:
install -m644 "$srcdir/$pkgname-$pkgver-linux64" "$pkgdir/opt/$pkgname"
Ayrıca seçenekler var -g
ve -o
sırasıyla hedef grup ve sahibi, ayarlanması için. Bu, yapılan ayrı çağrıları önler chown
. Genel olarak, install
komut dosyanızı kısaltır ve dosya oluşturma, kopyalama, mod ayarı ve ilgili öğeleri birçok komut yerine tek bir komutla yaparak daha özlü hale getirir.
Referans için bkz man install
. Kullanım için, sadece bazı paket kaynak kodlarıyla birlikte gelen kurulum komut dosyalarına bir göz atın .
"install" genellikle aşağıdaki işlemleri birleştirir:
Bu nedenle, Unix yaklaşımını izleyerek bir takımın, bir inşaat aracı tarafından yapılan bir dosyayı çalışma yerine yerleştirme işleminin tek bir işlemle yapılması için yapılması gerekir.
Açıkladığım gibi tam konsept BSD sistemlerinde ("xinstall" sürümünde) uygulanmaktadır; Burada "güvenli kopya" modunu (atomik yeniden adlandırmalı yeni sürüm) bunun için hayati olarak kabul ediyorum. Linux sistemleri (coreutils'den) bu önemli kısmı kaçırır ve bir takip eden sürecin silinmesi ve yeniden açılması arasındaki yarışlara açıktır; ancak bu paket yöneticileri tarafından ele alınabilirdi.
Buradaki kullanımla ilgili önceki açıklamaların yanı sıra , en azından Linux arasında cp
ve arasında düşük düzeyde bir fark vardır install
. Mevcut bir dosyanın cp
üzerine kopyalanıyorsa , install
her zaman aynı dosya adı için yeni bir inode oluştururken , dosyanın mevcut inode'unun üzerine yazar .
Bu, çalışan bir binary'in yeni bir versiyonunu yüklerken fark yaratır. Kullanmak cp
bir EBUSY hatasına neden olurken install
başarılı olur Çalışan ikili dosya eski sürümü kullanmaya devam eder, ancak program yeniden başlatıldığında yeni sürüm kullanılır.
Söz konusu dizin zaten mevcutsa:
mkdir -p
sahiplik ve dosya modu bitlerini ayarlamaya çalışacakinstall -d
sahiplik ve dosya modu bitlerini ayarlamaya çalışmazBu içindir mkdir
ve install
gelen GNU coreutils . Her ikisi de aynı make_dir_parents
işlevi kullanır, ancak preserve_existing
parametre sırasıyla false
veya ile ayarlanır true
.
install
veya$(INSTALL)
içinde kullanımı, bu adımları, bazı normal kopyalama adımlarını değil, kurulum kopyalama adımları olarak da işaretler. Bu faydalı olabilir.