Ketika saya menginstal program sederhana sering menggunakan make && make install
dan bahkan tidak sering mencopot pemasangan sasaran.
Jika saya ingin memutakhirkan program, apakah protokol standar menganggapnya hanya menulis ulang dengan mulus di atas program lama?
Bagaimana cara melacak program-program ini; kebanyakan orang hanya 'api dan lupakan' dan jika tidak ada copot pemasangan target diberikan apakah saya harus menghapus semuanya secara manual?
Jawaban yang Diterima:
Instal setiap program di 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.
Lebih detail, pilih direktori tingkat atas, misalnya /usr/local/stow
. Instal setiap program di bawah /usr/local/stow/PROGRAM_NAME
. Misalnya, atur agar executable-nya dipasang di /usr/local/stow/PROGRAM_NAME/bin
, halaman manualnya di /usr/local/stow/man/man1
dan seterusnya. Jika program menggunakan autoconf, jalankan ./configure --prefix /usr/local/stow/PROGRAM_NAME
. Setelah Anda menjalankan make install
, jalankan stow
:
./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME
Dan sekarang Anda akan memiliki tautan simbolis seperti ini:
/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo
Anda dapat dengan mudah melacak program apa yang telah Anda instal dengan membuat daftar isi stow
direktori, dan Anda selalu tahu program apa yang dimiliki file karena itu adalah tautan simbolis ke lokasi di bawah direktori program itu. Copot pemasangan program dengan menjalankan stow -D PROGRAM_NAME
kemudian menghapus direktori program. Anda dapat membuat program tidak tersedia untuk sementara dengan menjalankan stow -D PROGRAM_NAME
(jalankan stow PROGRAM_NAME
untuk membuatnya tersedia lagi).
Jika Anda ingin dapat dengan cepat beralih di antara versi berbeda dari program yang sama, gunakan /usr/local/stow/PROGRAM_NAME-VERSION
sebagai direktori program. Untuk meningkatkan dari versi 3 ke versi 4, instal versi 4, lalu jalankan stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.
Versi Stow yang lebih lama tidak melampaui dasar-dasar yang telah saya jelaskan dalam jawaban ini. Versi yang lebih baru, serta XStow (yang akhir-akhir ini tidak dipertahankan) memiliki fitur yang lebih canggih, seperti kemampuan untuk mengabaikan file tertentu, lebih baik mengatasi symlink yang ada di luar direktori stow (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
ke PATH
. Anda . Jika man
tidak secara otomatis menemukan halaman manual, tambahkan ~/software/man
ke MANPATH
. Anda . Tambahkan ~/software/info
ke INFOPATH
. Anda , ~/software/lib/python
ke PYTHONPATH
. Anda , dan seterusnya jika berlaku.