it-swarm.asia

APT Ana dizinime paketleri kurmak için herhangi bir yol var mı?

Ana dizine paketleri kurmak için APT almanın bir yolu var mı?

Sistem genelinde değişiklik yapmak istemiyorum.

Alternatif olarak, ev dizini tabanlı linux paket yöneticileri var mı?

42
Joel McCracken

Dpkg, RPM'nin sahip olduğu --relocate özelliğine sahip değildir. Yine de bu özelliği kaç RPM paketinin desteklediğini düşünmeye değer. Temel olarak, yapılamaz.

Yapabileceğiniz şey, küresel olarak sisteme kurmadan önce bir şeyi test etmek istiyorsanız bir chroot kullanmaktır. Bunu yapmak için, root erişimi sağlayabilmeniz gerekir. Yapılacak ilk şey temel bir chroot oluşturmaktır:

# debootstrap lenny lenny-chroot

Bu, lenny-chroot Dizininde bir Lenny chroot oluşturur.

Şimdi krota girebiliriz:

# chroot lenny-chroot

Şimdi istediğimizi yapabilir ve sistemin geri kalanını bozmadan herhangi bir şey kurabiliriz. İşimiz bittiğinde, exit yazın veya ctrl-D tuşlarına basın.

17
David Pashley

Linuxbrew , kaynağından derleyen ve ana dizininizdeki ikili dosyaları tutan Linux için (OS X için popüler Homebrew paket yönetim sistemine dayalı) kök olmayan başka bir paket yöneticisidir.

Dokümanlardan alıntı yapan Linuxbrew özellikleri:

  • Bir ana dizine yazılım yükleyebilir ve bu yüzden Sudo gerektirmez
  • Yerel dağıtım tarafından paketlenmemiş yazılımı yükleyin
  • Yerel dağıtım eskidiyken yazılımın güncel sürümlerini yükleyin
  • Hem Mac'inizi hem de Linux makinelerinizi yönetmek için aynı paket yöneticisini kullanın
8
Tim Smith

Gentoo öneki tam olarak istediğinizi yapar.

Tüm paketleri belirtilen bir dizine kurar. Kök erişimi gerekmez. Ondan kurtulmak istiyorsanız, temel dizini kaldırın.

Not: Bu Ubuntu> = 11.04 veya Multiarch ile başka herhangi bir Debian türevi üzerinde çalışmaz.

7
hayalci

Derleme seçeneğine küçük bir eklenti olarak, derleme zamanında farklı bir önek seçeneğine sahip bir pakete derleme ("checkinstall" veya belki de başka bir yöntemle) için yarım yol seçeneği vardır. Avantajı, paketin yetenek veya sinaptik gibi paket yöneticilerinde görünmesidir.

Bunun yanı sıra, bazı durumlarda gerçek .deb dosyasını indirmenin ve dpkg kurulumu ile farklı bir önek zorlamanın mümkün olabileceğini düşünüyorum, ancak herhangi bir rastgele paketle yapılabilecek bir şey olmadığını düşünüyorum, ancak derlenmiş olmalılar. yüklemeden önce dışa aktaracağınız konumları (değişmez açık önek yerine) bazı değişkenler. Ben yordam hakkında hiçbir şey bilmiyorum, google için "dpkg instdir öneki".

4
the dsc

Sen-ebilmek kullanma fakechroot - kendi web sitesinde demo bir göz atın.

2
niutech

Hayır, yapabileceğini sanmıyorum.

Şu an düşünebildiğim en iyi şey apt-get source ve paketinizi derleyin. Belki bir şekilde paketleri evinize yüklemek için prosedürü (daha fazla veya daha az otomatik olabilir) Tweak edebilirsiniz.

Bir diğeri dpkg -X istediğiniz bir dizine çıkarmak için.

1
ynimous

Rootless GoboLinux tam olarak istediğinizi yapabilir: yükseltilmiş ayrıcalıklara sahip olmayan paket yöneticisi kendi ana dizininizde. Umarım ne yaptığınızı bilirsiniz; rootless Gobo'nun en bakımlı kurulum modu değil ve birkaç yıl önce kullandığımda, kurulum komut dosyası diğer Gobo değişikliklerine göre biraz eski olduğu için birkaç ayar gerekiyordu.

Ayrıca birkaç paketleyen klik var .debs, paketleri ana dizininize yükleyebilir ve çalışması için kök ayrıcalığı gerektirmez ... ancak ilk kurulum root gerektirir.

1
ephemient

Genellikle kaynakları alıyorum ve "INSTALL" gibi bir dosyaya bakıyorum. Genellikle ./configure --prefix=somedir. Sonra somedir/bin yolunuza.

1
Ian Kelling

Başarıyla hiçbir kök erişimine sahip olmadığım bir okul Debian sunucusuna BÜYÜK işbirliği yazılım paketleri koleksiyonu yüklemek için kullandığım bir çözüm var (başka bir paket yöneticisi yüklemek için bile değil). deboostrap veya herhangi bir paket yöneticisi kullanmaz.

Yöntem kısmen manuel, ancak uygun hale getirmek için elimden geleni yaptım.

