GoGPT Best VPN GoSearch

OnWorks favicon'u

makepp_build_cache_control - Bulutta Çevrimiçi

OnWorks ücretsiz barındırma sağlayıcısında makepp_build_cache_control'ü Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen makepp_build_cache_control komutudur.

Program:

ADI


makepp_build_cache -- Derleme önbellekleri nasıl kurulur ve kullanılır?

AÇIKLAMA


C: temiz,
oluşturmak, M: makepp_build_cache_control,
mppbcc, S: göstermek,
istatistikler

A inşa etmek önbellek zaten makepp olan önceki hedeflerin kopyalarını içeren bir dizindir
inşa edilmiş. Makepp'ten yeni bir hedef oluşturması istendiğinde, onu zaten oluşturup oluşturmadığını görür
aynı koşullar altında başka bir yerde ve eğer öyleyse, onu yerine basitçe bağlayın veya kopyalayın.
onu yeniden inşa etmek.

Derleme önbelleği aşağıdaki durumlarda yararlı olabilir:

· Bir program üzerinde çalışıyorsunuz ve onu optimize edilmiş şekilde derliyorsunuz. Sonra bir hata keşfedersiniz,
ve her şeyi hata ayıklama modunda yeniden derleyin. Hatayı buldunuz ve şimdi yapmak istiyorsunuz
optimize edilmiş modda yeniden derleyin. Dosyaların çoğu aynı olacaktır. Eğer bir
tüm derlemelerinizde önbellek oluşturun, makepp yalnızca değiştirilmemiş dosyaları çeker
bunları yeniden derlemek yerine derleme önbelleğinden çıkarın.

Benzer bir durum, normalde bir mimari üzerinde çalışıp kısa süreliğine başka bir mimariye geçmeniz durumunda da yaşanabilir.
farklı bir mimari ve sonra geri dönersiniz. Eski dosyalar hâlâ
önbellek oluşturduğunuzda makepp'in hiçbir şeyi yeniden derlemesi gerekmeyecektir.

· Belirli bir programın birkaç kopyasını sürüm kontrolünüzden teslim aldınız
sistemi ve her dizin hiyerarşisinde farklı değişiklikler yaptık. (Örneğin, sen
farklı dizin hiyerarşilerindeki farklı hataların çözülmesi.) Dosyaların çoğu
iki dizin hiyerarşisinde aynıdır. Her ikisini de bir derleme önbelleğiyle derlerseniz,
ikinci dizin hiyerarşisinde derlemek, dosyaları basitçe kopyalayabilecektir.
aynı olan dosyaları yeniden derlemek yerine önbellek oluşturun.

· Aynı kaynak seti üzerinde çalışan birden fazla geliştiriciniz var. Her geliştirici
Değişiklikler yapılıyor ancak dosyaların çoğu geliştiriciler arasında aynı. Eğer hepsi
geliştiriciler bir derleme önbelleğini paylaşırsa, bir geliştiricinin derlemesi bir dosyayı derlerse,
aynı dosyayı derlemesi gereken diğer geliştiricinin yapısı (aynı dosyayla)
vb.) derlemeyi yeniden çalıştırmak yerine yalnızca önbelleğe alınmış dosyayı kopyalayabilir.

Aşağıdakilerin tümü doğruysa derleme önbelleği yardımcı olabilir:

· Bol miktarda disk alanınız var. Makepp genellikle birçok kopyasını önbelleğe alır.
Her dosya değişiyor çünkü hangilerinin kullanılacağına dair hiçbir fikri yok.
Belirli dosyalar için derleme önbelleğini kapatabilirsiniz ancak derleme önbelleği kapatılacaksa
yararlı olması için muhtemelen içinde çok sayıda dosya bulunması gerekecektir.

· Dosyalarınızın oluşturulması kopyalamaktan çok daha uzun sürer. Derleme önbelleği açıksa
Makepp, dosyayı kopyalamak yerine sabit bağlantıları kullanmaya çalışacaktır.
Dosya oluşturulduğunda Makepp'in dosyayı önbelleğe bağlaması veya kopyalaması gerekir ve ardından
tekrar gerektiğinde dosyayı önbellekten bağlamalı veya kopyalamalıdır. Üstelik,
gerekli dosyanın gerçekten orada olup olmadığını kontrol etmek için küçük bir ek yük var
derleme önbelleği ve dosyanın yanı sıra dosya hakkındaki derleme bilgilerinin kopyalanması
kendisi.

Örneğin, derleme önbelleği kullanmanın çok derleme için buna değmediğini görebilirsiniz.
küçük modüller. Komutların statik hale gelmesi neredeyse kesinlikle buna değmez.
kütüphane (bir arşiv dosyası, libxyz.a), disk alanından tasarruf etmek için bağlantıları kullanmanız dışında.

· Bazı dosyalara başka bir yerde tekrar ihtiyaç duyulması ihtimali yüksektir
derleme. Bir yazılımı yalnızca bir kez derliyorsanız derleme önbellekleri
sadece işleri yavaşlatır.

Derleme önbelleği kullanmak, biraz kurulum ve bakım çalışması gerektirir. Lütfen yapma
Nasıl çalıştıklarını, nasıl oluşturulacaklarını ve nasıl oluşturulacaklarını anlayana kadar derleme önbelleği kullanmayı deneyin.
sürekli büyümelerini ve bilgisayarınızdaki kullanılabilir disk alanının tamamını tüketmelerini önleyin
sistem.

Ne kadar a inşa etmek önbellek işliyor
Derleme önbelleğini etkinleştirirseniz, her dosya oluşturulduğunda makepp bir kopyasını bir yerde saklar.
önbellek oluşturun. Dosyanın adı, tüm verilerin sağlama toplamlarının karması olan bir anahtardır.
girdiler, inşa komutu ve mimari. Makepp bir dahaki sefere yeniden inşa etmek istediğinde
dosyada, yapı önbelleğinde zaten aynı sağlama toplamlarına sahip bir dosya olup olmadığına bakar.
Bu durumda dosya derleme önbelleğinden kopyalanır.

Verimlilik açısından, yapı önbelleği yapıyla aynı dosya sisteminde bulunuyorsa makepp
aslında dosyayı kopyalamayacaktır; bunun yerine sert bir bağlantı oluşturacaktır. Bu daha hızlı ve
fazladan disk alanı kullanmaz. Benzer şekilde makepp bir dosyayı dışarı çıkarmak istediğinde
yapı önbelleği, mümkünse sabit bir bağlantı kullanacak veya gerekirse kopyalayacaktır.

UYARI: Makepp asla açıkça istenmediği sürece dosyaları derleme önbelleğinden siler.
Bu, temizlemediğiniz sürece derleme önbelleklerinizin sınırsızca büyümeye devam edeceği anlamına gelir
bunları periyodik olarak yükseltin (ayrıntılar için aşağıya bakın).

İnşa etmek önbelleğe ve depoları

Önbellekler ve depolar oluşturmak (bkz. makepp_repositories) benzer sorunları çözebilir. İçin
bazı durumlarda bir depo daha uygundur, bazı durumlarda ise derleme önbelleği daha uygundur
uygun.

