Anda dapat menginstal paket tanpa memperbarui paket lain atau gagal ...?

10

Apakah ada cara untuk mengatakan yummenginstal paket, memilih versi paket yang akan dipenuhi oleh dependensi yang diinstal saat ini?

Misalnya, jika saya menginstal paket Pecl dan saat ini saya telah menginstal php-5.4.11tetapi yang lebih baru php-5.4.14tersedia. Daripada menginstal paket baru (dan memperbarui semua paket php ke 5.4.14) Saya hanya ingin memilih versi yang lebih lama dari paket yang saya minta untuk diinstal tanpa memperbarui semua yang lain (atau gagal jika ini tidak dapat dilakukan).

Ini adalah kasus khusus di mana saya tahu saya dapat mengecualikan atau memperbaiki paket php tapi saya sedang mencari opsi umum yang akan berlaku untuk instalasi apa pun.

Sesuatu seperti:

yum install php-pecl-xxxx --no-updates
Clint Priest
sumber

Jawaban:

10

Solusi sementara:

Gunakan -Cbendera:

sudo yum install foobar -C

Solusi permanen:

Gunakan metadata_expirebendera di yum.conf Anda untuk mengontrol ini.

Edit /etc/yum.confdan atur

metadata_expire=15d

Anda dapat menggunakan d, h atau m untuk mengonfigurasi waktu dalam hari, jam, atau menit .

Bonus: inilah dokumentasinya:

metadata_expire adalah Waktu (dalam detik) setelah itu metadata akan kedaluwarsa. Sehingga jika metadata saat ini diunduh kurang dari sekian detik ini maka yum tidak akan memperbarui metadata terhadap repositori. Jika Anda mendapati bahwa yum tidak mengunduh informasi tentang pembaruan sesering mungkin Anda ingin menurunkan nilai opsi ini. Anda juga dapat mengubah dari default menggunakan detik menjadi menggunakan hari, jam atau menit dengan menambahkan iklan, h atau m masing-masing. Standarnya adalah 6 jam, untuk memuji yum-pembaruand berjalan satu jam sekali. Dimungkinkan juga untuk menggunakan kata "tidak pernah", yang berarti bahwa metadata tidak akan pernah kedaluwarsa. Perhatikan bahwa saat menggunakan file metalink, metalink harus selalu lebih baru daripada metadata untuk repositori, karena validasi, jadi batas waktu ini juga berlaku untuk file metalink. Perhatikan juga bahwa "tidak pernah" tidak menggantikan "yum clean expire-cache"

Shubham Chaudhary
sumber
0

Belum menemukan opsi seperti sekarang. Namun jika Anda ingin menginstal paket tanpa memutakhirkan, saya akan merekomendasikan mengunduh satu rpm dari versi yang sama dan kemudian menginstalnya.

Aazim Parkar
sumber
0

Dalam yum-utilspaket tersebut ada alat yang disebut yumdownloader. Anda dapat menggunakannya untuk mengunduh dari repo tanpa menginstal. Semua switch standar suka --disablerepoberlaku. Lihat halaman manual untuk lebih detail.

Saya pikir Anda dapat mengunduh RPM dan kemudian melakukan apa yang Anda inginkan menggunakan RPM secara langsung.

slm
sumber
1
Ini adalah bagian dari sistem instalasi paket otomatis, masalahnya adalah kita tidak ingin Anda menginstal 'terbaru' dan 'memperbarui semua yang diperlukan'. Kami benar-benar hanya ingin menginstal versi paket yang kompatibel dengan apa yang sudah diinstal. Pada dasarnya hanya instal atau instal opsi xxx -tidak ada pembaruan.
Clint Priest
0

Jika versi yang lebih lama dari paket masih dalam repositori yum Anda, maka Anda bisa menjalankannya yum install packagename-version-release.archdan itu akan menginstal versi yang lebih lama tanpa mencoba meningkatkan ke rilis terbaru. Anda harus menggunakan nama lengkap, versi, rilis dan lengkung jika ada beberapa versi dan arsitektur di yum repo Anda. Anda dapat memperoleh semua informasi itu dengan menjalankan yum list available 'packagename*'untuk mencari semua paket yang dimulai dengan 'nama paket'. Jika Anda telah berhasil memutakhirkan paket Anda dan ingin menurunkan versi ke versi yang lebih lama, Anda dapat menjalankannya yum downgrade packagename1 packagename2. Anda harus memasukkan daftar semua paket yang ingin Anda turunkan, karena ini mungkin melibatkan banyak dependensi.

Jika rilis yang lebih lama tidak ada dalam repositori yum Anda, maka unduh saja dari mana pun Anda menemukan paket lama dan instal dengannya yum install /path/to/package.rpm, meskipun saya akan berhati-hati agar tidak menginstal paket dari sumber yang tidak terpercaya.

jsbillings
sumber
Tetapi akan jauh lebih berguna jika yumhanya dapat memilih versi kompatibel terbaru yang tersedia.
forcefsck
Itu bisa, tetapi tergantung pada pembuat paket untuk menentukan persyaratan yang sesuai.
jsbillings
Kadang-kadang persyaratan dicakup dengan paket yang lebih lama, tetapi yum bersikeras memilih hanya yang terbaru. Misalnya. dalam kasus yang dijelaskan di atas, mungkin saja bagi yum untuk secara otomatis memilih php-pecl-5.4.11 jika sistem terkunci versi ke php-5.4.11. Ini bisa menjadi masalah untuk otomatisasi.
forcefsck
Yum hanya akan memperbarui ke versi terbaru jika tidak ada ketergantungan pada versi lama. Dalam kasus di atas, persyaratan versi tidak pernah diminta oleh paket pecl. Yum tidak dapat membaca pikiran Anda dan memilih versi yang sewenang-wenang kecuali Anda menunjukkan versi apa yang dibutuhkan atau dengan membuka versi paket-paket pecl dan php.
jsbillings
Untuk contoh ini secara khusus, asalkan php tidak dapat di-upgrade (baik versi-terkunci atau tidak ada paket yang lebih baru tersedia di repo), yum dapat memilih versi terbaru dari pecl yang tidak akan memerlukan upgrade php. Ini bukan membaca pikiran, saya percaya apt-get sudah melakukan ini. Sekali lagi, ini adalah masalah untuk otomatisasi ketika Anda perlu menginstal paket tambahan tanpa memutakhirkan setengah sistem Anda dan Anda perlu yum cukup pintar untuk menangani permintaan, yaitu, jika ada beberapa versi, pilih yang terbaru kompatibel dengan paket yang sudah diinstal bahwa untuk alasan apa pun tidak dapat ditingkatkan.
forcefsck