Prosedur optimal untuk memutakhirkan Gentoo Linux?

23

Ini adalah cara saya meningkatkan Gentoo sejak lama. Apakah ini metode yang disarankan ? Adakah gotcha atau metode yang lebih baik untuk digunakan?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all
cowgod
sumber
6
Saya menambahkan bendera -N ke emerge secara pribadi
Tom Ritter
2
--tree (-t) juga berguna untuk memahami apa yang terjadi
lkraav

Jawaban:

5

Sepertinya Anda sudah membahasnya. Satu-satunya tip lainnya adalah mungkin mengambilnya sedikit lebih lambat daripada pembaruan grosir buta. Anda selalu dapat memperbarui paket atau rantai ketergantungan secara individual dengan emerge -DNuav <atom>alih - alih world(gunakan --oneshot untuk hal-hal yang tidak ingin Anda tambahkan ke file dunia, seperti lib sistem misalnya).

Perhatikan bahwa selalu lebih mudah dilakukan jika Anda tetap mendapatkan informasi terbaru secara teratur daripada melakukan pembaruan batch monolitik setiap beberapa bulan. Selain itu, untuk menghindari terlalu banyak kejutan, Anda mungkin perlu berlangganan salah satu milis seperti gentoo-user(PERINGATAN: ~ 100 surat sehari dalam daftar ini) karena hampir semua masalah pembaruan utama cenderung muncul dalam daftar dengan banyak diskusi yang menjelaskan bagaimana menyelesaikannya.

Saya kira pembaruan "masalah" besar berikutnya adalah migrasi ke openrc setelah berjalan stabil (dilakukan pada pertengahan tahun lalu dengan hanya beberapa masalah, terutama dengan perubahan jaringan).

Ophidian
sumber
2
Yap, pasti memberi +1 untuk menjaga informasi terbaru dari pada dalam potongan besar. Ada perubahan sesekali yang baru saja banyak istirahat. github.com/lkraav/gentoo-cron-weekly adalah perangkat pelaporan mingguan sederhana saya.
lkraav
8

Saya telah menggunakan dekat dengan langkah yang sama yang Anda lakukan, kecuali untuk:

  • eix-syncbukannya emerge --synckarena saya suka melihat perubahan pada pohon portage. Ini sangat bagus untuk memperhatikan paket yang mungkin ingin saya instal yang baru ke pohon.

  • layman -S (sesekali) sebelum muncul utama untuk menyinkronkan setiap perubahan dalam overlay.

  • eclean-dist -dsetelah revdep-rebuildmembersihkan tarbal usang. Saya melakukan ini setelah setiap emerge, karena paket downgrads tidak umum.

  • eix-test-obsoletesebagai langkah terakhir untuk membantu menjaga file / etc / portage saya tetap rapi dan mutakhir. Ini juga membuat saya tahu ketika saya telah menginstal paket-paket yang telah dihapus sepenuhnya dari portage jadi saya harus mengambil ebuild dari repositori. Contoh terbaru, saya harus menutup semua versi iproute2> 2.6.22.20070710 karena kernel yang lebih lama berjalan pada Xen VPS saya tetapi baru-baru ini dihapus dari portage.

eix-syncdan eix-test-obsoleteberada di app-portage / eix.

eclean-dist ada di app-portage / gentoolkit.

Van Gale
sumber
+1 untuk eix-sync
Tim
5
  1. emerge --syncatau eix-syncatau emerge-delta-webrsyncdaneix-update
  2. emerge -av portage
  3. eclean-dist

Periksa bahwa salah satu header-linux, glibc, binutils, libtool atau gcc memiliki pembaruan magor (mis. Pembaruan gcc dari 4,6 menjadi 4,8). Jika tidak, lanjutkan ke langkah 11.