Ayrıca ikisini birleştirebilirsiniz. Çok sayıda dosya içeren devasa bir dizin yapınız varsa
Her geliştiricinin bir kopyasına sahip olmasını istemediğiniz kaynaklar varsa bunları sağlayabilirsiniz.
bir depo olarak. Üretilen dosyalar, çeşitli hata ayıklama seçenekleri vb. ile daha sonra
derleme önbelleği aracılığıyla daha esnek bir şekilde yönetilir.

Derleme önbelleği ile depo arasındaki temel farklar şunlardır:

· Bir yapı önbelleği yalnızca derleme prosedürü tarafından oluşturulan dosyaları saklayabilir. Bir depo olabilir
Ayrıca orijinal kaynak dosyaları da var.

· Depodaki dosyalar değil Bir inşaat sırasında değişiklik. Bir yapı önbelleği
böyle bir kısıtlama yoktur.

· Depodaki dosyalar, depodaki dosyalarla aynı göreceli konumda bulunmalıdır.
yapı dizini. Örneğin makepp'in dosyaya ihtiyacı varsa alt dizin1/alt dizin2/xyz.abc, sonra
sadece bakar depo_kökü/altdizin1/altdir2/xyz.abc. Yapı önbelleğindeki dosyalar
tüm dizin hiyerarşisi bilgileri kaybedildi ve yalnızca girdilere göre arandı
ve bunları üretmek için gereken komut.

· Depodaki dosyalar yapıdaki yeni konumlarına yumuşak bağlantıyla bağlanır
dizinler. Yapı önbelleğindeki dosyalar ya kopyalanır ya da yeni yapılarına sabit olarak bağlanır.
yerler. Bir kopya gerekiyorsa, depo kesinlikle daha hızlı olacaktır.

· Önbellek oluşturmak, dosyaları bunlara yerleştirmek biraz zaman alır. Bir depo yok
herhangi bir ekstra maliyet (mevcut çalıştırma için, yani elbette yaratmanın maliyeti vardı)
önceden), ancak çoğu zaman biraz daha önceden planlama gerektirir.

Genel olarak, istediğiniz tek bir merkezi yapıya sahipseniz depo daha kullanışlı olur
tüm geliştiricilerin dosya alacağı. Bir yapı önbelleğiniz varsa, istediğiniz şeydir.
Bir geliştiricinin derlenmiş dosyaları diğerlerinden ödünç alması gereken merkezi olmayan sistem
geliştirici.

Hem derleme önbellekleri hem de depolar, değişken derlemelere yardımcı olabilir. Örneğin, eğer istiyorsanız
tüm kaynaklarınızı optimize edilmiş olarak derlemek, ardından tekrar hata ayıklama ile, ardından tekrar optimize etmek,
bir depo veya bir veritabanı kullanarak optimize edilmiş tüm dosyaları yeniden derlemekten kaçınabilirsiniz
önbellek oluşturun. Bunu bir depoyla yapmak için ileriyi düşünmeniz ve açıkça söylemeniz gerekir.
makepp'in hata ayıklama derlemesi için bir depo kullanmasına izin vermeyin, aksi takdirde dosyanız silinir.
ilk optimize edilmiş derleme. Bir derleme önbelleğiyle makepp devam eder ve
başlangıçtaki optimize edilmiş derleme ancak hızlı bir şekilde geri alınabilir.

İnşa etmek önbellek gruplama
Grup, yapı önbelleklerinin gevşek bir birleşimidir. Makepp'in yapmaması anlamında gevşek
derleme önbellek yönetimini yavaşlatmamak için bununla ilgilenin. Bundan faydalanmak için
çevrimdışı yardımcı programı kullanmanız gerekir. Özellikle "temiz" komutu aynı zamanda şunları da gerçekleştirir:
çoğaltma. "--mtime=+1000" gibi gerçekçi olmayan bir temizleme kriteri verirseniz hayır
temizleme gerçekleşir, yalnızca çoğaltma.

Gruplandırma, özellikle derleme önbellekleriniz varsa, dosyaları daha fazla kişiyle paylaşmanıza olanak tanır
Gönderim süresinden tasarruf sağlayan sabit bağlantıdan yararlanmak için geliştiricilerin disklerinde
disk alanı. Bununla birlikte, tek başına sabit bağlantı, disk başına avantajlarla sınırlıdır.

Gruplama ile dosya, makepp'in dosyayı sunucuya göndermesinden bir süre sonra çoğaltılacaktır.
önbellek oluşturun. Bu, dosyanın tüm diskler için yalnızca bir kez oluşturulacağı anlamına gelir.

Sembolik bağlantılara sabit bağlantıya izin veren dosya sistemlerinde (ki bu, aşağıdakilerle sınırlı görünmektedir)
Linux ve Solaris - dosya ayrıca fiziksel olarak yalnızca bir diskte bulunacaktır.
Ek olarak, çoğaltılmadan önce oluşturulduğu her diskte kalır, ancak yalnızca
bu disklerde kullanıldığı sürece. Sembolik bağlantıların olduğu bu senaryoda birini veya birini seçebilirsiniz.
dosyalarınızın fiziksel olarak olmasını tercih ettiğiniz daha fazla dosya sistemi. Farkında olmak
Başarılı bir şekilde oluşturulmuş dosyalar, bulundukları diskin fiziksel olarak kaybolması durumunda kullanılamayabilir.
çevrimdışı. Yeniden inşa etmek bu sorunu çözecektir ve etki, yangının yayılmasıyla azaltılabilir.
tercih edilen birkaç disk üzerindeki dosyalar.

Çoğaltmanın birkaç ilginç kullanımı vardır:

NFS (kopyalamayla da mümkündür)
Tercih edilen derleme önbelleğini sağlayan merkezi bir NFS sunucunuz var. Her makine
ve geliştirici diskinde hızlı gönderim için yerel bir derleme önbelleği bulunur. Ya geri binersiniz
tüm geliştirici disklerini NFS sunucusuna aktarın ve çoğaltma ve temizleme işlemlerini gerçekleştirin
merkezi olarak veya yalnızca parçayı işleyerek her bir NFS istemci makinesinde yerel olarak çoğaltma yaparsınız
orada görünen grubun.

Güvenli olmayan disk (kopyalamayla da mümkündür)
Bir RAM diskinde derlerseniz (umarım kaynaklarınızı güvenli bir depoda düzenlerseniz)
disk), güvenli disklerin tercih edilenler olmasını sağlayabilirsiniz. Daha sonra çoğaltma
dosyaları güvenli disklere taşıyın ve yeniden başlatma sonrasında hayatta kalsınlar. Her yeniden başlatmanın ardından
RAM disk derleme önbelleğini yeniden oluşturmanız ve gruba eklemeniz gerekecektir (ki bu
Bu durumda zararsız bir uyarı verin çünkü diğer grup üyeleri hala hatırlıyor
o).

