'Ayrıntılı' apt-get çıkış kodunu nasıl alabilirim?


13

Bunun apt-getgibi hataların oluşması için 'ayrıntılı' çıkış kodunu nasıl alabilirim

Package google-chrome is a virtual package provided by:
  google-chrome-stable 29.0.1547.76-r223446
  google-chrome-beta 30.0.1599.47-1
You should explicitly select one to install.

E: Package 'google-chrome' has no installation candidate

böyle indirme hatalarından farklı bir çıkış koduna sahip olmak

Err http://dl.google.com/linux/chrome/deb/ stable/main google-chrome-stable amd64 29.0.1547.76-r223446
  Something wicked happened resolving 'dl.google.com:http' (-11 - System error)

Şu anda, her iki hata da 100

Temel olarak, indirme hatalarının ilk gibi hatalardan farklı bir kodla çıkmasını istiyorum. Mümkünse, her bir hatanın farklı bir çıkış koduna sahip olmasını istiyorum, ancak yukarıdaki örnek ihtiyacım olan minimumdur. Bunu ek yazılım olmadan bir vanilya Ubuntu kurulumunda nasıl yapabilirim (hariç aptitude)?


1
Apt-get komutunu çıktıyı ayrıştıran bir komut dosyasında sarabilirsiniz. Yoksa "ek yazılım" olarak mı sayılır? Ayrıca, indirme hatalarını tespit etmek için apt-get --download-onlyönce yapmayı düşünün .
Jos

Ah, bu mantıklı. Belki de önce X paketinin varlığını doğrulayabilirsiniz apt-cache policy X?
Jos

Yine, çıktıyı grep gerekir. Yapmanın apt-cache policy google-chromesana "Aday" kelimesiyle bir çizgi vermediğini varsayıyorum apt-cache policy google-chrome-stable.
Jos

TAMAM. Bu tartışmayı sohbete taşıyorum ve bu öneriyi (kısmi) cevap olarak giriyorum.
Jos

Yanıtlar:


1

Tam bir cevap değil, ama önce apt-cache policy X"Aday (yok)" veya "X paketi bulunamadı" vb.


Şimdilik oylandı, ama dediğin gibi, kısmi. Şimdi yanıtta yer alan tüm yorumlarınızı silmekten çekinmeyin. Yardımınız için teşekkürler
kiri

16

Bunun bir XY vakası olmadığına inanıyorum ve genel olarak konuşarak apt-get hata ayıklamak istiyorsunuz. Bu varsayımlar altında cevabım burada.

Gönderen man apt.conf:

HATA AYIKLAMA SEÇENEKLERİ

Debug :: bölümündeki seçeneklerin etkinleştirilmesi, hata ayıklama bilgilerinin apt kitaplıklarını kullanarak programın standart hata akışına gönderilmesine veya öncelikle apt davranışında hata ayıklamak için yararlı olan özel program modlarının etkinleştirilmesine neden olur.

Bu nedenle, kuralları yalnızca aşağıdaki hata ayıklama davranışlarının her biri için etkinleştirmeniz gerekir apt-get:

  • Debug :: pkgProblemResolver : dağıtım , yükseltme, yükleme, kaldırma, temizleme, alınan kararlar hakkında çıktı sağlar.
  • Debug :: NoLocking : tüm dosya kilitlemeyi devre dışı bırakır. Bu, bazı işlemleri (örneğin, apt-get -s install) kök olmayan bir kullanıcı olarak çalıştırmak için kullanılabilir.
  • Debug :: pkgDPkgPM : apt her dpkg (1) 'i her çağırdığında gerçek komut satırını yazdırır.

Bu 3, man sayfasının ilk önerdiği ve birincisi, gösterdiğiniz ilk hatayı ayıklamanıza yardımcı olacaktır. İkincisi için ihtiyacınız olabilir:

  • Debug :: Acquire :: http : HTTP kullanarak paket indirmeyle ilgili bilgileri yazdırın. Orada da https, ftp, cdrom.

Man sayfasında çok daha fazlası var, bunları kullanarak kolayca listeleyebilirsiniz man apt.conf | grep -A5 -i debug.

Bütün bunlar doğru sözdizimi kullanılarak yazılmalıdır ve boole değerlerini kabul ederler:

Debug::*::*  "true";

veya birden çok satır kullanmak istiyorsanız:

Debug {
  Acquire {
    http "true";
    ftp "true";
  };
  NoLocking "true";
};

Yalnızca apt-get örneği için çalıştırmak istiyorsanız -o/ --optionswitch komutunu kullanabilirsiniz :

sudo apt-get -o Debug::pkgProblemResolver=true -o Debug::Acquire::http=true -f install 

Başka bir yöntem, kişiselleştirilmiş yapılandırma dosyanızı oluşturmak ve -c/ --config-fileswitch ile yüklemektir :

sudo apt-get -c debug-apt.conf install hello

Çıkış kodlarını değiştirme hakkında, kaynak kodunu değiştirmedikçe yapamayacağınıza inanıyorum. apt-getson teknoloji bir yazılım parçasıdır, çünkü çıkış kodlarına güvenmeksizin işlemde hata ayıklamak için gelişmiş yöntemlere sahiptir.


Aslında bu komutları katılımsız çalıştırabilirsiniz bir komut dosyası koymak için çalışıyorum. İlk hatanın oluşup oluşmadığını bulmak için bunu bir bash betiğinde nasıl kullanırım?
kiri

Bunu apt-gether zaman değil, yalnızca belirli bir örneği için yapmak istiyorum .
kiri

@ minerz029 -oad-hoc komutlarını çalıştırma seçeneğini kullanabilirsiniz . Cevabım güncellendi.
Braiam

İlk yorum hakkında, çıktıyı ayrıştırırken akıllıca bir şeyler yapmalısınız. Bunu nasıl yapabileceğinize dair hiçbir fikrim yok.
Braiam

Jos'un dediği gibi, aslında çıkışını selamlamakla işe başladım apt-cache policy PACKAGE. Bir paketin yüklenebilir olup olmadığını kontrol etmeye çalışıyordum, sorumu doğru sormamış olabilirim ama bu iyi bir cevap
kiri
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.