Pembangunan kembali penuh:

  1. rm -rf PKGDIR/* Ganti PKGDIR dengan jalur Anda ke paket dir!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Beralih ke gcc baru
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Jika Anda memiliki masalah pada langkah 10 atau 11 maka perbaiki dan coba lagi

Perbarui dunia:

  1. Bersihkan file dunia Anda /var/lib/portage/worlddari paket yang tidak perlu dan periksa /etc/portageentitas
  2. fixpackages
  3. emerge -avuDN world
  4. eselect python update
  5. python-updater -- -av
  6. perl-cleaner --all -- -av
  7. emerge -a --depclean
  8. revdep-rebuild -i -- -av

Jika Anda memiliki masalah dalam langkah 14-18, perbaiki dan ulangi semua langkah dari langkah 13

  1. etc-update atau dispatch-conf
  2. glsa-check -vp affected Anda dapat memiliki paket yang terkena dampak dalam slot setelah pembaruan
  3. emaint --check all
pengguna261123
sumber
3

Jika tujuan Anda adalah mendapatkan yang terbaru dari semua paket, maka ya, itu sepertinya mencakup semua basis. Saya terkejut ini telah bekerja untuk Anda untuk waktu yang lama, karena saya membayangkan Anda akan sering digigit oleh blok, deps rusak, dll. Dalam beberapa tahun terakhir saya menjadi jauh lebih berhati-hati tentang pembaruan grosir, memilih untuk melakukannya sedikit demi sedikit setelah melihat pohon pembaruan. Pengembangan Gentoo tampaknya telah melewati masa jayanya. Mungkin karena kebangkitan Ubuntu.

Bagaimanapun, satu hal tambahan yang mungkin Anda coba, hanya untuk benar-benar rewel tentang seluruh proses, adalah membersihkan distfiles Anda. Ada skrip di luar sana jika Anda mencari.

Adam D'Amico
sumber
1
Jika Anda tetap menggunakan ebuild yang belum dibuka, Gentoo menjadi sangat stabil menurut pendapat saya dan tidak semua benar-benar rusak dengan melakukan sinkronisasi dan emerge world. Anda perlu tahu apa yang Anda lakukan tetapi hal yang sama dapat dikatakan untuk apt atau yum. Saya sudah digigit oleh mereka berdua.
John Downey
1
Tiga penyumbatan / kerusakan terbaru yang dapat saya pikirkan adalah libcomerr / e2fsprogs, firefox2 / 3, dan xorg 1.3 / 1.5. Dalam semua kasus itu diperlukan pemijatan non-sepele untuk membuat pembaruan grosir berfungsi, dan tidak ada ~ kata kunci yang terlibat.
Adam D'Amico
2
Versi terbaru portage - katakanlah dalam 6 bulan terakhir - secara otomatis menyelesaikan hampir semua blok dan kerusakan. Termasuk libcomerr / e2fsprogs.
Dan Carley
3
glsa-check -t all
glsa-check -f all

Itulah yang harus Anda jalankan terlebih dahulu. Tidak perlu jika Anda memutakhirkan semua paket.

Oh dan saya lebih suka cfg-update;)

laurentb
sumber
1

Inilah yang saya lakukan:

emerge --sync         //Synchronize the package manager with the latest 
                      //version of each package.


emerge -aDvNu system  //updates the system, but only important if you want the
                      //latest stable version of the actual compiler and libraries
                      //with the core system.

emerge -uDNav world   //world means everything we've asked to be emerged before
                      //this does not include things that came pre installed.
                      //N means if you change your use directives in 
                      //your make.conf file to pull in the new packages.

emerge -av depclean   //removes libraries or programs that don't have any other 
                      //dependencies because of an update.


revdep-rebuild        //means if something is broken by an update, it 
                      //recompiles it.  Fixes dynamic and static linking problems.

Jika Anda tidak sepenuhnya memahami komentar, baca ini karena ini adalah otoritas tentang cara memperbarui paket gentoo Anda.

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1

Eric Leschinski
sumber
0

Proses Anda benar meskipun menjalankan setiap perintah mungkin tidak perlu biasanya saya hanya melakukan sinkronisasi dan pembaruan dunia. Emerge akan memberi tahu Anda biasanya jika Anda perlu menjalankan skrip untuk membangun kembali file seperti saat upgrade Python utama dan juga akan memberi tahu Anda kapan harus menggabungkan perubahan konfigurasi. Karena Gentoo sebenarnya tidak memiliki jalur peningkatan dari versi ke versi. Saat Anda emerge dunia, Anda memiliki versi terbaru.

John Downey
sumber
0

Untuk waktu yang lama sekarang saya selalu menggunakan prosedur ini:

emerge -f --update --newuse --deep world && emerge --update --newuse --deep world

Saya, bagi saya, lebih suka memperbarui di malam hari. Tetapi kadang-kadang terjadi sesuatu yang gagal sehingga Anda harus mengunduh semua (atau beberapa) program lagi.

Mungkin --newuse switch tidak diperlukan, tapi saya sering mengedit make.conf saya jadi masuk akal bagi saya.

hajowieland
sumber
Anda dapat menggunakan "--menginstal ulang ubah penggunaan" alih-alih "--newuse", ini menginstal ulang paket dengan menggunakan flag yang telah Anda ubah secara eksplisit. Alih-alih usang, ditambahkan menggunakan bendera dll. Anda harus tetap menjalankan "--newuse" dari waktu ke waktu.
hayalci
0

Terlihat baik-baik saja, meskipun saya tidak akan begitu cepat menjalankan depclean.

Kecuali jika Anda memiliki persyaratan seperti ruang HDD yang rendah maka Anda dapat kembali dan menjalankannya pada tujuan yang kurang teratur. Tidak ada salahnya memiliki mereka untuk waktu yang singkat. Jika Anda kurang beruntung untuk melihat beberapa paket yang rusak setelah pembaruan maka Anda akan yakin bahwa itu bukan hasil dari menghapus dependensi yang longgar.

Dan Carley
sumber
0

Itulah cara saya melakukannya di VPS saya:

langkah 0 (dari / etc / crontab)

0 0   * * *     root    emerge --sync &> /dev/null

Langkah 1:

emerge --update --deep --newuse world -av

Langkah 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
yanchenko
sumber