apt “Kararsız CLI Arabirimi” uyarısı veriyor


63

Bu satırı yazdığım bir paketin bilgisini içeren bir dosyayı okuması gereken bir senaryo yazıyorum

apt show $PACKAGE_NAME > pack_info.txt

Ancak bu pack_info.txtdosyayı yaratmaz ve daima bu Uyarıyı verir:

UYARI: apt'nin kararlı bir CLI arayüzü yok. Kodlarda dikkatli kullanın.

Şu an için ben de yönlendirme çalıştı STDOUT& STDERRkullanarak &>ve bir dosyayı vermek için çalıştı pack_info.txtihtiyacımız.

İçerik almayı da denedim dpkgve bu da işe yaradı:

dpkg -s $PACKAGE_NAME > pack_info.txt

Ne bir uyarı, ne de hata göstermemesi iyi.

Kötü olan şey dpkg kullanmak istemediğimiz ve sadece dosyaya yönlendirmek için uygun olan STDOUT 'u kullanmak.

Yani, sormam gereken üç sorum var:

  1. Kararlı CLI Arayüzü ile tam olarak ne kastediyoruz?
  2. Kodlarda bu tür komutlar nasıl güvenli ve hatasız kullanılır? [lütfen örnekle açıklamaya özen gösterin]
  3. STDOUT apt showdosyalarının yalnızca ve yalnızca yönlendirilmesi için bir yol var mı ?

Yanıtlar:


80

aptterminali içindir ve süre güzel çıkışını verir apt-getve apt-cachekomut için geçerlidir, istikrarlı, ayrıştırılabilir çıktıyı verir. Bu apt shownedenle emrinizin komut dosyası karşılığı :

apt-cache show $PACKAGE_NAME >pack_info.txt

Şimdi sorularınızı tek tek cevaplamak için:

Kararlı CLI Arayüzü ile tam olarak ne kastediyoruz?

aptçıktısı komut dosyalarında iyi kullanılamaz. Örneğin, apt install(karşılaştırıldığında apt-get install), komut dosyaları için işe yaramaz bir ilerleme çubuğu görüntüler ve çıktı ayrıştırıldığında hatalar atabilir. apt show firefoxEk bir kayıt için bir ipucunu gösterir, ki bu da bir komut dosyasında tamamen yararsızdır, sadece orada her kayıt çıktısını almak istersiniz apt-cache show firefox. Bakalım man aptbunun hakkında ne söyleyelim:

Apt (8) komut bir son kullanıcı aracı olarak tasarlanmıştır ve sürümler arasındaki davranışını değiştirebilir. Geriye dönük uyumluluktan kopmamaya çalışsa da, bir değişimin etkileşimli kullanım için faydalı görünmesi durumunda da bu garanti edilemez.

Apt (8) 'in tüm özellikleri apt-get (8) ve apt-cache (8) gibi özel APT araçlarında mevcuttur . apt (8) sadece bazı seçeneklerin varsayılan değerini değiştirir (bkz. apt.conf (5) ve özellikle Binary kapsamı). Bu nedenle, komut dosyalarınızda bu komutları (potansiyel olarak bazı ek seçenekler etkinleştirilmiş olarak) kullanmayı tercih etmelisiniz çünkü mümkün olduğunca geriye dönük uyumluluk sağlarlar.


Kodlarda bu tür komutlar nasıl güvenli ve hatasız kullanılır?

Sadece düz yerine apt-getveya apt-cachesırasıyla kullanın apt. :) Eşdeğerler listesi için bu cevaba bakınız .


Sadece ve sadece apt show STDOUT dosyaya yönlendirmek için bir yolu var mı?

Bunu zaten doğru yaptınız: >fileya da 1>filestdout'u 2>fileyönlendirir, stderr'i &>fileyönlendirir ve her ikisine de yönlendirir file.

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.