มีเครื่องมือในแพ็คเกจ Cygwin ที่คล้ายกับapt-get
บน Debian หรือyum
redhat ที่ให้ฉันติดตั้งส่วนประกอบจากบรรทัดคำสั่งหรือไม่
มีเครื่องมือในแพ็คเกจ Cygwin ที่คล้ายกับapt-get
บน Debian หรือyum
redhat ที่ให้ฉันติดตั้งส่วนประกอบจากบรรทัดคำสั่งหรือไม่
คำตอบ:
ไม่มีเครื่องมือเฉพาะในตัวติดตั้ง 'setup.exe' ซึ่งมีฟังก์ชันการทำงานของ apt-get อย่างไรก็ตามมีตัวติดตั้งแพคเกจบรรทัดคำสั่งสำหรับ Cygwin ที่สามารถดาวน์โหลดแยกต่างหากได้ แต่มันก็ไม่ได้เสถียรอย่างสิ้นเชิงและต้องอาศัยวิธีแก้ปัญหา
apt-cyg: http://github.com/transcode-open/apt-cyg
ตรวจสอบแท็บปัญหาสำหรับโครงการเพื่อดูปัญหาที่ทราบ
setup-x86.exe -q -P packagename1,packagename2
. ไม่แฟนซีapt-get
หรือแม้กระทั่งapt-cyg
แต่มันหลอกลวงในกรณีส่วนใหญ่ และคุณยังสามารถเรียกใช้จากcmd.exe
(หลังจากปิด Cygwin)
การตั้งค่าของ Cygwin ยอมรับอาร์กิวเมนต์บรรทัดคำสั่งเพื่อติดตั้งแพ็กเกจจากบรรทัดคำสั่ง
เช่นsetup-x86.exe -q -P packagename1,packagename2
เพื่อติดตั้งแพ็คเกจโดยไม่ต้องมีการโต้ตอบกับ GUI ('โหมดการตั้งค่าแบบอัตโนมัติ')
(โปรดทราบว่าคุณจำเป็นต้องใช้setup-x86.exe
หรือsetup-x86_64.exe
ตามความเหมาะสม)
ดูhttp://cygwin.com/packages/สำหรับรายการแพ็คเกจ
setup-x86_64 --packages="openssh,python"
เพื่อความสะดวกในการติดตั้งคุณอาจต้องการใช้
apt-cyg
เป็นผู้จัดการแพคเกจของคุณ มันคล้ายกับไวยากรณ์
apt-get
ซึ่งเป็นบวก สำหรับสิ่งนี้ทำตามขั้นตอนข้างต้นแล้วใช้ Cygwin Bash สำหรับขั้นตอนต่อไปนี้
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
ตอนนี้apt-cyg
ติดตั้งแล้ว นี่คือตัวอย่างของการติดตั้งแพคเกจบางอย่าง
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget
แล้วก็ดาวน์โหลดได้apt-cyg
โดยไม่มีปัญหา 404 ปรากฏที่จุดใด
มีสคริปต์บางอย่างอยู่ซึ่งสามารถใช้เป็นตัวจัดการแพคเกจอย่างง่ายสำหรับ Cygwin แต่สิ่งสำคัญคือต้องรู้ว่าพวกเขาจะค่อนข้างจำกัดเสมอเสมอเพราะ ... ehm ... Windows
การติดตั้งหรือลบแพคเกจนั้นทำได้โดยผู้จัดการแพคเกจสำหรับ Cygwin สามารถทำได้ แต่การอัพเดทเป็นความเจ็บปวดเนื่องจาก Windows ไม่อนุญาตให้คุณเขียนทับไฟล์ปฏิบัติการที่กำลังทำงานอยู่ ดังนั้นคุณจึงไม่สามารถอัปเดตเช่น Cygwin DLL หรือแพ็คเกจใด ๆ ที่มีไฟล์ปฏิบัติการที่กำลังเรียกใช้จาก Cygwin อยู่ในขณะนี้ นอกจากนี้ยังมีหมายเหตุนี้ในหน้าการติดตั้ง Cygwin :
"เหตุผลพื้นฐานสำหรับการไม่มีตัวจัดการแพคเกจเต็มรูปแบบมากขึ้นก็คือโปรแกรมดังกล่าวต้องการการเข้าถึงฟังก์ชัน POSIX ทั้งหมดของ Cygwin อย่างเต็มที่อย่างไรก็ตามยากที่จะให้ในสภาพแวดล้อมที่ปราศจาก Cygwin เช่นมีอยู่ก่อน การติดตั้งนอกจากนี้ Windows ไม่อนุญาตให้เขียนทับแฟ้มปฏิบัติการที่ใช้งานอยู่ได้อย่างง่ายดายดังนั้นการติดตั้ง Cygwin DLL รุ่นใหม่ในขณะที่ตัวจัดการแพคเกจกำลังใช้ DLL นั้นเป็นปัญหา "
การติดตั้ง Cygwin ของใช้รีจิสทรีของ Windows เพื่อ executables ทับที่อยู่ในการใช้งานและวิธีการนี้ต้องรีบูตวินโดวส์ ดังนั้นจึงเป็นการดีกว่าที่จะปิดกระบวนการ Cygwin ทั้งหมดก่อนที่จะอัปเดตแพคเกจดังนั้นคุณไม่ต้องรีบูตเครื่องคอมพิวเตอร์ของคุณเพื่อใช้การเปลี่ยนแปลงจริง การติดตั้งแพ็คเกจใหม่ควรสมบูรณ์โดยไม่ต้องยุ่งยาก ฉันไม่คิดว่าผู้จัดการแพคเกจใด ๆ ยกเว้น Cygwin จะsetup.exe
ใช้วิธีการใด ๆ ในการเขียนทับไฟล์ที่ใช้งานดังนั้นมันจะล้มเหลวหากไม่สามารถเขียนทับไฟล์เหล่านั้นได้
อัปเดต : พื้นที่เก็บข้อมูลถูกปิดใช้งานเนื่องจากปัญหาลิขสิทธิ์ ( การลบเนื้อหา DMCA ) มันดูเหมือนว่าเจ้าของพื้นที่เก็บข้อมูลที่ออกจับกุม DMCA บนของตัวเองที่เก็บและสร้างโครงการใหม่ที่เรียกว่าSage (ดูร้อง)
หนึ่งที่ดีที่สุดสำหรับฉัน เพียงเพราะมันเป็นหนึ่งในล่าสุด มันไม่ได้ใช้ Cygwin setup.exe
แต่จะนำไปใช้setup.exe
ใหม่ มันทำงานได้อย่างถูกต้องสำหรับทั้งสองแพลตฟอร์ม - x86เช่นเดียวกับx86_64 มีส้อมจำนวนมากที่มีคุณสมบัติเพิ่มเติมไม่มากก็น้อย ตัวอย่างเช่นตัวแยก kou1okadaเป็นหนึ่งในรุ่นที่ปรับปรุงแล้วซึ่งยอดเยี่ยมมาก
apt-cygเป็นเพียงเชลล์สคริปต์ไม่มีการติดตั้ง เพียงดาวน์โหลด (หรือคัดลอกพื้นที่เก็บข้อมูล) ทำให้เป็นไฟล์ปฏิบัติการและคัดลอกไฟล์ไปที่ PATH:
chmod +x apt-cyg # set executable bit
mv apt-cyg /usr/local/bin # move somewhere to PATH
# ...and use it:
apt-cyg install vim
นอกจากนี้ยังมีส้อมที่มีคุณสมบัติแตกต่างกัน
ตัวจัดการแพคเกจอื่นนำมาใช้เป็นเชลล์สคริปต์ ฉันไม่ได้ลอง แต่ดูดีจริง ๆ
มันสามารถค้นหาแพคเกจในพื้นที่เก็บข้อมูลรายการแพคเกจในหมวดหมู่ตรวจสอบการอ้างอิงไฟล์รายการแพคเกจและอื่น ๆ มันมีคุณสมบัติที่ผู้จัดการแพ็คเกจอื่นไม่มี
ส้อมของเดิมที่ถูกทิ้งร้าง CYG-ฉลาดด้วยการปรับปรุงและแก้ไขข้อผิดพลาด มีคุณสมบัติค่อนข้างมากและใช้งานใน Python make
การติดตั้งจะทำโดยใช้
หากคุณใช้ Chocolatey เพื่อติดตั้ง Cygwin คุณสามารถติดตั้งแพคเกจcyg-getซึ่งอันที่จริงแล้วเป็น wrapper ง่าย ๆ ของ Cygwin ที่setup.exe
เขียนใน PowerShell
นอกจากนี้ยังมีโหมดบรรทัดคำสั่ง นอกจากนี้ยังช่วยให้คุณสามารถอัพเกรดแพ็คเกจที่ติดตั้งทั้งหมดในครั้งเดียว (เช่นเดียวapt-get upgrade
กับ Debian based Linux)
ตัวอย่างการใช้:
setup-x86_64.exe -q --packages=bash,vim
คุณสามารถสร้างนามแฝงเพื่อให้ใช้งานง่ายขึ้นตัวอย่างเช่น:
alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"
จากนั้นคุณสามารถติดตั้งแพ็กเกจVimด้วย:
cyg-get vim
sage
เป็นทางเลือกapt-cyg
โดยผู้มีส่วนร่วมมากที่สุดในช่วงปีหรือสองปีที่ผ่านมา (Steven Penny) ปรากฏว่าเมื่อต้นปีที่ผ่านมาเขาไม่เห็นด้วยกับapt-cyg
ผู้เขียนต้นฉบับ(สตีเฟ่นจังเกล) และออกการจับกุม DMCA เมื่อเขาแยกโครงการ เนื่องจาก Jungels (aka Transcode) เป็นผู้เขียนต้นฉบับของโครงการด้วยเหตุผลจริง GitHub จึงเรียกคืนโครงการเดิมหลังจากนั้นไม่นาน ปัจจุบันทั้งสองโครงการมีให้บริการ - แม้ว่าโครงการดั้งเดิมจะไม่มีการอัปเดตโค้ดใหม่ตั้งแต่การแยก มันเป็นสถานการณ์ที่ยุ่งเหยิงจริงๆ
ก่อนอื่นให้ดาวน์โหลดตัวติดตั้งที่: https://cygwin.com/setup-x86_64.exe (Windows 64 บิต) จากนั้น:
# move installer to cygwin folder
mv C:/Users/<you>/Downloads/setup-x86_64.exe C:/cygwin64/
# add alias to bash_aliases
echo "alias cygwin='C:/cygwin64/setup-x86_64.exe -q -P'" >> ~/.bash_aliases
source ~/.bash_aliases
# add bash_aliases to bashrc if missing
echo "source ~/.bash_aliases" >> ~/.profile
เช่น
# install vim
cygwin vim
# see other options
cygwin --help
ฉันต้องการทางออกสำหรับสิ่งนี้คล้ายกันapt-get --print-uris
แต่น่าเสียดายที่ apt-cyg ไม่ได้ทำเช่นนี้ ต่อไปนี้เป็นวิธีแก้ปัญหาที่อนุญาตให้ฉันดาวน์โหลดเฉพาะแพ็คเกจที่ฉันต้องการด้วยการอ้างอิงและคัดลอกไปยังเป้าหมายสำหรับการติดตั้ง นี่คือสคริปต์ทุบตีที่แยกวิเคราะห์ผลลัพธ์ของapt-cyg
ลงในรายการของ URIs:
#!/usr/bin/bash
package=$1
depends=$( \
apt-cyg depends $package \
| perl -ne 'while ($x = /> ([^>\s]+)/g) { print "$1\n"; }' \
| sort \
| uniq)
depends=$(echo -e "$depends\n$package")
for curpkg in $depends; do
if ! grep -q "^$curpkg " /etc/setup/installed.db; then
apt-cyg show $curpkg \
| perl -ne '
if ($x = /install: ([^\s]+)/) {
print "$1\n";
}
if (/\[prev\]/) {
exit;
}'
fi
done
ด้านบนจะพิมพ์เส้นทางของแพ็คเกจที่ต้องการดาวน์โหลดโดยสัมพันธ์กับรูทกระจก cygwin โดยไม่ข้ามแพ็คเกจใด ๆ ที่ติดตั้งไว้แล้ว ในการดาวน์โหลดพวกเขาฉันเขียนผลลัพธ์ไปยังไฟล์cygwin-packages-list
แล้วใช้ wget:
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
จากนั้นตัวติดตั้งสามารถใช้เพื่อติดตั้งจากไดเรกทอรีแคชโลคัล โปรดทราบว่าเพื่อให้ทำงานได้ฉันต้องคัดลอกsetup.ini
จากแพคเกจ cygwin ก่อนหน้าไปยังไดเรกทอรีที่มีไฟล์ที่ดาวน์โหลด (มิฉะนั้นโปรแกรมติดตั้งไม่ทราบว่ามีอะไร)
คำถามเก่า แต่ก็ยังมีความเกี่ยวข้อง นี่คือสิ่งที่ใช้ได้กับฉันในวันนี้ (6/26/16)
จากเปลือกทุบตี:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
wget
หรือcurl
อาจเป็นเครื่องมือที่ดีกว่าสำหรับสิ่งนี้ (และโดยส่วนตัวฉันจะติดตั้งในไดเรกทอรีอื่น ๆ ในของฉัน$PATH
มากกว่าสิ่งต่อไป/bin
นี้)
คำตอบของ Dawid Ferenczy ค่อนข้างสมบูรณ์ แต่หลังจากที่ฉันลองตัวเลือกของเขาเกือบทั้งหมดฉันได้พบว่าcyg-get ของ Chocolateyนั้นดีที่สุด
ฉันต้องการติดตั้งwget
ขั้นตอนคือ:
choco install cyg-get
แล้ว:
cyg-get wget
โดยปกติก่อนการติดตั้งแพคเกจหนึ่งจะต้องรู้ชื่อที่แน่นอน:
# define a string to search
export to_srch=perl
# get html output of search and pick only the cygwin package names
wget -qO- "https://cygwin.com/cgi-bin2/package-grep.cgi?grep=$to_srch&arch=x86_64" | \
perl -l -ne 'm!(.*?)<\/a>\s+\-(.*?)\:(.*?)<\/li>!;print $2'
# and install
# install multiple packages at once, note the
setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P "<<chosen_package_name>>"