Saya berlari sudo pacman -Syu
dan saya mendapatkan beberapa kesalahan menarik:
kesalahan: gagal melakukan transaksi (file yang bertentangan)
dan daftar panjang file yang diikuti oleh exists in filesystem
. Output lengkapnya ada di sini: http://ix.io/lLw
Tampaknya banyak dari file-file ini tidak terkait dengan paket ketika saya memeriksanya pacman -Qo <path-to-file>
, tetapi saya tidak memeriksa semuanya. Saya memiliki koneksi yang lemah ketika saya berlari pacman -Syu
, tetapi saya mendapatkan kesalahan yang sama ketika saya memperbarui nanti: http://ix.io/lLx
Apa yang harus saya lakukan? Haruskah saya memeriksa semua file dan menghapus yang tidak memiliki paket terkait? Haruskah saya memaksakan pembaruan (dengan sudo pacman -S --force <package-name>
?)
Memperbarui
Saya mencoba berlari sudo pacman -S --force <package-name>
dan mendapatkan ini:
[my-pc]/home/average-joe$ pacman -Qo /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info
error: No package owns /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info
Sepertinya pacman -S --force <package
tidak menimpa direktori yang berisi file. Dari pria itu:
Menggunakan --force tidak akan memungkinkan menimpa direktori dengan file atau menginstal paket dengan file dan direktori yang saling bertentangan.
Haruskah saya menghapus direktori yang bertentangan? (mereka tidak memiliki paket terkait)
sumber
/usr/local/
bukan/usr/
)sudo pip install -U docker-compose==1.5.0rc3
pada halaman ini . Mungkinsudo pip install
konflik dengan pacman?-S
pembaruan yang salah (pemasangan parsial, dll) akan membuat Anda skenario itu. Kasus saya--force
bekerja sepanjang waktu.Jawaban:
Ok, sepertinya menjalankan
sudo pacman -S --force <package-name>
karya, tetapi tidak menyelesaikan direktori yang bertentangan. Dalam kasus seperti itu, berjalansudo rm -rf
di direktori yang bertentangan, diikuti olehsudo pacman -S --force <package-name>
karya.Sekarang
pacman -Syu
ketetapan hati saya membaik.sumber
sudo pacman -Syu --force
bekerja untuk saya, tetapi menimpa tidak dikenali.tl; dr: Hapus instalan aplikasi yang bertentangan sebelum dijalankan
pacman
.pacman
(dan manajer paket lainnya) menyimpan indeks paket dan file yang mereka kelola (pacman --query --list
). Beberapa file, seperti konfigurasi, akan ditandai sebagai dapat dimodifikasi dan tidak akan ditimpa selama pemutakhiran (kecuali dalam keadaan khusus, di mana manajer paket biasanya akan memindahkan file lama sebelum membuat yang baru). File lain akan ditandai sebagai tidak dapat dimodifikasi. Jika aplikasi lain mengubah file-file tersebut dengan cara apa pun tanpa memperbarui indeks sesuai dengan itu, tidak ada cara bagi manajer paket untuk mengetahui apa yang harus dilakukan dengan file-file tersebut selama upgrade.Banyak aplikasi yang diinstal menggunakan
./configure && make && sudo make install
pola standar dapat dihapus menggunakansudo make uninstall
. Jika Anda telah menginstal aplikasi dengan cara lain, Anda mungkin harus melakukan sesuatu untuk menghapusnya. Secara umum itu bisa menjadi ide yang baik untuk menyimpan salinan file instalasi di suatu tempat (misalnya~/install
) untuk dapat menghapusnya dengan andal dalam kasus seperti itu. Hanya menghapus file yang bertentangan mungkin akan meninggalkan file lain di sekitar, yang dapat menyebabkan masalah lain.Ketika menginstal perangkat lunak dengan manajer paket lain ada cara untuk mengisolasi mereka dari file sistem. Ini adalah praktik terbaik yang mapan misalnya selama pengembangan perangkat lunak, di mana Anda benar-benar ingin menjaga versi konsisten dan menghindari konflik dengan perangkat lunak lain. Contohnya termasuk:
sumber
sudo pip install
perintah. Mungkin saya harus menghindari menggunakan pip dengan sudo?Saya menginstal paket yang biasanya saya instal dengan pip via pacman karena ini. Tetapi beberapa paket tidak ditemukan di pacman repos. Saya pikir kita harus menghindari menginstal pip dengan hak akses sudo dan istead:
--Pengguna flag membuat paket instalasi pip di direktori home Anda, yang tidak memerlukan hak khusus. https://stackoverflow.com/questions/42988977/what-is-the-purpose-pip-install-user
sumber
TLDR;
sudo pacman -Syu
lagi.diedit untuk menambahkan TLDR dan memperbaiki kesalahan ketik
Walaupun saya cukup yakin saya tidak melakukan hal bodoh, saya pernah mengalami masalah ini mungkin setiap kali saya mencoba memperbarui sejak saya menggunakan Manjaro; tiga atau empat kali dalam dua bulan. Intinya, ini memperbaikinya.
Dapatkan daftar file Anda.
Ketika pembaruan gagal di jendela terminal Anda, Anda mendapatkan ini:
... dan banyak lagi.
Salin output dari terminal, dan masukkan ke dalam file. Saya menggunakan nano , dan menamai saya "file," seperti di ~ / work / files .
Hapus info asing:
cat files | awk '{print $2}' >> ~/work/files2
Ini mengambil "kata" kedua dari setiap baris dan mencetaknya ke file2.
Menangani file
Anda dapat menghapusnya, memindahkannya, atau mengganti namanya.
Jika ada yang rusak, cara termudah untuk memperbaikinya adalah dengan memindahkannya alih-alih menghapus atau mengganti nama:
mkdir ~/work/oldfiles while read -r file; do sudo mv -- "$file" ~/work/oldfiles/$file; done < files2
Jika Anda benar-benar ingin menghapusnya, yang tidak ada alasan untuk melakukannya ( BERBAHAYA BAHAYA ): saat membaca file -r; do sudo rm - "$ file"; selesai <files2
Memperbarui
Agar --overwrite berfungsi, yang perlu kita lakukan agar pacman menyadari bahwa paket tersebut tidak rusak, Anda memerlukan sintaks berikut:
sudo pacman -S package_name --overwrite /location/of/thing
sudo pacman -S libidn2 --overwrite /usr/lib/libidn2.so.0
sudo pacman -S libx000 --overwrite /usr/lib/libx000.so.f.u.loser
Saya punya masalah lucu di mana jika saya menghapus symlink libidn2.so.0, tidak ada yang berhasil, dan ketika saya memasangnya kembali, saya mendapatkan kesalahan "exist on filesystem". Di atas, dengan --overwrite, adalah semua yang berhasil untuk saya.
Akhirnya:
sudo pacman -Syu
sumber
Setelah pacman akhirnya
--force
opsi usang dan untuk membuat--overwrite
opsi pengganti bekerja seperti yang diharapkan, pola penggunaan ikuti harus dicatat.Perintah yang setara untuk mereproduksi
--force
opsi yang secara buta menimpa apa pun yang akan menjadi konflik:Atau
Bagian yang sulit adalah melarikan diri dari gumpalan untuk menghindari shell mengembangkannya terlebih dahulu.
sumber
Jika Anda memiliki banyak file seperti saya,
menyelesaikan semua masalah.
sumber