Làm thế nào để gỡ cài đặt git được cài đặt từ nguồn? [đóng cửa]


21

Tôi đã cài đặt git bằng bài viết này . Bây giờ tôi muốn gỡ cài đặt git. Làm thế nào để làm nó?


1
Bạn vẫn có mã nguồn mà bạn đã tải xuống và đã làm make installvới?
Hennes

Có, tôi có mã nguồn
Mikhail

Đầu ra của 'làm cho gỡ cài đặt' là gì? Không phải tất cả các Makefiles đều có tùy chọn này, nhưng nhiều người làm được.
Hennes

1
thực hiện: *** Không có quy tắc để thực hiện mục tiêu 'gỡ cài đặt'. Dừng lại.
Mikhail

1
tại sao -1? giải thích
Mikhail

Câu trả lời:


15

Tôi tìm thấy giải pháp ở đây .

CẬP NHẬT 2.11.2012

Nếu bạn đủ thông minh và sử dụng một số tiền tố không chuẩn khi được định cấu hình Git để nó được cài đặt theo một cấu trúc phân cấp cụ thể, như dưới / opt / git, thì chỉ cần xóa phân cấp đó, theo cách đệ quy.

Nếu không, sau đó bạn có thể đi như thế này:

1) Lấy tarball nguồn chính xác của phiên bản bạn đã xây dựng và cài đặt, giải nén.

2) Định cấu hình chính xác như bạn đã làm với cài đặt gốc liên quan đến vị trí cài đặt (tiền tố, tiền tố exec, v.v.); được cho là bạn không nên ghi đè lên bất cứ điều gì.

3) Tạo một thư mục tạm thời để thực hiện cài đặt, như thế này: $ mkdir / var / tmp / git

4) Cài đặt Git chuyển một biến DESTDIR thích hợp để thực hiện: $ make DESTDIR = / var / tmp / git install Cấu trúc phân cấp Git sẽ được tạo trong thư mục tạm thời đó.

5) Sử dụng cấu trúc phân cấp đã tạo để quyết định xóa các tệp nào theo cấu trúc phân cấp thực ("/" chính nó).

Bước cuối cùng là nơi "phép thuật" xảy ra để nó có thêm lời giải thích. Chẳng hạn, bạn có thể chạy

$ find /var/tmp/git -type f -printf '/%P\n' | xargs -n 10 rm -f

(với quyền root) xóa các tệp được cài đặt bởi cài đặt sai đầu tiên vào hệ thống tệp gốc. Mã hóa ở trên sử dụng phân cấp / var / tmp / git để in danh sách các tệp được tìm thấy, nhưng nó thay thế tiền tố "/ var / tmp / git" trong chúng bằng "/", sao cho "/ var / tmp / git / usr / bin / git "trong đầu ra sẽ được liệt kê là" / usr / bin / git ". Sau đó danh sách này được đường ống để xargschạy rm trên tên file nó đọc trong gói mười (chỉ để giảm số lượng các lời gọi của rmngười một theo độ).

Sau khi xử lý tập tin, hãy chạy

$ find /var/tmp/git -type d -printf '/%P\n'

để kiểm tra danh sách các thư mục được cài đặt. Chúng yêu cầu cách tiếp cận thủ công, vì vậy chỉ cần nhìn vào danh sách được tạo và nghĩ xem chúng có thể an toàn rmdirtrong hệ thống của bạn (đây sẽ là các thư mục như "/ usr / libexec / git" hoặc đại loại như thế này; bạn có thể không muốn xóa "/ usr / share / man / mann" hoặc thứ gì đó ngay cả khi nó trống).

PS Trong tương lai không bao giờ cài đặt bất cứ thứ gì vào hệ thống bằng cách chạy make install! Hầu hết các makefiles ngày nay không hỗ trợ mục tiêu "gỡ cài đặt" vì chúng được sử dụng để cài đặt vào một vị trí cào riêng để thử nghiệm hoặc để tạo một gói (.rpm, .deb, v.v.) và sau đó trình quản lý gói sẽ chăm sóc dọn dẹp. Nếu bạn cần cài đặt một cái gì đó, hãy thử tìm một gói chính thức hoặc cố gắng nhập một gói chính thức khác từ phiên bản mới hơn của HĐH của bạn, nếu có. Như là phương sách cuối cùng, hãy thử sử dụng checkinstallcông cụ cố gắng tạo gói nhị phân ra khỏi hoạt động của bạn make install. Điều này hút, nhưng vẫn tốt hơn so với trần make install.


Vui lòng mở rộng một số chi tiết được tìm thấy ở đó. Thối bit xảy ra, và khi đó câu trả lời này trở nên vô dụng.
sysadmin1138

ok, tôi đã cập nhật câu trả lời của mình
Mikhail

Sự tôn trọng. nó hoạt động
dotlash

Tóm tắt : ./configure. sudo make && sudo make DESTDIR=/var/tmp/git install. sudo find /var/tmp/git -type f -printf '/%P\n' | sudo xargs -n 10 rm -f
Vahid

3

Tôi vừa mới đi qua 2691 dòng Makefile. Quả thực không gỡ cài đặt. Drat.

Trong trường hợp đó, một cách giải quyết có thể là sử dụng make rpmtùy chọn. Cài đặt vòng / phút (ghi đè tất cả các tệp đã cài đặt, trùng với các tệp đã được cài đặt). Sau đó khử cài đặt vòng / phút.

Trong tất cả các trường hợp trong tương lai, hãy xây dựng một gói (RPM, yum, bất cứ điều gì). Nó làm cho bảo trì dễ dàng hơn nhiều.


1
Ngoại trừ thường make installđặt công cụ vào tiền tố /usr/localtrong khi vòng / phút / gói của bạn ở đây chạy ./configurevới các tham số khác nhau để các tệp mà chúng cài đặt kết thúc bằng tiền tố /usr.
ptman

Tôi là người mới trong CentOS. Tôi nên chạy lệnh nào? Bạn có thể giải thích thêm được không, làm ơn
Mikhail

Tôi chạy make rpmlệnh. Tôi nên làm gì tiếp theo?
Mikhail

Bắt đầu với man rpmhoặc 'rpm --help. Nó có thể sẽ cho bạn sử dụng rpm -i packagename.rpm. Tuy nhiên, tốt nhất là yêu cầu sysadmin tại ô web giúp bạn. Chỉ có rất nhiều chúng ta có thể làm từ xa.
Hennes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.