Bir PPA'dan paketleri nasıl toplayabilirim?


45

Eklediğiniz bir ppa deposundan kiraz toplama paketleri var mı? Başka bir deyişle, bazıları da dahil olmak üzere güncelleme işleminin dışında tutuluyor mu?

Örneğin, ben istiyorum sadece gelen krom tarayıcı paketi bu depoda ancak diğerleri. Bu yüzden sudo apt-get upgrade, ppa'nın diğer (krom tarayıcı dışında) paketlerinin mevcut paketlerimin üzerine kurulmasını istemiyorum , sadece bir tane.

Bağımlılıkları yanlış kullanırsam ve dahil ettiklerime ihtiyaç duyduğumları dışlarsam, kendimi ayağımdan vurma lisansı olduğunun farkındayım, ancak bu durumda diğer paketlerin buna bağımlı olmadığının bir gerçeğini biliyorum.

Bu mümkün mü? Belki bir beyaz liste / kara liste dosyası falan vardır?


Üç nedenden dolayı synaptic'i iletirdim: Ubuntu, Ubuntu Software Center lehine yazılım güncelleyicisi olarak bıraktı, Synaptic'in yüklenen dosyalar üzerinde ppadan yükseltmeleri durdurması için bir yol görmedim (bu benim sorunumdu) ve ben GUI'ye bir komut satırı çözümü tercih ederim. İşe yarayan bir şey bulmayı bıraktı (aşağıdaki cevabımı inceleyin).
yuvilio

2
Yazılım Merkezi Yazılımın Yüklenmesi ve Kaldırılması için kullanılır, Güncelleme Yöneticisi Güncelleme için kullanılır, Synaptic'te sabitlemeyi kullanmış olabilirsiniz, böylece diğer paketler de yükseltilemezdi, ayrıca Terminal ile uğraşmak istemeyen yeni bir kullanıcı için GUI tercih edilir, tabii ki sizinki doğru cevaptır.
Uri Herrera

Yazılım Merkezi (Synaptic ile kolay) ile yapamayacağınız birkaç şey var. Ve herkes (özellikle yeniler) komut satırında rahat değil.
Mrokii

@Mrokii Yaklaşımımın yeni başlayanlar için olmadığını kabul ediyorum. Yazdığın Sinaptik cevabı ve işe yaradığını düşündüğüm Uri Herrera ima etti, bu konuda daha iyi. Bunu deneyen başkalarının oy vermesine izin vereceğim.
yuvilio

Yanıtlar:


61

Bunu yapmanın bir yolunu buldum.

Püf noktası iki sabitleme cümlesini kullanıyor . ALL paketlerini PPA'dan ilk, ikincisi de istediklerinizi seçmek.

Bu yüzden yukarıdaki örnek için önce ppa'yı her zamanki gibi ekliyorum:

$ sudo add-apt-repository ppa:webapps/preview
...
$ sudo apt-get update
...

Şimdi apt-cache ilkesini çalıştırırsam, bana yeni bir krom-tarayıcı sürümünün mevcut olduğunu ve mevcut krom-tarayıcımla aynı önceliğe (500) sahip olduğu için yükseltme ile kurulacağını gösterecek.

$ sudo apt-cache policy chromium-browser
chromium-browser:
  Installed: 18.0.1025.168~r134367-0ubuntu0.12.04.1
  Candidate: 20.0.1132.47~r144678-0precise1+webapps3
  Version table:
     20.0.1132.47~r144678-0precise1+webapps3 0
        500 http://ppa.launchpad.net/webapps/preview/ubuntu/ precise/main amd64 Packages
 *** 18.0.1025.168~r134367-0ubuntu0.12.04.1 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/universe amd64 Packages
        500 http://ppa.launchpad.net/chromium-daily/beta/ubuntu/ precise/main amd64 Packages
        100 /var/lib/dpkg/status
     18.0.1025.151~r130497-0ubuntu1 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
E: Unable to parse package file /etc/apt/preferences.d/webapps-preview-pin-400 (1)
$ 

Bu paket kadar harika ama bu ppa'daki diğerlerinin (500 önceliğe sahip) kurulmasını istemiyorum. Şu anda yükseltme yapmaya çalışırsam, yalnızca bu depodan istediğim krom paketlerinden daha fazlasını elde edeceğim:

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have been kept back:
  bamfdaemon gwibber gwibber-service gwibber-service-facebook gwibber-service-twitter indicator-appmenu libbamf0 libbamf3-0 shotwell
