Pertanyaan Menginstal versi tertentu saat repo memiliki versi yang lebih baru?


Mari kita memiliki metapackage yang tergantung pada paket-paket berikut

Depends: A (=2),
 B (=2),
 C (=2)

Perhatikan '=' - Saya ingin menginstal versi khusus ini, bukan yang terbaru.

Selain itu:

B tergantung pada SEBUAH(> = 1)

C tergantung pada B(> = 1) dan SEBUAH(> = 1)

Jika versi terbaru A, B, C dalam repositori adalah 2 maka ini berfungsi.

Karena saya telah menempatkan versi 3 A dan versi 3 B di repo sudo apt-get install, meta-paket saya menolak untuk menyelesaikan dengan info berikut:

The following packages have unmet dependencies:
  my-meta-package: Depends: B (= 2) but 3 is to be installed
                   Depends: A (= 2) but 3 is to be installed

Jika saya secara manual menginstal versi 2 dari A dan B kemudian menginstal metapackage dengan benar, yang sangat menunjukkan bahwa tidak ada ketergantungan tersembunyi pada A3 atau B3. Ini bukan solusi untuk masalah karena metapackage diinstal secara otomatis pada banyak mesin.

PERTANYAAN: Apa yang harus dilakukan untuk membuat sudo apt-get install my-meta-package install versi 2,2,2?

Selain itu, apakah ada cara saya bisa mendapatkan info tambahan apa yang sebenarnya menciptakan kebutuhan untuk versi 3 dari A dan versi 3 dari B?


10
2018-06-21 09:33


asal


Oh, saya belum membaca seluruh pertanyaan sebelum menjawab. Bisakah Anda hanya mengemas ulang metapackage? - int_ua
@int_ua Saya tidak mengerti apa yang akan mengemas ulang metapackage. - tymtam
Pinasi apt? askubuntu.com/questions/103320/… - belacqua
@belacqua - aku bersamamu, tapi kita perlu jawaban yang solid yang mencakup apa yang terjadi ketika ada pengembalian dan ketergantungan yang rusak, dll. - RobotHumans
Apakah file kontrol metapackage Anda menyertakan versi eksplisit tidak tergantung paket, seperti (a=2), (b=2)? - Anwar


Jawaban:


Anda harus memilih versi tertentu untuk menginstal, dan menginstalnya semua pada saat yang sama ketika Anda menginstal meta-paket.

sudo apt-get install meta-package package1=2 package2=2 package3=2

Seperti jawaban int_ua mengatakan, Anda dapat menemukan dependensi terbalik dengan ini:

apt-cache rdepends package

Jika Anda ingin mengetahui informasi lebih lanjut tentang salah satu paket tersebut (tersedia versi, dependensi, dan banyak lagi), Gunakan ini:

apt-cache show package

Setelah Anda selesai menginstalnya, dan ingin menyimpannya di versi tersebut saat melakukan peningkatan sistem, Anda harus menggunakannya apt-pinning seperti yang disarankan oleh belacqua.

Pemasangan APT

Fitur pemberian pin APT memungkinkan administrator memaksa APT untuk memilih   versi paket tertentu yang mungkin tersedia dalam berbagai   versi dari repositori yang berbeda. Ini memungkinkan administrator untuk   memastikan bahwa paket tidak ditingkatkan ke versi yang mungkin bertentangan   dengan paket lain pada sistem, atau yang belum mencukupi   diuji untuk perubahan yang tidak diinginkan. Untuk melakukan ini, pin di APT   file preferensi (/ etc / apt / preferences) harus diubah.


8
2017-08-09 19:06



Saya percaya ini adalah jawaban yang benar, meletakkan = dan kemudian nama paket dengan versi - LnxSlck
Saya adalah kolega Tymek dan ini benar-benar memecahkan masalah. Sayang sekali kita harus merekayasa ulang metapackage untuk mewujudkannya. Beberapa Python kreatif dalam pesanan. Terima kasih banyak atas jawabannya. - Igor Zevaka


Anda dapat mencoba menginstal dependensi terlebih dahulu dengan

sudo apt-get install package=2 di mana 2 adalah versinya

Anda dapat mengetahui paket apa yang tergantung pada paket dengan

apt-cache rdepends package


1
2018-06-21 10:16



rdepends tidak memberikan info detail tentang versi, bukan? - tymtam
Menginstal dependensi pertama akan menentang memiliki metapackage. Ini adalah solusi, tetapi bukan yang saya cari. - tymtam
Perhatikan bahwa untuk ini untuk bekerja repositori harus memiliki versi yang tersedia dari versi yang Anda tentukan, jika mereka tidak akan salah. - Thomas Ward♦