Yazılımın tek sen , ihtiyaç yerine ev dizini kullanın /usr/local.
/usr/localİstemediğinizde komutların sahipliğini değiştirmek veya kök olarak çalıştırmak zorunda kalmak yerine, yapılarınızı yalnızca ana dizininiz yerine ana dizininize yüklenecek şekilde yapılandırmanız gerekir./usr/local . Bu, sahibinin ve alt dizinlerinin yolunda /usr/localnasıl olduğu da dahil olmak üzere sahipliğinin değiştirilmesiyle ilgili tüm olası sorunları giderir .binsbinroot
Diğer kullanıcıların yazılımınızı çalıştırmasına izin vermeniz gerekiyorsa, onlara erişim verebilirsiniz. Aslında, muhtemelen zaten başarabileceklerdir, çünkü varsayılan olarak ana dizininiz izin verilen okuma ve yürütme erişimi . (Bunu istemiyorsanız, sadece chmodözel yapmak istediğiniz dosya veya dizinleri kullanarak ve muhtemelen de değiştirerek kolayca değiştirebilirsiniz umask.)
Ana dizininize yazılım yüklendiğinde, /usr/local/biniçeri girecek olan ikili dosyalar yerine geçecektir . Yüklediğiniz yazılımın ihtiyaç duyduğu alt dizinlere karşılık gelen ana dizininizin diğer alt dizinlerini alırsınız . Bu, genellikle kaynak koddan yazılım yüklediğinizde otomatik olarak gerçekleşir./home/username/bin/usr/local
Yapılarınızı Yapılandırma
Kaynak koddan oluşturduğunuz çoğu yazılımın çalıştırdığınız bir adımı vardır:
./configure
Bu configureşekilde çalıştırılabilen bir komut dosyasıyla birlikte gelen yazılımların büyük çoğunluğu için, /usr/localnihayetinde sudo make installonu yüklemek için çalıştırdığınızda içerideki kurulum için yapılandırmayı varsayılan olarak yapılandırır . Bunun nedeni, dolaylı olarak çalıştırmaya eşdeğer olmasıdır:
./configure --prefix=/usr/local
Bir dizini ana dizininize yüklenmek üzere yapılandırmak için bunun yerine bunu kullanın:
./configure --prefix="$HOME"
Pratikte, Ubuntu'da, giriş dizini yolları boşluk, diğer boşluk veya özel olarak kabuk tarafından işlenecek diğer karakterler içermez *, bu nedenle kullanıcı hesabınızı oldukça garip bir şekilde ayarlamadıysanız, şunları yazabilirsiniz:
./configure --prefix=$HOME
(Bununla birlikte, komut dosyaları yazmak için alışkanlık edinmenizi önermiyorum . Ayrıca, macOS gibi bazı diğer işletim sistemlerinde, kullanıcıların ev dizinlerine giden yolların boşluk içermesi daha az yaygındır.)
İsterseniz tam giriş dizini yolunuzu da yazabilirsiniz:
./configure --prefix=/home/username
( usernameTabii ki gerçek kullanıcı adınızla değiştirin . Herhangi bir nedenle ana dizininizde değilse, /homebuna göre ayar yapmanız gerekir.)
Yapılarınızı Kurma
Eğer çalıştırdıktan sonra make, çalıştırmakta alışık olabilir sudo make install, ancak kendi ev dizininde yüklediğinizde yapabilirsiniz öyleyse, root olarak çalıştırmak için gerek yoktur - ve gerektiği --omit sudo. Sadece koş:
make install
Benzer şekilde, bir uninstallhedefi destekleyen yazılımlar için :
make uninstall
Tam olarak istediğin buydu ... sadece ana dizininizde değil /usr/local.
Programlarınızı Çalıştırma
Muhtemelenbin ev dizininin alt dizin biri geçerlidir:
- zaten senin
$PATH, ya
- Gözlerinde farklı olacak
$PATHsadece geri çıkın ve eğer.
Bunun nedeni, .profilegiriş yaptığınızda çalışan komutları içeren giriş dizininizdeki dosyanın , Ubuntu'nun çoğu sürümünde (işletim sistemini yüklediğinizde oluşturulan ilk yönetici hesabı dahil) oluşturulan kullanıcı hesapları için bunu varsayılan olarak içermesidir :
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Bu kod, oturum açtığınızda (çünkü içinde .profile) çalıştırılır ve kişisel bindizininizi $PATH yalnızca o anda varsa yerleştirir. Bu yüzden oturumu kapatıp tekrar açmanız gerekebilir.
Ubuntu 14.04 gibi eski sürümlerin yanı sıra Ubuntu 17.10 gibi yeni sürümler de bununla birlikte gelir. Ancak, muhtemelen bu yazının en popüler sürümü olan Ubuntu 16.04, bunun yerine şunları içeriyor:
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Bu , bu dizinlerin gerçekten var olup olmadığını kontrol etmeden bin, ana dizininizin alt dizinini - ve aynı zamanda .local/binalt dizini - ekler $PATH. Dolayısıyla, 16.04 kullanıyorsanız veya kullanıcı hesabınız oluşturulduğunda 16.04 olan bir sistemden yükseltme yaptıysanız bin, ana dizininizin alt dizini zaten$PATH .
Kişisel .profiledosya kopyalanır /etc/skelkullanıcı hesabınızın oluşturulduğunda dizinde. Kullanıcı hesabınız eski bir Ubuntu sürümünde oluşturulduysa, .profiledaha yeni bir sürüme yükselterek o sürümünün sürümünü aldı ve kullanıcı hesabınız için değiştirilmedi.
Giriş bindizininizin alt dizini sizin $PATHiçindeyse, tıpkı Ubuntu'nun paket yöneticisi tarafından yüklenen veya içine yüklenen programlarda olduğu gibi, çalıştırılabilir dosyaları oraya yüklenen programları çalıştırabilirsiniz /usr/local.
.localSeçenek
.profileYukarıda açıklanan 16.04 dahil olmak üzere bazı Ubuntu sürümlerinde oluşturulan kullanıcı hesapları için varsayılan dosyanın yalnızca $HOME/binyolunuza değil, aynı zamanda eklediğini fark etmiş olabilirsiniz $HOME/.local/bin. Eklemiyorsanız .profile, ancak eklemek istiyorsanız , o zaman kolayca düzenleyebilirsiniz.
Gerçi genellikle mağaza ayarları ve önbelleğe alınmış verileri için kullanılan , ayrıca içeride yazılım yükleyebilir .localev dizininin alt dizinine. Bir kullanılabilirlik ve güvenlik açısından olduğu gibi, bunu yaparken de sınır tanımayan hissetmelidir --prefix="$HOME/.local"benzer--prefix="$HOME" .
İle başlayan dosya ve dizinlerin .grafik dosya tarayıcılarında varsayılan olarak gösterilmediğini ( göstermek ve yeniden göstermek için Ctrl+ Hkullanın) veya lskomutla ( göstermek için -Aveya -aişaretini iletin ) unutmayın. Bu istediğiniz gibi olmayabilir veya tam olarak istediğiniz gibi olabilir. Bu kişisel bir tercih meselesidir.
Ancak, bir kişinin ev dizininde yazılım oluşturan ve yükleyen bazı otomatik kaynak tabanlı paket yöneticilerinin olduğunu gözlemledim $HOME/.local. Bunun ne kadar yaygın olduğunu bilmiyorum - daha fazla araştırmayı ve bu yanıtı güncellemeyi umuyorum - ama sadece kullanmayı tercih edebilirsiniz$HOME elle derlediğiniz şeyler için . Bu şekilde olayların nereden geldiği açık olacak. Bir çarpışma olursa, yazılım hala kabul edilebilir bir şekilde bir arada var olabilir.
Ayrıca kasıtlı olarak bazı yazılımları $HOME/.localve diğer yazılımları da yükleyebilirsiniz $HOME. Sana kalmış. Hangisi bindizin öncelikle görünen $PATHbir komut durumunda, gelen aday olacağını birini ortam değişkeni olduğunu hem de aynı adı varoldukları için komutları.
Kredi gider Zanna ve Videonauth için hatalarını işaret bir de önceki sürümde Ubuntu bültenleri hangi varsayılan koduna sahip olan ilgili, bu cevabın .profileve düzeltmek için bana yardımcı onları (ayrıca bkz burada ).