The following packages will be upgraded:
  chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg gwibber-service-identica indicator-messages indicator-status-provider-mc5
  indicator-status-provider-pidgin libindicator-messages-status-provider1
8 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.
Need to get 25.3 MB of archives.
After this operation, 5,034 kB of additional disk space will be used.
Do you want to continue [Y/n]? 

Bu yüzden yapabileceğim tek şey, bu ppa'daki tüm paketlerin, bu durumda webapps önizlemesinin , adında "krom" olanların dışında daha düşük bir önceliğe sahip olmasını istediğimi söylemek . Bunun için mekanizma bir paketi sabitliyor

/Etc/apt/preferences.d/ içinde iki cümlecik içeren bir dosya oluşturuyorum. Birincisi, webapps önizleme ppa'daki tüm paketleri normal olandan daha düşük bir öncelik verdiğini söylüyor (böylece daha yüksek bir sürüm numarasına sahip olsalar bile tercih edilmemişti .) Adında "chromium" olan bu ppa diğer paketlerle aynı önceliğe sahip, böylece yüklenecek (daha yüksek sürüm numarasına sahip).

$ cat /etc/apt/preferences.d/webapps-preview-pin-400
Package:  *
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 400


Package:  *chromium*
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 500

"Pin: release" seçeneğinin doğru dizesini tanımlamak için apt-cache policy 'i tekrar kullanabiliriz.

$ apt-cache policy
...
500 http://ppa.launchpad.net/webapps/preview/ubuntu/ precise/main i386 Packages
    release v=12.04,o=LP-PPA-webapps-preview,a=precise,n=precise,l=preview,c=main
    origin ppa.launchpad.net
...

<0.8.14 apt sürümleri için, sabitlenmiş paketlerin joker karakterler çalışmadığı için açıkça belirtilmesi gerekir:

$ cat /etc/apt/preferences.d/webapps-preview-pin-400
Package:  *
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 400


Package:  chromium-browser chromium-codecs-ffmpeg chromium-browser-l10n chromium-codecs-ffmpeg-extra
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 500

Ve şimdi, yükseltme yapmaya çalıştığımda diğerlerinden değil sadece bu ppa'dan istediğim paketleri alıyorum. Tüm güzel kiraz benim için aldı:

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 25.1 MB of archives.
After this operation, 5,026 kB of additional disk space will be used.
Do you want to continue [Y/n]?

5
oldukça karmaşık, imho.
Mrokii

5
Katılmıyorum, birinin istediği şey için bu oldukça açık. Ve ppa'nın Pin adını belirleme konusunda tüm talimatlara sahip olmak güzel.
Nicholi

Bu özel cevap, apt'nin daima belirli bir havuzun paketlerini tercih edeceğinden emin olmak isteyenler içindir. Biri kapalı bir çözüm istiyorsanız, bu cevabı ya da bunu
Braiam

7

?originSeçiciyle yüklemek istediğiniz sürümü de seçebilirsiniz :

Kökeni normal ifade kökeni ile eşleşen paket sürümleriyle eşleşir. Örneğin, “!? Origin (debian)” sisteminizde resmi olmayan paketleri (Debian arşivinden olmayan paketler) bulacaktır.

Yani, kendi durumunuzda kullanabilirsiniz:

sudo aptitude install !?origin(LP-PPA-webapps-preview) chromium

Veya aşağıdakileri kullanarak sürümü belirleyebilirsiniz <packagename>=<version>:

sudo apt-get install chromium=20.0.1132.47~r144678-0precise1+webapps3

5

Aslında bazı paketleri Synaptic ile "kiraz toplayabilirsiniz" ve çok kolaydır. Bu gibi çalışır:

  • Bunu sadece belirli PPA'lar için yapmak istiyorsanız, Synaptic penceresinde "Origin" (sol alt köşe) seçeneğini seçin ve ardından değiştirmek istediğiniz PPA'yı seçin.

  • otomatik olarak yükseltmek istemediğiniz tüm paketleri seçin.

  • "Paket / Kilit Sürümü" menüsünü seçin. Seçtiğiniz tüm paketler siz tekrar açana kadar otomatik olarak yükseltilmez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.