Ketika saya menginstal sebuah program sederhana, program ini sering digunakan make && make install
dan bahkan seringkali tidak memiliki target uninstall .
Jika saya ingin memutakhirkan suatu program, apakah itu protokol standar untuk menganggapnya hanya menulis ulang dengan mulus di atas program lama?
Bagaimana cara melacak program-program ini; apakah kebanyakan orang hanya 'memecat dan melupakan' dan jika tidak ada target penghapusan yang diberikan, apakah saya harus menghapus semuanya secara manual?
Jawaban:
Instal setiap program dalam pohon direktori khusus, dan gunakan Stow atau XStow untuk membuat semua program muncul dalam hierarki umum. Stow membuat tautan simbolis dari direktori khusus program ke pohon umum.
Secara lebih rinci, pilih direktori tingkat atas, misalnya
/usr/local/stow
. Instal setiap program di bawah/usr/local/stow/PROGRAM_NAME
. Sebagai contoh, atur agar executable-nya dapat diinstal/usr/local/stow/PROGRAM_NAME/bin
, halaman manualnya/usr/local/stow/man/man1
dan sebagainya. Jika program menggunakan autoconf, maka jalankan./configure --prefix /usr/local/stow/PROGRAM_NAME
. Setelah Anda menjalankanmake install
, jalankanstow
:Dan sekarang Anda akan memiliki tautan simbolis seperti ini:
Anda dapat dengan mudah melacak program apa yang telah Anda instal dengan mendaftar isi
stow
direktori, dan Anda selalu tahu program apa yang dimiliki file karena itu adalah tautan simbolis ke lokasi di bawah direktori program itu. Hapus instalasi program dengan menjalankanstow -D PROGRAM_NAME
lalu menghapus direktori program. Anda dapat membuat program sementara tidak tersedia dengan menjalankanstow -D PROGRAM_NAME
(jalankanstow PROGRAM_NAME
untuk membuatnya tersedia lagi).Jika Anda ingin dapat dengan cepat beralih di antara berbagai versi program yang sama, gunakan
/usr/local/stow/PROGRAM_NAME-VERSION
sebagai direktori program. Untuk memutakhirkan dari versi 3 ke versi 4, instal versi 4, lalu jalankanstow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.Stow versi lama tidak terlalu jauh melampaui dasar-dasar yang saya jelaskan dalam jawaban ini. Versi yang lebih baru, serta XStow (yang belum dipelihara akhir-akhir ini) memiliki fitur yang lebih canggih, seperti kemampuan untuk mengabaikan file tertentu, lebih baik mengatasi symlink yang ada di luar direktori penyimpanan (seperti
man -> share/man
), menangani beberapa konflik secara otomatis (ketika dua program menyediakan file yang sama), dll.Jika Anda tidak memiliki atau tidak ingin menggunakan akses root, Anda dapat memilih direktori di bawah direktori home Anda, mis
~/software/stow
. Dalam hal ini, tambahkan~/software/bin
kePATH
. Jikaman
tidak secara otomatis menemukan halaman manual, tambahkan~/software/man
ke halaman AndaMANPATH
. Tambahkan~/software/info
ke AndaINFOPATH
,~/software/lib/python
ke AndaPYTHONPATH
, dan seterusnya sebagaimana berlaku.sumber
Anda dapat menggunakan checkinstall untuk membuat paket (paket yang kompatibel dengan RPM, Deb, atau Slackware) Dengan begitu, Anda dapat menggunakan manajer paket distro Anda untuk menambah / menghapus aplikasi (tetapi tidak memperbarui)
Anda menggunakan
checkinstall
menggantikanmake install
perintah (menggunakan parameter -D untuk Deb; -R adalah RPM dan -S adalah Slackware):checkinstall akan membangun dan menginstal paket secara default, atau Anda dapat membuatnya hanya membangun paket tanpa menginstal.
checkinstall tersedia di sebagian besar repositori distro.
sumber
checkinstall
tampaknya tidak dipelihara secara aktif (?) :-(Sebagian besar ini adalah alasan di balik paket, pelabuhan, dan jenis manajer lainnya untuk mencegah hal semacam ini terjadi.
Saya akan mengatakan bahwa penghapusan manual adalah satu-satunya cara untuk menginstal manual, kecuali jika orang lain memiliki jawaban yang lebih baik untuk titik itu saya mungkin tidak menyadarinya.
sumber
Satu lagi alternatif adalah dari petunjuk Dari Dari Awal Linux :
Lebih Banyak Kontrol dan Manajemen Paket menggunakan Pengguna Paket
Setelah saran kasar pertama ini, saya menemukan varian berevolusi:
crablfs - Sistem Manajemen Paket Berbasis Pengguna
Ini
crablfs
adalah spesimen terbaru dari manajemen paket menggunakan unik dan gids untuk manajemen paket, tetapi pada sourceforge itu berkembang lagi dalam ulfs:uLFS: Linux Anda yang Dapat Dikelola dan Dapat Digunakan Dari Awal
Untuk pengguna kausal dari paket yang diinstal saya pikir solusi LFS "pengguna paket" adalah solusi yang ringan, tidak terlalu invasif dan elegan. Singkatnya, Anda menginstal paket di
/usr/local
atau/home/user/local
dan melacak file menggunakan uids dan gids unik untuk setiap paket tetapi meletakkan semua file di tempat-tempat tradisional, direktori umum/usr/local/bin
,/usr/local/lib
seperti di semua distribusi Linux utama ... penyumbatan file dan penimpaan atau penghapusan file yang tidak diinginkan atau menghapus file yang tidak diinginkan dihindari oleh trik Linux yang rapi dijelaskan oleh Matthias S. Benkmann di more_control_and_pkg_man.txt yang hanya memerlukan manipulasi izin file dan direktori normal, misalnya izin bit lengket untuk direktori untuk menghindari overwrite file yang tidak diinginkan:Bagi saya sepertinya solusi yang sederhana dan pintar! Saya menggunakan skema ini di build LFS saya dan ini adalah solusi yang berfungsi ...
sumber
tar
file dari instal masuk/usr/src/non-rpms
untuk mengingatkan Anda (itulah yang biasanya saya lakukan).sumber