Tam disk (yalnızca sembolik bağlantılara sabit bağlantı)
Disklerinizden birinin dolu olduğu biliniyorsa, derleme önbelleklerini tüm disklerinizde oluşturabilirsiniz.
diğer diskler tercih edilir. Bu şekilde çoğaltma, dosyaları bilgisayardan uzağa taşıyacaktır.
dolu disk, rastgele diğerlerinden herhangi birine.

Ne kadar için kullanım a inşa etmek önbellek
Ne kadar için söylemek makep için kullanım the inşa etmek önbellek

Derleme önbelleği oluşturulduktan sonra artık makepp için kullanılabilir. Bir kaç tane var
oluşturma sırasında belirleyebileceğiniz seçenekler; Ayrıntılar için "Derleme önbelleği nasıl yönetilir" konusuna bakın.

Bir derleme önbelleği --build-cache komut satırı seçeneğiyle belirtilir.
build_cache ifadesi bir makefile içinde veya :build_cache kural değiştiricisiyle birlikte.

Derleme önbellekleriyle çalışmak için şu ana kadar bulduğum en yararlı yollar şunlardır:

· MAKEPPFLAGS ortam değişkeninde derleme önbellek yolunu şu şekilde ayarlayın (öncelikle
Korn Shell veya bash için varyant, csh için ikinci):

MAKEPPFLAGS'ı dışa aktar=--build-cache=/path/to/build/cache
setenv MAKEPPFLAGS --build-cache=/path/to/build/cache

Artık çalıştırdığınız her yapı her zaman bu yapı önbelleğini kullanacak ve sizin bunu yapmanıza gerek yok.
başka bir şeyi değiştirin.

· Makefile dosyalarınızdaki derleme önbelleğini şunun gibi bir satırla belirtin:

BUILD_CACHE := /build_cache'e/yol/yol
build_cache $(BUILD_CACHE)

Bunu, derleme önbelleği kullanan tüm makefile'lara (veya ortak bir içerme dosyasına) koymalısınız.
tüm makefile'ların kullandığı dosya). Veya bunu içine koy RootMakepp dosyası:

BUILD_CACHE := /build_cache'e/yol/yol
küresel build_cache $(BUILD_CACHE)

Çok kullanıcılı bir makinede, ev diski başına bir derleme önbelleği ayarlayabilirsiniz.
bağlantıların avantajı. Bunun gibi bir ifadeyi kullanmayı daha uygun bulabilirsiniz:

build_cache $(find_upwards our_build_cache)

geçerli dosya sistemindeki geçerli dizinden yukarıya doğru arama yapana kadar
adında bir dizin bulur bizim_build_cache. Bu herkes için aynı ifade olabilir
kullanıcılar ve yine de bireysel olarak disklerindeki önbelleğe işaret ederler.

Solaris 10, ana dizinlerin bazı süslü yeniden montajlarını yapabilir. Eviniz olacak
görünüşe göre kendine ait bir montaj noktası olacak, adı verilen /ev/$LOGNAMEaslında açıkken
birini /dışa aktar/ana sayfa* diskler diğer kullanıcılarınkilerle birlikte. Çünkü öyle değil
gerçekten ayrı bir dosya sistemi, bağlantılar hala çalışıyor. Ancak yukarıya doğru arama yapamazsınız.
Bunun yerine şunları yapabilirsiniz:

BUILD_CACHE := ${makeperl }

İnşa etmek önbelleğe ve imza

Makepp, derleme önbelleğindeki dosyaları imzalarına göre arar. Eğer kullanıyorsanız
varsayılan imza yöntemi (dosya tarihi + boyutu), makepp yalnızca dosyaları dışarı çeker
giriş dosyalarının dosya tarihi aynıysa önbellek oluşturun. Yapınızın nasıl olduğuna bağlı olarak
çalışırsa, dosya tarihleri ​​hiçbir zaman aynı olmayabilir. Örneğin, dosyaları teslim alırsanız
iki farklı dizin hiyerarşisi varsa, dosya tarihleri ​​muhtemelen kontrol ettiğiniz tarih olacaktır
dosyaların teslim edildiği zamanı değil (tabii ki sizin tercihinize bağlı olarak)
sürüm kontrol yazılımı).

Muhtemelen istediğiniz şey, eğer dosya içindekiler vardır
tarih ne olursa olsun aynıdır. Eğer durum buysa, bir çeşit kullanıyor olmalısınız.
İçerik tabanlı bir imza. Makepp bunu C ve C++ derlemeleri için varsayılan olarak yapar, ancak
diğer dosya türlerinin (örn. nesne dosyaları veya dosyadaki diğer dosyalar) dosya tarihlerini kullanır.
derleme süreci özellikle bir C kaynağı veya içerme dosyası olarak tanınmadı). Eğer istersen
derleme önbelleğiyle çalışacak diğer dosya türlerini (ör.
C/C++ derleme komutlarından başka bir şey), o zaman şöyle bir ifade koyabilirsiniz
makefile'ınızın üst kısmına yakın bir yerde:

imza md5

makepp'i dosyaların tarihleri ​​yerine içeriğine göre imza kullanmaya zorlamak için.

Ne kadar değil için önbellek belli Dosyaları

Hiçbir zaman önbelleğe almak istemeyeceğinizi bildiğiniz bazı dosyalar olabilir. Örneğin, eğer
bir dosyaya tarih damgası yerleştirirseniz, bunu hiçbir koşulda yapamayacağınızı bilirsiniz.
tarih damgası nedeniyle dosyanın önceki bir kopyasını derleme önbelleğinden almak istiyorum
farklı. Bu durumda, onu kopyalamak yalnızca zaman ve disk alanı kaybıdır.
önbellek oluşturun.

Veya son yürütülebilir dosyayı önbelleğe almak isteme ihtimalinizin çok düşük olduğunu düşünebilirsiniz.
Oluşturmaya yarayan tek tek nesneleri veya paylaşılan nesneleri önbelleğe almak isteyebilirsiniz.
yürütülebilir, ancak genellikle bir kesinlikle özdeş
aynı girişlerden çalıştırılabilir. Tekrar ediyorum, bu durumda derleme önbelleği kullanmak zaman kaybıdır.
disk alanı ve zamanı, bu yüzden onu devre dışı bırakmak mantıklıdır.

Bazen bir dosyanın oluşturulması son derece hızlı olabilir ve onu dosyaya koymak sadece israftır.
kopyalandığı kadar hızlı bir şekilde oluşturulabildiğinden yapı önbelleği. isteyebilirsiniz
bu dosyaların önbelleğe alınmasını seçerek devre dışı bırakın.

Belirli kurallar için derleme önbelleğini, içinde ": build_cache none" belirterek kapatabilirsiniz.
şöyle bir kural:

