Có cách nào để lấy danh sách tên/đường dẫn mà make install
bản sao vào hệ thống tệp không? Một số gói đi kèm với tệp MANIFEST, chứ không phải tệp mà tôi đang làm việc.Tệp nào đã tạo bản sao `make install` và ở đâu?
Trả lời
Cách chống lừa đảo nhất là sử dụng chroot: có "cài đặt" chạy bên trong nhà tù chroot; tính toán một danh sách các tập tin mà bạn đã có trước khi cài đặt, và so sánh nó với danh sách các tập tin sau khi cài đặt.
Nhiều cài đặt sẽ hỗ trợ tùy chọn cấu hình --prefix và/hoặc biến môi trường DESTDIR. Bạn có thể sử dụng chúng cho phiên bản chroot chờ đợi nhẹ hơn (tin tưởng rằng quá trình cài đặt sẽ thất bại nếu nó cố gắng ghi vào một vị trí bên ngoài các cài đặt này nếu bạn chạy cài đặt với tư cách người dùng không có đặc quyền).
Một cách tiếp cận khác là thay thế chương trình cài đặt. Nhiều gói hỗ trợ một biến môi trường INSTALL, đó là chương trình cài đặt để sử dụng; có phiên bản truy tìm cài đặt xung quanh.
Nó khác với mọi dự án bạn chạy 'cài đặt'. Các tập tin được cài đặt được điều khiển bởi mục tiêu cài đặt trong Makefile đang được sử dụng. Đặt cược của bạn tốt nhất là mở Makefile và tìm kiếm 'install:' - từ đó bạn có thể xem những file nào sẽ được sao chép vào hệ thống của bạn.
Tôi vừa điều tra bản thân mình trong khi biên dịch phiên bản QEMU tùy chỉnh. Tôi đã sử dụng các phương pháp sau đây để tìm ra những gì đã được cài đặt và nơi (cũng như sử dụng nó như là một cơ sở cho một tập tin .deb):
mkdir /tmp/installer
./configure --target-list=i386-softmmu
make
sudo make install DESTDIR=/tmp/installer
cd /tmp/installer
tree .
Tree là một tiện ích mà đệ quy sẽ hiển thị các nội dung của một thư mục trong một cách hấp dẫn trực quan - sudo apt-get install tree
dành cho người dùng Debian/Ubuntu
Hy vọng rằng sẽ giúp ai đó ... tôi mất một chút để giải quyết vấn đề, nhưng tôi thấy đây là cách hữu ích để hình dung những gì đang diễn ra .
Nếu chương trình bạn đang sử dụng không hỗ trợ DESTDIR hoặc --prefix (hoặc tương đương) cài đặt, tôi đã phát hiện ra rằng nó có thể có thể để xác định tập tin mới như sau:
- Bắt đầu với làm sạch hệ thống càng tốt (một hình ảnh VM mới là thích hợp hơn)
- Biên dịch phần mềm, đợi một vài phút.
- Cài đặt gói phần mềm.
- Tìm tệp được sửa đổi trong 5 phút qua:
sudo find/-mmin -5 -type f
(lệnh tìm có nhiều thông số cho truy vấn dựa trên sửa đổi tệp/lần tạo, nhưng điều này làm việc khá tốt đối với tôi, bạn chỉ cần thu hẹp khoảng thời gian sao cho bạn chọn các tập tin được tạo bởi trình cài đặt nhưng không có gì khác).
make uninstall
có thể hiển thị các tệp khi nó xóa chúng nếu tác giả của hướng dẫn biên dịch cung cấp thông tin để cho phép gỡ cài đặt (đã một thời gian kể từ khi tôi làm như vậy để tôi không thể chắc chắn).
Cũng make -n install
sẽ thực hiện "khô ru n" của quá trình cài đặt và có thể hợp lý để trích xuất thông tin từ kết quả của nó.
- 1. `make install` với CMake + SWIG + Python
- 2. Sự khác biệt về chi tiết giữa "make install" và "make altinstall"
- 3. Đã hủy một bản sao git, các tệp được tải xuống ở đâu?
- 4. So sánh 2 tệp văn bản: thay đổi được thực hiện ở đâu và ở đâu?
- 5. Tệp được gắn ở đâu?
- 6. Lucene.Net.Highlight đã biến mất ở đâu?
- 7. Node.js đặt các tệp của nó ở đâu?
- 8. Lưu trữ Smalltalk đã mất ở đâu?
- 9. tệp JSTL .tld ở đâu?
- 10. Bản ghi TPath ở đâu từ System.IOUtils được khởi tạo?
- 11. Log4net sẽ tạo tệp nhật ký này ở đâu?
- 12. Java tìm tệp ở đâu?
- 13. PyBrain: Khi tạo mạng từ mặt đất lên, bạn tạo thiên vị ở đâu và ở đâu?
- 14. Tôi có thể tìm tệp my.cnf hoặc my.ini ở đâu?
- 15. Làm thế nào và ở đâu py.test tìm đồ đạc
- 16. Npm tìm kiếm tệp package.json ở đâu?
- 17. Cách cấu hình qmake để ứng dụng của tôi được cài đặt với "make install"?
- 18. TFS 2008/TFS 2010 lưu trữ các thay đổi ở đâu và ở đâu?
- 19. Nhập Bảng trong tệp ELF ở đâu?
- 20. fpcmake và Makefile.fpc, tôi có thể đào tạo ở đâu?
- 21. Tệp jar JDBC MySQL ở đâu trong Ubuntu?
- 22. Emacs: Đặt tệp psvn.el ở đâu?
- 23. Tệp kết xuất MySQL ở đâu?
- 24. Tệp cấu hình véc ni ở đâu?
- 25. Job.setOutputKeyClass và job.setOutputReduceClass ở đâu?
- 26. Bản sao CMake nếu tệp gốc đã thay đổi
- 27. Mặc định, Apache cài đặt httpd.conf ở đâu?
- 28. Làm cách nào để khởi động lại mysql và tệp my.cnf ở đâu
- 29. Git lưu trữ tệp ở đâu?
- 30. Tệp nhật ký nodejs ở đâu?
ls -R (cùng với bất kỳ tùy chọn định dạng nào khác bạn muốn) và tùy chọn -printf để tìm GNU cũng có liên quan để trả lời câu hỏi "có gì trong thư mục này". – dannysauer