install olarak adlandırdığım bu komut dosyasını kullanır (chmod +x 'A unutmayın):

#!/bin/bash

# PREFIX is the installation root, i.e. a directory you have write access to
PREFIX=$HOME

# unpack the archive to $PREFIX
ar p "$1" data.tar.xz | tar xJ -C $PREFIX

# go through all unpacked text files and search for occurences of /usr/...
# we're gonna replace some of them with $PREFIX/usr
files=$(dpkg --contents $1 | grep '^-' | awk '{print $6}' | sed 's/^..//' | sort | uniq)
for f in $files; do
    file="${PREFIX}${f}"
    if grep -Iq . "$file"; then
        if grep -q '/usr' "$file"; then
            # interactively ask for each occurence, if it should be replaced
            vim -c '%s#/usr#'$PREFIX'/usr#gc' -c 'wq' "$file"
        fi
    else
        echo "Leaving binary file $file unmodified"
    fi
done

Bu yüzden genellikle ilk önce apt-get download package_name Kullanarak bir deb dosyası indiriyorum. Sonra ./install package_name_blabla.deb Komutunu çalıştırıyorum ve /usr İle değiştirilmemesi gerekiyorsa, paketlenmemiş dosyalarda her $PREFIX/usr Oluşumuna el ile karar veriyorum.

Bu karar tamamen hangi paketlerin sisteme yüklendiğine ve hangilerinin bu yöntem kullanılarak yüklendiğine bağlıdır. Genellikle, ör. pkg-config dosyalarının bu ikameye ihtiyacı vardır, oysa #!/usr/bin/Perl gibi Shebang satırlarına gerek yoktur. Genel kural, ortaya çıkan yolun mevcut bir dosyayı işaret etmesi gerektiğidir.

Paketler bu şekilde yüklendiğinde, diğer programlara bir şekilde bunları anlatmanız gerekir. Bu, LD_LIBRARY_PATH, PATH, PYTHONPATH, PKG_CONFIG_PATH, CMAKE_MODULES_PATH, CMAKE_PREFIX_PATH vb.

Bu yaklaşımda, bağımlılıkların otomatik olarak indirilmediği/yüklenmediği konusunda bir uyarı vardır; bunları manuel olarak takip etmeniz gerekir.

Ayrıca APT açıkça bu paketler hakkında bilmiyor, bu yüzden onları sonsuza kadar kayıp olarak gösterecektir.Ancak bu mantıklı - kim bir bağlı bir sistem genelinde uygulama yüklemek istersiniz kullanıcının kurulumu.

Bir programı kaldırmak isterseniz, ar p "$1" data.tar.xz | tar tJ Kullanarak deb arşivinin içeriğini listeleyebilir ve daha sonra bu dosyaları PREFIX öğesinden silebilirsiniz.

0
Martin Pecka

Bunun bir dağıtımdaki resmi depolarla nasıl çalışacağını hayal etmekte zorlanıyorum. Bağımlılıkları nasıl çözmeli? Sistemden mi yoksa ev dizinlerinizden mi? Her ikisinde de farklı sürümler bulursa ne olur?

Düşünebileceğim en iyi şey, insanların 64 bit sistemlerde 32 bit uygulamalar için yaptığı gibi krootlu bir ortam olurdu. Krootta debootstrap çağırmak gibi daha fazla yük, ama bazı symlinking , Shell sarıcı komut dosyası eğlenceli, ne istersen yapabilir.

0
kbyrd

Ana klasörünüze paketleri yüklemeniz gereken çok az durum vardır.

Ancak yazılımı yerel makinenize derleyebilir ve yükleyebilirsiniz. Sadece açın, ardından ./configure --prefix=$HOME/local veya başka bir dizin. Daha sonra make ve make install normal olarak. Bu, programı ~/local/, örneğin yürüttüğünüz program ~/local/bin/programmname.

0
Rory

Ben hala sorun üzerinde çalışıyorum, ama temelde ihtiyaç duyduğunuz şey debootstrap ve fakeroot ile çalışması gerekir. debootstrap sadece bir grup Shell betiği, bu yüzden onu neyin tıkladığını görmek için ayırıyorum. Sabit kısım, kurulduktan sonra dosyaları kaldırmak olacaktır.

0
Perkins

Ne yazık ki (süper popüler olacağından eminim) böyle bir şey sağlayan herhangi bir dağıtım duymadım. Gerçi rpm tabanlı dağıtımını taklit edebilirsiniz ... Bunu denemedim, ancak kullanıcı tabanlı bir rpm veritabanı oluşturabilir ve daha sonra kullanıcı veritabanına rpm'ler yükleyebilirsiniz.

Aşağıdakilerle yeni bir kullanıcı tabanlı dağıtım oluşturmayı deneyin:

rpm --initdb --dbpath DIRECTORY

Sonra yardımcı olabilecek birkaç seçenek var:

  • --prefix
  • --relocate
0
Andrew Case

Kendi tecrübelerime göre, chroot ortamı olmayan başka bir dizine yüklemek için mevcut DEB paketlerini kullanmanın kolay bir yolu yoktur. Debian/Ubuntu kurulum araçları dpkg / yetenek / dselect tümünün düzgün çalışması için kök ayrıcalıkları gerekir.

Şimdi kaynak DEB verildiğinde, Debian/rules dosyasını, paketin farklı bir dizin ağacına kurması ve kurması için değiştirebilirsiniz, ancak daha sonra zaten mevcut olan ikili paketleri kullanmıyorsunuzdur.

Diğerlerinin de belirttiği gibi debootstrap kullanabilir ve kolayca 64-bit bir ana bilgisayarda 32-bit bir ortama sahip olmak için yaptığım bir chroot ortamı oluşturabilirsiniz, ancak bu bir chroot yüklemeyi gerektirir en azından temel paketler kopyalandı. Alanınız varsa ve bu uygun bir çözümse, chroot ortamında yüklü uygulamaların kolayca yürütülmesini sağlamak için dchroot veya daha iyisi schroot ile birleştirebilirsiniz.

0
Jeremy Bouse