yürütülebilir dosyamız: dateStamp.o main.o */*.so
: build_cache yok
$(CC) $(LDFLAGS) $(girişler) -o $(çıkış)

Bu işaret, bu özel kuraldan elde edilen çıktıların hiçbir zaman
derleme önbelleği ve makepp de bunları hiçbir zaman derleme önbelleğinden çıkarmaya çalışmaz.

Ne kadar için yönetmek a inşa etmek önbellek
makepp_build_cache_control komuta Kendi ID’n ile mağazalarını oluştur
mppbcc komuta Kendi ID’n ile mağazalarını oluştur

makepp_build_cache_control, mppbcc makepp için derleme önbelleklerini yöneten bir yardımcı programdır.
Ne makepp_build_cache_control yapar, argümanının ilk kelimesine göre belirlenir.

Aslında bu küçük betik aşağıdaki komutun sarmalayıcısıdır ve bunu kullanmak isteyebilirsiniz.
"makeppbuiltin" yolunun gerekli olabileceği cron işlerinizi doğrudan arayın:

makeppbuiltin -MMpp::BuildCacheControl komutu ...

Bu komutları yükledikten sonra bir makefile dosyasından da "&" önekiyle kullanabilirsiniz.
"yarat" örneği için aşağıdaki gibidir:

perl { use Mpp::BuildCacheControl } # Bu bir Perl modülüdür, dolayısıyla include yerine kullanın.

my_cache:
&create $(CACHE_OPTIONS) $(output) # Yüklü bir yerleşik yapıyı çağırın.

build_cache $(prebuild my_cache)

Geçerli komutlar, aynı zamanda yukarıda açıklanan standart seçeneklerden birkaçını da alır.
makepp_builtins, şunlardır:

yaratmak [seçenek ...] yol/giden/önbellek Kendi ID’n ile mağazalarını oluştur
Verilen seçeneklerle derleme önbelleklerini oluşturur. Geçerli seçenekler şunlardır:

Standart seçenekler: "-A, --args-file, --arguments-file=dosyaadı, -v, --verbose"

-e Grup
--uzatmak=Grup
--extend-group=Grup
Yeni yapı önbelleğini "gruba" ekleyin. Bu tek başına bir durum olabilir
şu ana kadar önbellek oluşturun.

-f
--Kuvvet
Bu, önbelleğin oluşturulmasına olanak sağlar. yol/giden/önbellek zaten vardı. eğer öyle olsaydı
bir dosya silinir. Bir dizin olsaydı, ne olursa olsun yeniden kullanılır
içeriği vardı.

-p
--tercihli
Bu seçenek yalnızca grupta, izin veren derleme önbellekleriniz varsa anlamlıdır.
sembolik bağlantılara sert bağlantı. Bu durumda temizlik, üyeleri şuraya taşıyacaktır:
tercih edilen disk. Bu seçenekle bir grup içinde birden fazla önbellek oluşturabilirsiniz.
bu durumda dosyalar rastgele onlara taşınacaktır.

-s n1,n2,...
--subdir-chars=n1,n2,...
Önbelleğe alınan dosyaları tutmak için kaç düzeyde alt dizin oluşturulduğunu kontrol eder,
ve her alt dizinde kaç dosya olacağı. İlk n1 karakterleri
dosya adı üst düzey dizin adını ve içindeki karakterleri oluşturur. n1 için n2 Airdrop Formu
ikinci düzey dizin adı vb.

Derleme önbelleğindeki dosyalar makepp'in kullandığı MD5 veri karmaları kullanılarak adlandırılır, bu nedenle
her dosya adı 22 base64 rakam artı orijinal dosya adından oluşur. Bir derleme önbelleği varsa
dosya adı 0123456789abcdef012345_module.oaslında yapıda saklanır
olarak önbelleğe al 01/23/456789abcdef012345_module.o "--subdir-chars 2,4" belirtirseniz.
Aslında "--subdir-chars 2,4" devasa bir yapı önbelleği için varsayılan değerdir
4096 alt dizin ile maksimum 416777216 dizin. Hatta "--subdir-chars 1,2" veya
"--subdir-chars 1" sizi oldukça ileri götürecektir. Büyük boyutlar için optimize edilmiş bir dosya sisteminde
tüm dosyaları depolamak için "-s ''" veya "--subdir-chars=" bile diyebilirsiniz.
en üst seviye.

-m permalar
--mod=permalar
--erişim-izinleri=permalar
Dosyalar yapıya eklendiğinde dizin erişim izinlerini belirtir
önbellek. Başkalarının derleme önbelleğinize dosya koymasını istiyorsanız,
It grubu veya dünya tarafından yazılabilir. İzinler sekizlik gösterim kullanılarak belirtilmelidir.

Bunlar dizin izinleri olduğundan, herhangi bir erişim izni verirseniz aynı zamanda izin vermeniz gerekir.
erişimi yürütün, yoksa bir sürü tuhaf hatayla karşılaşırsınız. Yani 0700 şu anlama gelir
yalnızca bu kullanıcı bu yapı önbelleğine erişebilir. 0770, bu kullanıcı ve
gruptaki herkesin derleme önbelleğine yazma erişimi olabilir. 0777 şu anlama gelir
herkes derleme önbelleğine erişebilir. Mantıklı sekizlik basamak 7'dir
(yaz), 5 (oku) veya 0 (yok). 3 (yazma) veya 1 (okuma) da mümkündür;
kullanılacak ancak göz atılmayacak önbellek, yani bir
kötü niyetli kullanıcının değiştirilecek dosya adlarını bulmasını sağlar.

Bir grup derleme önbelleğinde her birinin bunun için kendi değeri vardır;
farklı disklerde farklı yazma izinleri.

İzinleri belirtmezseniz, oluşturma sırasında umask izinleriniz
derleme önbelleğinin ömrü boyunca uygulanır.

çamça [seçenek ...] /yol/giden/önbellek Kendi ID’n ile mağazalarını oluştur
Önbelleği temizler. Makepp hiçbir zaman derleme önbelleğindeki dosyaları silmez; sana bağlı
Bu komutla dosyaları silmek için. Çok kullanıcılı önbellekler için sistem yöneticisi bunu yapabilir.

Yalnızca bağlantı sayısı 1 olan dosyalar silinir (çünkü aksi takdirde dosya alınamaz)
zaten fiziksel olarak silinmiş - görünüşe göre birisinin sakladığı bir dosyanın önbelleğini kaldırmış olursunuz
hala ilgileniyorum, dolayısıyla başka biri de ilgileniyor olabilir). Verdiğiniz kriterler şunlarla ilgilidir:
gerçek önbelleğe alınmış dosyalar. Her yapı bilgisi dosyası, ana dosyası olduğunda silinecektir.
Boş dizin kalmayacak. Bağlantı sayısından ve kullandığınız seçeneklerden bağımsız olarak
ver, derleme bilgisi dosyasıyla eşleşmeyen herhangi bir dosya, eğer daha eskiyse silinecek
10 dakikalık bir güvenlik marjından daha fazla.

Aşağıdaki seçenekler bağımsız değişken olarak bir zaman belirtimini alır. Zaman özellikleri şununla başlar:
"+" daha uzun zaman önce anlamına gelir, "-" daha yakın zamanda anlamına gelir veya hiçbir şey anlamına gelmez
verdiğiniz numara ve bir tane daha. Kesirli olabilecek sayılar varsayılan günlerdir.
Ancak bunların ardından "w" (haftalar), "d" (günler, varsayılan) harflerinden biri gelebilir.
"h" (saat), "m" (dakika) veya "s" (saniye). Günlerin yalnızca 24 gerçek saat olduğunu unutmayın
Yaz saati ile kış saati arasındaki değişiklik göz ardı ediliyor. Örnekler:

1 24 ila 48 saat önce
24 ile 24 saat arasında 25 saat önce
0.5 ila 12 saat önce 36 gün
1 saat önce 7 ila 14 kez arasında 24 saat
-2 48 saatten daha kısa süre önce
+30m 30 dakikadan daha uzun süre önce

Aşağıdaki seçeneklerin tümü "ve" ile birleştirilmiştir. Birkaç set istiyorsanız
"veya" ile kombinasyonlar kullanmak istiyorsanız, bu komutu farklı komut kümeleriyle tekrar tekrar çağırmanız gerekir.
seçenekler. Önce en çok silmeyi beklediğiniz yerleri yapın, sonra diğerleri yapabilir
daha hızlı ol.

Standart seçenekler: "-A, --args-file, --arguments-file=dosyaadı, -v, --verbose"

-a spec
--bir zaman spec
--erişim süresi spec
Dosyanın en son okunduğu zaman. Bağlantılı bir dosya için bu herhangi bir zamanda gerçekleşebilir.
Aksi takdirde bu, dosyanın son kopyalanışıdır. Kötü davranan sistemlerde
bu aynı zamanda son teyp yedekleme veya arama dizini oluşturma zamanı da olabilir. Yapabilirdin
önbelleği bu tür işlemlerin dışında bırakmaya çalışın.

Bazı dosya sistemleri atime alanını desteklemez ve dosya sistemi
bazen insanlar dosya sistemlerinde erişim süresini kapatıyor çünkü bu,
pille çalışan dizüstü bilgisayarlarda veya bilgisayarlarda zararlı olabilecek çok sayıda ekstra disk G/Ç'si
disk hızı optimizasyonu. (Ancak bu potansiyel olarak düzeltilebilir; bkz.
Mpp/BuildCache.pm'de UTIME_ON_IMPORT yorumu.)

-b
--karıştırmak
--karışım grupları
Genellikle her biri /yol/giden/önbellek belirttiğiniz yapı grubunu ayrı ayrı ele alacaktır
ait olduğu önbellekler. Siz belirtseniz bile her grup yalnızca bir kez ele alınır
aynı gruptan birkaç yol. Bu seçenekle tümünü geçici olarak karıştırırsınız
Belirttiğiniz grupları tek bir grupta toplayın.

Sembolik bağlantılara sabit bağlantı kurabiliyorsanız, bunu temizlemek için yapmanın istenmeyen etkileri olabilir.
çünkü üyeleri bir gruptan diğerine taşıyabilir. Sonraki harmanlanmamış
temizler, daha sonra bunları orijinal gruptan vaktinden önce temizleyebilir.

-c spec
--czaman spec
--zamanı değiştir spec
Dosyanın inode'unun son değişiklik zamanı. Bir bağlantı durumunda bu olabilir
son kullanıcının dosyayı farklı şekilde yeniden oluşturduğu ve dosyayla bağlantısını kestiği zaman
önbellek. Bu aynı zamanda aşağıdaki "--set-user" seçeneğinin de geçerli olması gerektiği zaman olabilir.
kullanıcıyı değiştirin. İyi çalışan sistemlerde bu aynı zamanda
son teyp yedeklemesi veya arama dizini oluşturma işlemi, verileri sıfırlayarak işaretlerini kapattı.
bir zaman.

-m spec
--mtime spec
--değişiklik-zamanı spec
Dosyanın son değiştirilme zamanı. Başka bir yerde açıklandığı gibi önerilmez
makepp'in bir dosyayı güncellemesini sağlamak için. Yani son değişiklik genellikle zaman olacaktır.
yaratılışın. (Ancak gelecekte makepp isteğe bağlı olarak mtime'ı şu durumlarda güncelleyebilir:
dosyaların silinmesi. Bu, zamansız dosya sistemlerindeki veya kopyalardaki bağlantıların
takip edildi.)

-g Grup
--newgrp=Grup
--yeni-grup=Grup
Etkin ve gerçek grup kimliğini gruba (ad veya sayısal) ayarlayın. Sadece root olabilir
bunu yapabilen. Gruplandırılmış derleme önbelleklerini kullandığınızda bu gereklidir ve
grup kimliğine göre önbelleklere yazma erişimi sağlayın. Genellikle bu olmayacak
kök grubu ve dolayısıyla çoğaltma bu olmadan yazılamaz dizinler oluşturur
seçeneği.

Bu seçenek, adını ne yazık ki kolaylıkla sağlayamayan eşdeğer "newgrp" yardımcı programından almıştır.
"cron" işlerinde veya benzer kurulumlarda kullanılabilir.

-i
--yapı bilgisi
--build-info-check
Derleme bilgilerinin üyeyle eşleşip eşleşmediğini kontrol edin. Bu test oldukça pahalı olduğundan
Gündüzleri bu seçeneği vermemeyi düşünebilirsiniz.

-l
--sembolik bağlantı kontrolü
--sembolik-bağlantı kontrolü
Bu seçenek, harici sabit olmayan her sembolik bağlantıyı "temiz" bir şekilde okumanızı sağlar.
istenen üyeye işaret ettiğini doğrulamak için bağlantılar. Bu biraz olduğundan
pahalıdır, bunun yalnızca geceleri yapılması önerilir.

-M spec
--in-mtime spec
--gelen-değişiklik-zamanı spec
Gelen dizindeki dosyaların son değiştirilme zamanı. Bu dizin
ücretsiz olarak yazılabilen, işleme özel adlara sahip geçici dosyalar için kullanılır.
eşzamanlı erişim ve daha sonra atomik olarak önbelleğin aktif kısmı olarak yeniden adlandırıldı.
Dosyalar normalde burada yalnızca onları yazmak için gereken süre kadar kalır, ancak
bunları yazan süreç anormal bir şekilde sonlandırılırsa yetim kalırsınız
bunları kaldırabilirsiniz. Bağlantı önemli olduğundan önbelleğin bu kısmı ilk önce temizlenir.
Önbelleğin etkin kısmındaki dosyalar, artık dosyalardan uygunsuz şekilde etkilenebilir.

"--incoming-modification-time" için zaman belirtimi "+" ile başlamalıdır ve varsayılanlar
"+2h" (en az 2 saatlik dosyaların artık kaldırıldığı varsayılır).

-w
--iş günleri
Bu, zaman seçeneklerinin nasıl sayıldığını etkiler. Hafta sonları sanki onlarmış gibi göz ardı ediliyor
orada değildik. Bu seçeneği hafta sonu vermeniz bir istisnadır. Sonra bu
hafta sonu normalde sayılır. Yani bunu Salı gününden itibaren çalışacak cronjobs'larda kullanabilirsiniz.
cumartesiye kadar. Yaz saati göz ardı ediliyor. Yani yaz hafta sonları cumartesiden itibaren gidebilir
1:00'dan Pazartesi 1:00'e veya güney yarımkürede kış hafta sonları Cuma 23:00'den
Pazar 23:00 veya saat diliminiz saati ne kadar değiştirirse değiştirsin. Tatiller de
dikkate alınmaz.

-p perl kodu
--perl=perl kodu
--predicate=perl kodu
YAPILACAKLAR: Bu açıklamayı grup değişikliklerine uyarlayın!

Bu İsviçreli subayın bıçağı. perl kodu skaler bağlamda bir kez çağrılır
her önbellek girişi için (yani dizinler ve meta bilgi dosyaları hariç). Bu
"File::Find" "aranıyor" işlevinde çağrılır, bu nedenle yapabileceğiniz değişkenler için oraya bakın
kullanmak. Bir "lstat" gerçekleştirildi, böylece "_" dosya tanıtıcısını kullanabilirsiniz.

If perl kodu "undef" değerini döndürür, sanki orada değilmiş gibi, diğeri budur
seçenekler karar verir. True değerini döndürürse dosya silinir. Yanlış döndürürse,
dosya tutulur.

-s spec
--boy spec
Dosya boyutu spesifikasyonu tıpkı zaman spesifikasyonları gibi çalışır; "+"
daha büyük veya daha küçük için "-", ancak birimlerin "c" olması gerekir (bayt,
varsayılan), "k" (kilobayt), "M" (megabayt) veya "G" (gigabayt).

-u kullanıcı
--kullanıcı=kullanıcı
--set-user=kullanıcı
Bu seçenek çok farklı. Bir dosyanın ne zaman silineceği yazmıyor. Onun yerine
silinmeyen dosyalar için geçerlidir. Birçok sistemde yalnızca kökün bulunduğunu unutmayın.
Bir dosyanın kullanıcısını ayarlamaya izin verilir. "Derlemeyle çalışırken dikkat edilmesi gerekenler" bölümüne bakın
önbellekler" kullanıyorsanız, sahipliği neden tarafsız bir kullanıcıya değiştirmeniz gerekebilir?
disk kotaları.

Bu strateji yalnızca kullanıcılarınıza yapıyı bozmamaları konusunda güvenebiliyorsanız işe yarar.
Disk kotasının ötesinde rastgele (yani geliştirilmeyen) dosyaları depolamak için önbellek.
İlişkili meta veri dosyasının mülkiyeti korunur, böylece her zaman görebilirsiniz
bir dosyayı önbelleğe alan kişi. Bu seçeneğe ihtiyacınız varsa, birkaç tane verilmesi gerekebilir.
gündüz saatlerinde.

Ne kadar alana sahip olduğunuza ve kullanım alanınıza bağlı olarak farklı olası stratejiler vardır.
yapı önbelleğinin bağlantılı dosyalar içerip içermediği veya kullanıcıların yalnızca kopyalara sahip olup olmadığı.
Birbiri ardına veya farklı zamanlarda çağrılarak çeşitli stratejiler birleştirilebilir.
zamanlar. "Show" komutunun amacı uygun bir strateji bulmanıza yardımcı olmaktır.

Gecelik (Salıdan Cumartesiye) bir çalıştırma "--atime +2" (veya "--mtime") belirtebilir
eğer vaktiniz yoksa), iki gün boyunca kimsenin okumadığı tüm dosyaları silmek.

Bağlantıları kullanırsanız, aşağıdaki durumlarda meydana gelen hızlı, yararsız büyümeyi de önleyebilirsiniz.
Hiçbir zaman sürüm kontrolüne tabi tutulmayan ardışık başlık değişiklikleri, birçok nesnenin ortaya çıkmasına neden olur
hızla yaratılıyor. "--mtime=-2h --ctime=+1h" ile saatlik çalışma gibi bir şey
gündüzleri yaratıcının bir saatten kısa süre içinde sildiği adamları yakalayacak,
ve o zamandan beri kimse istemedi.

şov [seçenek ...] /yol/giden/önbellek Kendi ID’n ile mağazalarını oluştur
Bu, orijinal sahibini gösteren bir tür özyinelemeli "ls -l" veya "stat" komutudur.
önbelleğe alınan dosyanın sahibi değiştirildiğinde ve meta veri dosyası değiştirildiğinde de
orijinal sahibini korur ("clean --set-user" uyarınca). Verilen dosyaları gösterir veya
hepsi verilen dizinlerin altında.

Alanlar kısa standart ve uzun ayrıntılı biçimdedir:

MOD, mod
Önbelleğe alınan dosyanın, genellikle yerleştirildiği şekliyle sekizlik modu eksi
bitleri yaz.

EL, harici bağlantılar
Grubun tüm üyelerine yönelik harici sabit bağlantıların sayısı birleştirilmiştir.
Yalnızca bu 0 olduğunda dosya temizlenmeye uygun olur.

C, kopyalar (yalnızca gruplandırılmış yapı önbellekleri için)
Aynı dosyanın tüm derleme önbelleklerindeki kopya sayısı. İdeal olarak bu
sembolik bağlantılara sıkı bağlantıya izin veren sistemlerden biridir, ancak bu
Birden fazla kopyaya harici bağlantılar mevcutken geçici olarak mümkün olmayabilir
(bu durumda silersek bağlantı sayısını kaybederiz.

S, sembolik bağlantılar (yalnızca gruplandırılmış yapı önbellekleri için)
Derleme önbellekleri arasındaki sembolik bağlantıların sayısı. İdeal olarak bu sayı
Sembolik bağlantılara sabit bağlantıya izin veren sistemlerde eksi bir önbellek oluşturun.
Ancak bir önceki alanda da açıklandığı gibi gereğinden fazla kopya çıkabilir,
ve dolayısıyla daha az bağlantı.

UID Önbelleğe alınan dosyanın sahibi. Bu, "temiz --user" seçeneğiyle değiştirilebilir.

BI-UID
Derleme bilgisi dosyasının sahibi. Bu temiz tarafından değiştirilmez, görmesine izin verir
dosyayı ilk kim oluşturdu?

BOYUT
Bayt cinsinden boyut (bir kopyanın).

bir zaman, mzaman, czaman
Uzun ayrıntılı formda dosya erişim (okuma) süresini, değişiklik bilgisini alırsınız.
zamanı ve inode değişim zamanını (örn. bazı kullanıcıların harici bağlantısını sildiğinde)
önbelleğe alınmış dosya). Kısa standart formda üç kereden yalnızca birini alırsınız
üç ayrı sütunda:

AD, MD, CD
Erişimin, değişikliğin veya inode değişikliğinin haftanın günü.

ADATE, MDATE, CDATE
Erişim, değişiklik veya inode değişikliği tarihi.

ATIME, MTIME, CTIME
Erişimin, değişikliğin veya inode değişikliğinin gün saati.

ÜYE
Önbellek kökündeki anahtar da dahil olmak üzere önbelleğe alınan dosyanın tam yolu.

"-v, --verbose" ile her komut için gösterilen bilgiler bir
"temiz" komutuna hangi seçeneklerin verileceği izlenimi. Zamanlar şurada gösterilmiştir:
okunabilir form ve bu dosyanın gün, saat veya dakika sayısı kadar yaşı
az önce aşıldı. Seçeneği iki katına çıkarırsanız, her biri için ayrıca bilgi alırsınız.
grup üyesi.

Standart seçenekler: "-A, --args-file, --arguments-file=dosyaadı, -f, --force, -o,
--output=dosyaadı, -O, --outfail, -v, --verbose"

-a
--bir zaman
--erişim süresi
Ayrıntılı olmayan modda dosya değiştirme süresi yerine dosya erişim süresini gösterin.

-b
--karıştırmak
--karışım grupları
Genellikle her biri /yol/giden/önbellek belirttiğiniz yapı grubunu ayrı ayrı ele alacaktır
ait olduğu önbellekler. Siz belirtseniz bile her grup yalnızca bir kez ele alınır
aynı gruptan birkaç yol. Bu seçenekle tümünü geçici olarak karıştırırsınız
Belirttiğiniz grupları tek bir grupta toplayın.

-c
--czaman
--zamanı değiştir
Ayrıntılı olmayan dosya değiştirme zamanı yerine inode bilgisi değişim zamanını göster
modu.

-d
--silinebilir
Yalnızca silinebilir dosyaları, yani harici bağlantı sayısı 0 olan dosyaları göster.

-p model
--desen=model
model bash stili dosya adı modeli (örn. ?, *, [], {,,}) eşleşiyor mu?
üye adlarını anahtardan ayıran alt çizgiden sonra yazın.

-s liste
--sıralama=liste
Ayrıntılı olmayan modda sıralama düzenini değiştirin. Liste büyük/küçük harfe duyarlı değildir
Sütun başlıklarının virgül veya boşlukla ayrılmış sırası. İki özel durum vardır:
"üye" yalnızca anahtardan sonraki adları, yani dosya adlarını olduğu gibi dikkate alır
önbelleğin dışında. Ve hangisini gruplandıran özel bir "yaş" adı vardır.
tarih ve saat gösteriliyor. Bu seçenek varsayılan olarak "üye, yaş"tır.

Sıralamanın dayanılmaz derecede uzun sürdüğü veya daha fazlasına ihtiyaç duyduğu büyük bir önbelleğiniz varsa
işlemlerinize izin verilenden daha fazla bellek varsa, boş bir değer vererek sıralamayı atlayabilirsiniz.
liste.

istatistikler [seçenek ...] /yol/giden/önbellek Kendi ID’n ile mağazalarını oluştur
Bu, derleme önbelleği içerikleriyle ilgili çeşitli istatistik tablolarının çıktısını verir. Her tablo
üç sütun grubuna ayrılmıştır. İlk sütun her tabloya göre değişir ve
satır başlığı. Diğer iki grup toplamı ile ilgilidir BOYUT dosya sayısı ve sayısı DOSYALAR
bu başlık için. Dizinler ve yapı bilgisi dosyaları sayılmaz, dolayısıyla bu bir
boyut olarak gerçek disk kullanımından biraz daha az ve dosya sayısı olarak yaklaşık yarısı.

Son iki grubun her biri üç sütun çiftinden oluşur; bir sütun değere sahiptir,
ve bir tanesi değerin temsil ettiği toplamın yüzdesi için. İlk çift gösteriliyor
dosyaların boyutu veya dosya sayısı. Diğer iki çift şunu gösteriyor:
KUMÜLBir kez küçükten büyüğe ve bir kez de tam tersi şekilde sıralama yapılır.

İlk sütunu içeren ilk üç tablo AD, CD or MD erişim sürelerini göster, inode
günlere göre gruplandırılmış değişiklik zamanları veya değişiklik zamanları. Günler aslında 24 saatlik bloklardır
istatistik komutunun başlangıç ​​zamanından geriye doğru sayma. İlk satırın "0" satırı
Böylece tablo, boyutların toplamını ve bir günden daha kısa sürede erişilen dosyaların sayısını gösterecektir.
evvel. Eğer hiçbir dosyaya erişilmemişse, "0" satırı olmayacaktır. Üçüncü sıradaki "1" satırı
tablo, 24 ila 48 arasında değiştirilen (yani derleme önbelleğine yazılan) dosyaları gösterecektir.
saatler önce.

Bir sonraki tablo, EL, harici bağlantıları, yani kaç yapı ağacının bir dosyayı paylaştığını gösterir
yapı önbelleği. Bu, derleme önbelleğinin kullanışlılığının bir ölçüsüdür. Ne yazık ki sadece
geliştiricilerin kendi disklerinde bir buld önbelleği olduğunda çalışır, aksi takdirde kopyalamaları gerekir
bu da hiçbir küresel iz bırakmıyor. İçeriğin harici bağlantı sayısı ne kadar fazlaysa,
derleme önbelleğinin faydası daha büyük.

Bir sonraki tablo yine EL, öncekiyle aynı bilgileri gösterir ancak ağırlıklıdır
harici bağlantıların sayısına göre. Harici bağlantı sayısı bir olan her bayt veya dosya
biri olarak sayılır. Ancak sayı on ise değerler on kez sayılır. Bu yüzden
başlıklar şöyle değişiyor *BOY ve *DOSYALAR. Bu, nasıl olduğunu gösteren varsayımsal bir değerdir.
ne kadar disk kullanımı veya aynı yapı ağaçlarının tümü kullanılmış olsaydı ne kadar dosya olurdu
derleme önbelleği yok.

Bir masa daha, C:S sembolik bağlantılara kopyalar, yalnızca gruplandırılmış önbelleklerle ilgilidir. İdeal olarak hepsi
üyeler bir kopyada bulunur ve gruptaki önbellek sayısından bir tane daha az sembolik bağlantı bulunur.
Temizleme kopyalanana kadar sembolik bağlantılar "0" olarak kalır. Birden fazla kopya olabilir,
çoğaltılmadan önce aynı dosyayı birden fazla kişi oluşturmuşsa veya
çoğaltma dosyayı tercih edilen bir diske taşıdı ancak orijinal dosya hala
kullanmak. Gereksiz kopyalar, temizlik yapıldığında artık sembolik bağlantılara sahip olmadıklarını tespit ettiğinde sembolik bağlantılara dönüşür
Dış bağlantılar.

Standart seçenekler: "-A, --args-file, --arguments-file=dosyaadı, -v, --verbose"

-h
--saat
İlk üç tabloyu çok daha ayrıntılı bir biçimde görüntüleyin. Sütun başlıkları
geçmek AH, CH or MH buna göre.

-p model
--desen=model
model bash stili dosya adı modeli (örn. ?, *, [], {,,}) eşleşiyor mu?
üye adlarını anahtardan ayıran alt çizgiden sonra yazın. Tüm istatistikler
eşleşen dosyalarla sınırlıdır.

Uyarılar çalışma ile inşa etmek önbelleğe
Derleme önbellekleri aşağıdaki durumlarda iyi çalışmaz:

· Makepp'in bir dosya oluşturmak için çalıştırdığı komut aslında yalnızca güncellemeler dosya ve
taze inşa etmiyorsa, o zaman yapmalısın DEĞİL bir yapı önbelleği kullanın. (Bir örnek bir
Statik bir kitaplıktaki bir modülü (bir arşiv dosyası veya bir dosya) güncelleme komutu
Uzantısı .a). makepp_cookbook'ta açıklandığı gibi, modern makinelerde neredeyse
Bir arşiv dosyasını güncellemek her zaman kötü bir fikirdir; onu sıfırdan yeniden oluşturmak daha iyidir
her seferinde çeşitli nedenlerle. Bu da güncelleme yapmamak için başka bir neden
arşiv dosyası.) Bunun nedeni, derleme önbelleğinin
Aynı dosya sisteminde makepp, dosyayı kopyalamak yerine sabit bir bağlantı oluşturur. Eğer o zaman
daha sonra dosyayı değiştirdiğinizde, makepp'in derleme önbelleğinde bulunan dosya
aslında değiştirilebilirsiniz ve potansiyel olarak başka birinin derlemesini bozabilirsiniz.
Uygulamada makepp genellikle bir dosyanın değiştirildiği andan itibaren değiştirildiğini algılayabilir.
derleme önbelleğine yerleştirilir ve onu kullanmaz, ancak bazen aslında kullanmayabilir
değişikliği tespit edin.

· İçin .o dosyalarda bu biraz yanlış olabilir, çünkü (derleyiciye bağlı olarak)
ve hata ayıklama düzeyi) oluşturuldukları kaynağın yolunu içerir. Bu yapabilir
zor hata ayıklama. Hata ayıklayıcı, orijinal oluşturucunun kopyasını düzenlemenizi sağlayabilir.
kaynak oluşturucunun artık bir kopyası yoksa dosyayı bulamayabilir. Makepp
bir gün yola yama yapma seçeneği sunabilir, bu da elbette bir kopya anlamına gelecektir,
etkili bir bağlantı yerine.

· İçinde kodlanmış bir yol bulunan herhangi bir dosya, yapı önbelleğine yerleştirilmemelidir
(derleme önbelleğinizi birkaç dizin hiyerarşisi veya birkaç dizin arasında paylaşırsanız
geliştiriciler). Bu durumda, farklı bir dizindeki derlemenin sonucu,
sanki aynı dizindeymiş gibi, dolayısıyla derleme önbelleğinin tüm konsepti şu şekildedir:
uygulanamaz. Komut satırında dizin yolunu belirtirseniz sorun olmaz, örneğin
bu:

&echo prog_path=$(PWD) -o $(çıkış)

çünkü o zaman komut satırı farklı olacak ve makepp yanlış bir şekilde çekmeyecektir.
dosyayı derleme önbelleğinden çıkarın. Ancak komut satırı farklı değilse, o zaman
bir sorun olabilir. Örneğin,

echo prog_path=`pwd` > $(çıkış)

düzgün çalışmayacak.

· Bağlantıları kullanırken ve aynı diskteki aynı projenin birçok aktif geliştiricisiyle,
derleme önbellekleri çok fazla disk alanı tasarrufu sağlayabilir. Ancak aynı zamanda bireysel kullanıcılar için
bunun tersi de doğru olabilir:

Chang'ın tam yapıyı yapan ilk kişi olduğunu hayal edin. Ching gelir ve bir bağlantı alır
tüm bu dosyalar. Chang çoğu şeyin değişmesine yol açan bazı temel değişiklikler yapıyor
yeniden inşa edildi. Onları kontrol ediyor, Chong kontrol ediyor ve yapı önbelleğine bağlantılar alıyor.
Chang yine değişiklikler yaparak üçüncü bir dosya kümesine yol açar.

Bu senaryoda, hangi temizleme stratejisini kullanırsanız kullanın hiçbir dosya silinmeyecektir.
çünkü hepsi hâlâ kullanılıyor. Sorun şu ki, hepsi Chang'a ait.
bu onun disk kotasına ulaşmasını sağlayabilir ve bu konuda yapabileceği hiçbir şey yoktur.
çoğu sistem. "Derleme önbelleği nasıl yönetilir" bölümündeki "clean --set-user" komutuna bakın
sistem yöneticisinin dosyaları kotası olmayan bir önbellek sahibine nasıl değiştirebileceği konusunda.

· Hedefi ve yapısını çapraz kontrol etmek için zaman damgası/boyut imzaları kullanıyorsanız
info (varsayılan) ise, bir imza takma adı almak mümkündür;
karşılık gelen dosyalar algılanmayacaktır. Örneğin, MD5_SUM yapı bilgisi değeri
hedefin MD5 sağlama toplamı ile eşleşmeyebilir. Bu genellikle bir sorun değildir, çünkü
yapı önbelleği anahtarlarının eşleşmesi nedeniyle yapı önbelleğindeki hedef
yapı bilgisi dosyasına karşılık gelen hedefin yerine kullanılabilir.
Ancak derleme bilgilerine bağlı kural eylemleriniz varsa bu durum sizi
başını belaya sok (bu yüzden bunu yapma). Bu sizi endişelendiriyorsa --md5-check-bc komutunu kullanın.
seçeneği.

Eşzamanlı erişim
Derleme önbelleklerinin eşzamanlı erişimi desteklemesi gerekir; bu, uygulamanın zorunlu olduğu anlamına gelir.
ırklara karşı hoşgörülü olun. Özellikle, bir dosya şu tarihler arasında eskimiş (silinmiş) olabilir:
makepp bir hedefi içe aktarmaya ve içe aktarmanın tamamlanacağı zamana karar verir.

Ayrıca, bazı kişiler NFS üzerinden derleme önbellekleri kullanır ve bu da mutlaka tutarlı değildir. İçinde
Başka bir deyişle, yazarın bir ana bilgisayardaki dosya oluşturma ve silme sırası değişmez.
bir okuyucunun başka bir sunucuda gördüğü sıra ile mutlaka eşleşir ve bu nedenle yarışlar Amerika’ya vize ile ya da Meksika üzerinden geldikten sonra ilticaya başvuran kişileri, herhangi bir suça karışmadıkları sürece mahkeme kararı olmadan sınır dışı (deport) ettiremez.
dosya işlemlerinin sırasına özellikle dikkat edilerek çözülebilir. (Ama orada
genellikle yazma işlemlerinin hiçbir zaman almayacağını garanti eden yaklaşık 1 dakikalık bir NFS önbellek zaman aşımı
tüm okuyuculara yayılması bu süreden daha uzun sürer. Ayrıca, tipik olarak
pratikte yazmaların en az %99'u 1 saniye içinde her yerde görünür.) Bu nedenle,
önbelleğe alınan hedefin ve onun yapı bilgisi dosyasının farklı görünmesi durumuna tolerans göstermeliyiz
karşılık. Ayrıca, bir dosyanın saklanması sırasında ortaya çıkabilecek tuhaf bir yarış vardır.
aynı anda eskitilir ve değiştirilir; burada dosyalar NFS'den sonra bile uyuşmaz
önbellek temizlenir. Bu kaçınılmaz gibi görünüyor.

onworks.net hizmetlerini kullanarak makepp_build_cache_control'ü çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad




×
reklâm
❤️Buradan alışveriş yapın, rezervasyon yapın veya satın alın; ücretsizdir, hizmetlerin ücretsiz kalmasına yardımcı olur.